日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ESP定律

發布時間:2023/12/1 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ESP定律 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當程序載入OD之后?

004AC460?>?$??60????????????pushad;程序停在這里?F8?指向pushad指令

pushad是把寄存器中數據入棧?棧中數據如下:

0012FFA4???7C930208???|EDI? <--?ESP指向棧頂

0012FFA8???FFFFFFFF |ESI

0012FFAC???0012FFF0 |EBP

0012FFB0???0012FFC4 |ESP

0012FFB4???7FFDE000 |EBX

0012FFB8???7C92E4F4???|EDX??

0012FFBC???0012FFB0 |ECX

0012FFC0???00000000 |EAX

此時ESP指向棧頂?地址為0012FFA4?,脫殼從這里開始-.-~

來到數據段即內存地址0012FFA4?在這下斷點?-?硬件訪問?-?word

然后F9??--?這里就能找到OEP

那么我的理解就是?匯編指令之前前先把各個寄存器保存起來,然后執行殼的操作比如解壓,

等殼的工作完成之后需要恢復各個寄存器的值?,我們在棧中已經設置了一個斷點,所以當程序訪問棧中數據(popad,我們在0012FFA4?下斷點是EDI的值,當程序恢復EDI寄存器)時就被我們給斷了下來?,當然并不是斷在pop?EDI指令上,而是斷在popad的下一條指令,因為popad是一步到位恢復寄存器的。

然后在尋找OEP,一般是jmp大跳?然后就看到了期待已久的55機器碼了?dump-.-~

可以理解為殼的執行是一個子程序?,子程序運行前都要保持寄存器,完事之后恢復寄存器,返回主程序

我們在恢復寄存器的地方下斷點,然后???...

以上就是我對ESP定律的理解,雖然還未成功脫的一殼,但是各大網站論壇都在談論ESP之威武,據說可脫所以壓縮殼,所以大概找了些文章看看,ESP定律就是利用堆棧平衡找到程序結束繼而找到OEP。

以上為個人理解,為了不誤人子弟,有錯誤大神請指出?

?

popad:相當于

push EAX

push ECX

push EDX

push EBX

push ESP

push EBP

push ESI

push EDI

總結

以上是生活随笔為你收集整理的ESP定律的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。