午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

【求助】DELPHI寫匯編中JMP的問題

 quasiceo 2013-12-14

DELPHI寫匯編中JMP的問題

各位大俠幫幫忙: 
我在用DELPHI弄一個程序的時候,需要把原地址處的代碼跳轉(zhuǎn)到我新寫入的代碼處,然后執(zhí)行完我寫的代碼再跳回原代碼的下一行. 
比如這樣 
原代碼: 
00427B9E      CMP EAX,0156EB4 
00427BA3      .................. 
 
我自己的代碼: 
procedure MYCODE; 
asm 
CMP EAX,$0156EB4 
JE $00427BA3 
MOV EAX,$0156EB4 
JMP $00427BA3 
end; 
 
上面的代碼插入后用OD查看也變成了下面的: 
01050000    3D 4E61BC00    cmp    eax, 0BC614E 
01050005    75 06          jnz    short 0105000D 
01050007    FF25 E45B4500  jmp    dword ptr [455BE4] 
0105000D    B8 4E61BC00    mov    eax, 0BC614E 
01050012    3D 4E61BC00    cmp    eax, 0BC614E 
01050017    FF25 E45B4500  jmp    dword ptr [455BE4] 
都跟預(yù)期要達到的效果不一樣  
 
首 先用VirtualAllocEx申請的內(nèi)存地址為01050000,設(shè)這個為addr1, 然后把我自己的程序MYCODE寫入到ADDR1開始的位置,
那么我在 0043251A那行就應(yīng)該寫成 JMP $01050000(或者是JMP ADDR1 ????  這里我不太清楚),
這樣原程序執(zhí)行到43251A的時候就會跳到我自己的代碼部分,運行完后再跳回0043251A的下一行 
 
但如果我在DELPHI里寫 
asm 
jmp $01050000 {我想知道這里應(yīng)該怎么寫,是寫成jmp addr1呢還是什么} 
end 
 
上面的代碼寫入后就會變成了 
00427B9E      FF25 E05B457D jmp    dword ptr [7D455BE0] 
這樣的,為什么會這樣呢? 
 
 
還有就是,如果在我的代碼里要跳回00427BA3,那在DELPHI的內(nèi)聯(lián)匯編應(yīng)該怎么寫呢?JMP后面是一個指針還是什么呢? 
 
麻煩高手幫忙解答一下


方法一 
mov eax, $00427BA3 
JMP eax 
 
方法二 
push $00427BA3 
retn 
 
 
 
直接JMP是相對跳轉(zhuǎn),要計算偏移量的,jmp后面的地址偏移量=目標地址 - 本代碼下一行代碼的地址 
 所以不能在自己的程序內(nèi)寫 jmp $00427BA3

通過寄存器間接跳轉(zhuǎn)到絕對地址


 
 
的確像你所說的一樣,直接JMP要計算偏移量,昨天看了很多C的例子,關(guān)于注入程序后的代碼重定位...還沒有來得及試,也沒完全看清楚. 
 
但 是如果我寫成push *******的形式呢?后面的地址就直接用就行了吧?
但是我如果直接PUSH 由VirtualAllocEx返回的指針的話注入后還是不是我想要的樣子...
那PUSH后要把VirtualAllocEx返回的指針指向的地址入棧 的話要怎么做呢?


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多