有没有修改汇编指令含义的方法,比如修改0x55的含义为0XCC
最近调试程序遇到一个问题,极其猥琐,检测了各种断点,不好解决,忽然想到一个问题:CPU是如何执行汇编指令的?
为什么0x55要对应 push ebp?
为什么0x33C0 要对应 xor eax,eax?
那么有没有一种可能性,让我们可以修改机器码的含义
把原本0x55(push ebp)的机器码含义修改成0xcc(int3),这样就可以在避免修改主模块的情况下设置断点了。
带着这个问题,各种搜啊,似乎没有人研究过这个问题,所以把问题抛到这来了,欢迎大家讨论undefined https://wiki.osdev.org/X86-64_Instruction_Encoding LZ自己去发明个CPU就可以了,呵呵。 用EPT,读一套执行一套。
页:
[1]