jmp,call 指令如何翻译成字节
我想把某个程序的某个函数转到自己的处理过程里,处理完毕后在跳回到原来的函数里。那么就得把原本函数的开头位置修改成jmp xxxxxxxx,或者call xxxxxxxx。 xxxxxx就是自己的处理过程的地址。
自己写的处理过程位置是用VirtualAllocEx在目标进程里申请的,地址并不是每次都一样,所以在修改跳转指令的时候就必须要跟着变,那么对于关键的跳转指令要写成什么字节内容呢?
在OD里研究了好久,始终没有发现远跳的jmp,与call翻译的规律。
甚至对于同一个jmp出现在不同位置就会被翻译成不同的字节,如:
7C8293A6 E9 556C7D83 jmp 00000000
jmp 0 出现在地址 7C8293A6 时是 E9 556C7D83
7C8293FD E9 FE6B7D83 jmp 00000000
jmp 0 出现在地址 7C8293FD 时是 E9 FE6B7D83
百思不得其解啊。哪位高手指点一下吧
自己写的处理过程位置是用VirtualAllocEx在目标进程里申请的,地址并不是每次都一样,所以在修改跳转指令的时候就必须要跟着变,那么对于关键的跳转指令要写成什么字节内容呢?
在OD里研究了好久,始终没有发现远跳的jmp,与call翻译的规律。
甚至对于同一个jmp出现在不同位置就会被翻译成不同的字节,如:
7C8293A6 E9 556C7D83 jmp 00000000
jmp 0 出现在地址 7C8293A6 时是 E9 556C7D83
7C8293FD E9 FE6B7D83 jmp 00000000
jmp 0 出现在地址 7C8293FD 时是 E9 FE6B7D83
百思不得其解啊。哪位高手指点一下吧
...全文
相关推荐
汇编语言各种常见指令大全
控制转移指令控制转移指令用于控制程序的执行流程。格式为JMP Label、LOOP Label、CALL Label、RET等。注意:控制转移指令可以改变程序的执行流程。
GNU as汇编器手册英文版
汇编语言语法包括:* 数据类型:byte、word、dword、qword等* 指令格式:MOV、ADD、SUB、JMP等* 地址mode:立即数、寄存器、内存地址等* 控制流:JMP、CALL、RET
51单片机汇编——机器码
六、控制流51单片机汇编语言中的控制流指令可以控制程序的执行流程,包括无条件跳转、条件跳转和子程序调用等。这些指令可以使用JMP、JNZ、CALL和RET等指令来实现。
模拟器与汇编程序设计.doc
- **出栈指令(POP)**:从堆栈中取出数据到指定寄存器,用于恢复保存的数据。- **取字节数据指令(LOADB)**:从内存中的字节数据块加载数据到寄存器,常用于变量或数组的访问。
正确区分LJMP、AJMP、SJMP、JMP指令
变址寻址转移指令(JMP @A+DPTR)变址寻址转移指令是一条单字节双周期无条件转移指令,可以在256个存储器单元内转移。


