帝爵 发表于 2019-7-21 08:30:27

HOOK代码的疑问

源代码在图上
疑问的是
Data = 指针到字节集 (参数_原地址, 5) + { 233, 0, 0, 0, 0 }
pData = lstrcpyn (Data, Data, 0)
写到内存 (到整数 (参数_原地址 - pData - 5), pData + 6, 4)
这三句代码是啥意思,data是啥,取pdata的指针又是为啥?写到内存就更不懂了,第一个参数我理解为jmp跳转的偏移计算,那么pdata+6是啥意思?4又是啥。

希望有大牛解惑。

帝爵 发表于 2019-7-21 08:34:21

图看不清这有代码由于手机复制粘贴所以代码层次不分明望理解

Hook        整数型               只支持5字节HOOK
参数名        类 型        参考        可空        数组        备 注
参数_原地址        整数型                               
参数_新地址        整数型                                为空 卸载HOOK
变量名        类 型        静态        数组        备 注
pData        整数型                        -4
Data        字节集                      
dwOldProtect        整数型                      
如果真 (是否为空 (参数_新地址))
VirtualProtect (参数_原地址, 5, 64, dwOldProtect)
写到内存 (Data, 参数_原地址, 5)
VirtualProtect (参数_原地址, 5, dwOldProtect, dwOldProtect)
返回 (1)

Data = 指针到字节集 (参数_原地址, 5) + { 233, 0, 0, 0, 0 }
pData = lstrcpyn (Data, Data, 0)
写到内存 (到整数 (参数_原地址 - pData - 5), pData + 6, 4)
VirtualProtect (参数_原地址, 5, 64, dwOldProtect)
写到内存 ({ 233 } + 到字节集 (到整数 (参数_新地址 - 参数_原地址 - 5)), 参数_原地址, 5)
VirtualProtect (参数_原地址, 5, dwOldProtect, dwOldProtect)
返回 (pData)
DLL命令名        返回值类型        公开        备 注
VirtualProtect        整数型              
DLL库文件名:
kernel32.dll
在DLL库中对应命令名:
VirtualProtect
参数名        类 型        传址        数组        备 注
lpAddress        整数型                       
dwSize        整数型                       
flNewProtect        整数型                       
lpf撸啊撸dProtect        整数型                       
DLL命令名        返回值类型        公开        备 注
lstrcpyn        整数型              
DLL库文件名:
kernel32.dll
在DLL库中对应命令名:
lstrcpynA
参数名        类 型        传址        数组        备 注
lpString1        字节集                       
lpString2        字节集                       
iMaxLength        整数型                       

Judge_ 发表于 2019-7-21 08:58:53

建议看基础课。。?

2074124327 发表于 2019-7-21 13:28:30

jghfdjfghkjfghkfjkj
页: [1]
查看完整版本: HOOK代码的疑问