jmp,call 指令如何翻译成字节
永夜星空 2011-04-10 08:50:40 我想把某个程序的某个函数转到自己的处理过程里,处理完毕后在跳回到原来的函数里。那么就得把原本函数的开头位置修改成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
百思不得其解啊。哪位高手指点一下吧