Debugging 反调试/反汇编资源

Debugging 反调试/反汇编资源,debugging,reverse-engineering,Debugging,Reverse Engineering,我想写一个反调试/反反反汇编程序,使它所保护的二进制文件在磁盘和内存(如cryptanium)中不受篡改。 这本书的最佳资源是什么?MacOSX/iOs最初,它可能被移植到Windows,android,后者 不管源语言是什么,通常认为在没有硬件手段的情况下保护可执行二进制文件不受逆向工程的影响是不可能的。您所能期望的最好方法是使用模糊处理程序,使反汇编代码难以手动进行逆向工程。这将阻止低预算黑客,但对公司级高预算黑客没有任何影响,他们拥有能够将模糊代码减少到最小执行路径的解模糊软件。充其量也只

我想写一个反调试/反反反汇编程序,使它所保护的二进制文件在磁盘和内存(如cryptanium)中不受篡改。
这本书的最佳资源是什么?MacOSX/iOs最初,它可能被移植到Windows,android,后者

不管源语言是什么,通常认为在没有硬件手段的情况下保护可执行二进制文件不受逆向工程的影响是不可能的。您所能期望的最好方法是使用模糊处理程序,使反汇编代码难以手动进行逆向工程。这将阻止低预算黑客,但对公司级高预算黑客没有任何影响,他们拥有能够将模糊代码减少到最小执行路径的解模糊软件。充其量也只能推迟逆向工程

然而,obfucators是保护低值代码的有效手段。如果您正在编写的代码不值得去混淆,那么很可能没有人会费心去尝试

编写一个好的混淆器需要从许多不同来源收集专业知识。有一个用于C模糊处理程序的方法。你可以从那里开始。请注意,大多数示例都不是一般的模糊处理程序,只是模糊处理源的示例。另见


有少量的商业产品,例如.NET。我认为,少量的商业产品证明了这项技术除了低价值代码之外是无效的

什么语言?这对于某些人来说是不可能的,例如C和JavaScript.C/Objective-C。。。在Windows Visual C++上,我更感兴趣的是防止具有远程调试功能的攻击者在运行受保护软件的计算机上的内核rootkit在内存中时无法干扰它或从中读取用户数据。@user1028028:问题是,如果你是root用户,你可以做任何事情。你应该考虑一个硬件解决方案,比如在一个设备上运行软件,并通过PCIe、USB或类似的接口将它与主机连接。是的:但是我认为反调试会阻止远程攻击者以秘密的方式从应用程序获得某些信息。因此,如果他尝试,应用程序将崩溃或变得无响应,并提醒用户有人闯入。与DRM相比,它更像是一种辅助数据保护机制。即使是作为一个DRM,我也希望让攻击者在成功之前花上相当多的时间尝试这些东西。我确实意识到,只要有足够的时间,任何反调试都可以被击败。@user1028028:如果你的软件或数据是有价值的,例如信用卡或勒索信息,那么就有足够的动机进行有效的攻击。对于rootkit,没有什么可以做的。它可以复制内存中或页面缓存中的任何页面,并单独检查。问题是它无法很容易地确定页面,并且会使应用程序高度无响应。