我一直在尝试在 Win32 上应用钩子,ReadFile
以便我可以读取缓冲区和参数,但是我什至不确定输出是否正确,因为它与堆栈视图窗格和输入都不匹配。
如果有人可以确认我是否做得对,我将不胜感激。
由于我使用的调制解调器变砖了,因此我无法在 atm 中正确测试此代码。使用本地文件作为输入Readfile
给我在日志窗口中的垃圾输出。
脚本
// === break on load module ===
mov sApi, "ReadFile"
mov sDLL, "kernel32"
gpa sApi, sDLL
// store address
mov handle, $RESULT
log handle
cmp handle, 0
je abort
lbl_bp:
// run
go handle
mov adrRet, [esp]
mov hFile, [esp+4.]
mov InBuffer, [esp+8.]
mov nNumberOfBytesToRead, [esp+12.]
mov lpNumberOfBytesRead, [esp+16.]
mov lpOverlapped, [esp+20.]
log InBuffer
log hFile
log nNumberOfBytesToRead
log lpNumberOfBytesRead
log lpOverlapped
cmp InBuffer,0
je noIn
mov INN, [InBuffer], nNumberOfBytesToRead
log INN
jmp lbl_bp
noIn:
jmp lbl_bp
abort: