Edd*_*die 25 assembly terminology definition self-modifying codecave
我在StackOverflow问题中第一次遇到这个词" C#理论:将一个JMP写入asm中的编解码器 ".根据维基词典,我看到一个代码洞穴是:
一个未使用的内存块,有人(通常是软件破解者)可以使用它来注入自定义编程代码来修改程序的行为.
我找到了正确的定义吗?如果是这样,代码洞穴是否有合法用途?
Rob*_*edy 12
我已经用过了它们,虽然直到今天我都没有听到过代号洞穴这个词.维基词典定义表明,代码洞穴是破解者在他或她试图破解的可执行文件中发现的东西.你引用的问题不是那样使用它.相反,它建议分配代码洞穴VirtualAllocEx
以在目标进程中创建一个全新的内存块.这样就无需在目标中搜索未使用的空间,并且可以保证您有足够的空间放置所有新代码.
最终,我认为"代码洞穴"只是存储运行时生成代码的地方.该代码不必有任何邪恶的目的.在这一点上,代码洞穴的问题变得完全无趣.有趣的部分是在运行时生成代码的原因,以及确保新代码在您需要时运行的技术.
一些合法用途:在没有重启的情况下修补实时操作系统二进制文件(MS执行此操作),为防火墙和防病毒程序挂钩低级操作系统功能(文件系统,网络),在没有源代码时扩展应用程序(如刮取低级操作系统调用)到DrawText所以你可以为盲人大声朗读它们)