在IDA中,___stpcpy_chk,___strcpy_chk这样的函数是什么意思?

请教一下:
在IDA中,___stpcpy_chk,___strcpy_chk这样的函数怎么理解?如何Hook?
__la_symbol_ptr:0000000100ACCBB8 ___strcat_chk_ptr DCQ __imp____strcat_chk
__la_symbol_ptr:0000000100ACCBB8 ; DATA XREF: ___strcat_chk↑o
__la_symbol_ptr:0000000100ACCBB8 ; ___strcat_chk+4↑r
__la_symbol_ptr:0000000100ACCBC0 ___strcpy_chk_ptr DCQ __imp____strcpy_chk
__la_symbol_ptr:0000000100ACCBC0 ; DATA XREF: ___strcpy_chk↑o
__la_symbol_ptr:0000000100ACCBC0 ; ___strcpy_chk+4↑r
__la_symbol_ptr:0000000100ACCBC8 ___strncpy_chk_ptr DCQ __imp____strncpy_chk
__la_symbol_ptr:0000000100ACCBC8 ; DATA XREF: ___strncpy_chk↑o
__la_symbol_ptr:0000000100ACCBC8 ; ___strncpy_chk+4↑r

虽然没搞清楚这样的函数的意义,但是hook的时候没有障碍:
用fishhook去hook __strncpy_chk函数名即可。

编译器插入的一些用于安全检查的函数

在使用strncpy函数时,xcode编译的过程中会替换成__strncpy_chk,
增加安全监测,__strncpy_chk 多了一个参数,是dest数组的长度。