能力值:
( LV2,RANK:10 )
|
-
-
2 楼
8BFF mov edi,edi
55 push ebp
8BEC mov ebp,esp
E9 jmp xxxxxxxx 这里需要计算
|
能力值:
( LV9,RANK:190 )
|
-
-
3 楼
需要E9 jmp xxxxxxxx的地址!
比如:
虚拟地址 机器码 汇编指令
0x00000000 8BFF mov edi,edi
0x00000002 55 push ebp
0x00000003 8BEC mov ebp,esp
0x00000005 E949b29477 jmp xxxxxxxx 这里需要计算
那么xxxxxxxx的值是:0x00000005(虚拟地址)+5(机器码:E949b29477用了5字节,所以加5。计算到这里就是获取jmp指令的下一个指令的虚拟地址)+0x7794b249(虚拟地址0x00000006的一个4字节数据,c语言可以这样获取:*(int*)0x00000006)
其实xxxxxxxx的值是:jmp xxxxxxxx 指令完成地址结束地址到将要跳转的地址的偏移量!只要理解:jmp xxxxxxxx 里的xxxxxxxx是一个偏移量,然后理解这个偏移量是什么跟什么的偏移量,就可以了!
|
能力值:
( LV9,RANK:190 )
|
-
-
4 楼
也可以这样理解:
执行:mov edi,edi指令后:eip的值是:eip+2
执行:push ebp指令后:eip的值是:eip+1
执行:mov ebp,esp指令后:eip的值是:eip+2
执行:jmp xxxxxxxx 指令后:eip的值是:eip+xxxxxxxx+5
呵呵!我还是菜鸟,我是这样理解的,如果我的理解有错误的地方就请指教。
|
|
|