Ollydbg| 与堆栈视图窗格相比,结果不一致

逆向工程 ollydbg 奥利文
2021-06-24 23:54:17

我一直在尝试在 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:
1个回答

有用 !。我只是使用了不同的 api 函数。但是不要在没有输入的情况下使用上述内容,因为这nNumberOfBytesToRead会导致 olly 分配未知大小的内存,因为变量尚未初始化,因此会崩溃。或者至少在使用之前初始化变量。