C++ PE头-新部分-如何计算内存中的OEP地址?
我刚刚成功地在Windows10中向pe文件(在本例中为my proxy.exe)添加了一个节和一些代码。我还将入口点更改为新部分的开头。当我运行修补过的.exe时,我的存根被调用,我听到一声高频的哔哔声(我先用哔哔声测试过),到目前为止还不错 但现在我想回到OEP。但是如何计算oep在内存中的地址? 我考虑过这个问题,然后想出了一个解决方案: 计算除我刚添加的部分之外的所有部分的Rsize,然后得到内存中存根的地址(增量偏移量),并从中减去总的部分大小。现在我应该在内存中.text部分的开头。之后,我添加oep的偏移量,就这样了 这样做有效吗?还是我犯了错误?还有其他可能更简单的方法吗?那么DLL呢,整个过程有什么不同吗?C++ PE头-新部分-如何计算内存中的OEP地址?,c++,header,stub,portable-executable,entry-point,C++,Header,Stub,Portable Executable,Entry Point,我刚刚成功地在Windows10中向pe文件(在本例中为my proxy.exe)添加了一个节和一些代码。我还将入口点更改为新部分的开头。当我运行修补过的.exe时,我的存根被调用,我听到一声高频的哔哔声(我先用哔哔声测试过),到目前为止还不错 但现在我想回到OEP。但是如何计算oep在内存中的地址? 我考虑过这个问题,然后想出了一个解决方案: 计算除我刚添加的部分之外的所有部分的Rsize,然后得到内存中存根的地址(增量偏移量),并从中减去总的部分大小。现在我应该在内存中.text部分的开头。
对于OEP,我想你意味着修复图像头。入口点的地址 好的,如果我得到的是正确的,那么您将使用IP->减去预期RVA(相关虚拟地址)的偏移量,以获得模块的加载地址,并将其添加到OEP的RVA以获得入口点的真实地址。 如果你算对了,这就行了 我没有评论特权,但我认为它应该作为评论而不是回答,因为我还没有完全尝试过这件事,但这是一个建议,类似于编译器对二进制文件所做的 OEP是一种RVA,在注射过程中,您有原始RVA和您已替代的注射RVA。在注入逻辑中,只需添加 偏移:推送原点
然后在PE的重定位表中为偏移添加重定位条目。装载机将完成其余的工作 什么操作系统?我的理解是,可执行文件的位置取决于O.S(如果有)。哦,我忘了说对不起——Windows10*编辑文章