在C++函数中,我有以下代码:
#if defined(WIN64)
const int offset = 0xd1;
#else
const int offset = 0x77;
#endif
unsigned char* p = &(((unsigned char*)pNetChannel)[offset+3]);这样,我就可以通过调用pNetChannel的非公共函数从结构(pNetChannel(在其他dll中初始化))中检索一个值(这里:IpAddress)。偏移量是从反汇编的DLL收集的(不是我收集的)。我的问题是,如何找到地址为"offset+3“的函数(反汇编动态链接库中的asm函数)。我想在asm代码中找到返回Ip的函数!我可以在哪个地址找到它?
发布于 2011-07-26 13:45:59
首先,我在代码中看不到任何实际的函数,所以我假设它是一个来自一个函数的例外。要在汇编中跟踪它的地址,您需要一个反汇编程序和调试器,如ollydbg或windbg。然后,您要么需要跟踪对它的调用(直接或间接,取决于您的进程模型),要么查找使函数唯一的东西,在本例中是(offset + 3) * sizeof(unsigned char)的值,它将用于查找ip。当你找到这个函数时,你需要从调试器告诉你的地址中减去它所在的dll的基加载地址,以获得你的RVA (相对虚拟地址),然后RVA +基加载地址就会给你虚拟化的地址,这将为dll的重新定位正确地调整它
https://stackoverflow.com/questions/6823072
复制相似问题