我有一个写入文件(数据库)的进程。在进程监视器中我看到了WriteFile。在此之后,我看到文件即将被写入或更新(偏移量:长度)。
如何使用 Ollydbg 显示此文件中即将写入或更新的内容?有教程或类似的吗?以及如何在 Ollydbg 上指定函数?
在进程监视器中,我看到了WriteFile,但是在 Ollydbg 中,它的功能是什么?
我有一个写入文件(数据库)的进程。在进程监视器中我看到了WriteFile。在此之后,我看到文件即将被写入或更新(偏移量:长度)。
如何使用 Ollydbg 显示此文件中即将写入或更新的内容?有教程或类似的吗?以及如何在 Ollydbg 上指定函数?
在进程监视器中,我看到了WriteFile,但是在 Ollydbg 中,它的功能是什么?
如果您需要教程,可以查看Woodmann或tuts4you。如果您想查看写入的内容,则必须知道相关函数的指针存储在哪里。
这与调用约定、cdecl 和 stdcall有很大关系,了解它们对此很重要。
我将尝试使用 writeFile 函数进行解释。
首先我们看一下 WriteFile 声明(取自MSDN)
BOOL WINAPI WriteFile(
_In_ HANDLE hFile,
_In_ LPCVOID lpBuffer,
_In_ DWORD nNumberOfBytesToWrite,
_Out_opt_ LPDWORD lpNumberOfBytesWritten,
_Inout_opt_ LPOVERLAPPED lpOverlapped
);
现在,当我们假设 Windows 有 stdcall(win32api 有)。我们可以找出在哪里可以找到变量。(有关 stdcall 的更多信息,请参阅Wikipedia)。
由于我们的维基百科文章,我们有几件事:
现在,我们拥有了确定在哪里可以找到所需信息的位置所需的一切。当在函数调用上放置断点时,您就会知道所有变量都存储在 stsck 上。LPCVOID 是一个指针,剩下的就是跟随它并读取数据。