就像如果我想在PE中修补功能。代码链接到那里,但是有更好的方法吗?

我不知道,也许有一些方法可以将二进制文件导出到ASM文件,然后我可以用GCC进行编译。

因为我想对二进制文件进行大的更改-我正在考虑并行化部分代码。谢谢。

#1 楼

在我看来,如果计划中的更改相当可观,最好的方法就是创建一个DLL(您似乎正在讨论Windows,尽管这在大多数环境中都可以使用)。

然后您只需要将调用打补丁到修改后的功能或新功能。通过首先编辑导入表或通过使用LoadLibrary动态加载DLL和使用GetProcAddress函数来进行加载。

评论


但是,如何从DLL的原始二进制文件中引用变量和函数呢?

–rec
17年6月12日在19:41

仅在秘密部分内使用的变量应存储在DLL中,要共享的变量应通过某种简单的API作为函数参数传递。如果创建这样的API使过程复杂化,我强烈建议打包整个可执行文件。

– NirIzr
17年6月13日在4:23

#2 楼

将文件导出到ASM然后重新编译会花费很长时间,非常复杂,只有在拥有一个不错的活动智能组的情况下才应该执行此操作。相信我,我已经做到了。我们将程序反向工程为可编译的源代码。这个项目花了太长时间。

如果您所做的更改很小,我建议您进行代码转换。只需创建一个PE部分,跳到该部分并进行更改,然后跳回去即可。关于如何扩展PE二进制文件的教程

我之前在大型项目中已经做到了。通常,一种很好的清洁方法是使用DLL注入。我将发布一些示例以及一个YouTube系列视频,其中详细介绍了如何执行操作。 Hacker Series Youtube
Open Security研究者

我会让您知道这些方法可能很危险,需要管理员特权才能注入该过程。