還有些關於學習OD的日誌就不貼過來了。放個連接記錄下。
安全
最近學習脫殼 好多事知其然不知其因此然.、、、、函數
脫殼只是一個小過程、很多的加殼軟件已經有了相對應的脫殼機、、學習
也有固定的脫殼方法知道怎麼脫便可、其中脫殼的方法我感受有一下幾個(我接觸到的)加密
首先說一下殼好文章有一切從」殼」開始、殼的做用有壓縮程序和保護程序等等、指針
因此分壓縮殼和加密殼調試
區分兩種殼:日誌
OD載入時有入口警告或詢問是壓縮程序嗎?普通壓縮殼OD調試時候沒有異常code
加密殼所有有反跟蹤代碼,會有許多SEH陷阱使OD調試時產生異常。blog
脫殼的根本目的是找到程序真正的OEP、
對於壓縮殼來講簡單點有一些固定格式:
PUSHAD PUSHFD POPAD POPFD RETN JMP EAX(跨斷跳躍到一地址)
單步跟蹤這種殼有幾個注意:
F7(步入) F8(步過) F4(運行到鼠標處) F2(下/取消訪問斷點)
尋找OEP的路上必定要一往無前不能回頭、、使勁一切方法跳出其循環、他想回頭就F4他、也有好多例外不過總會有解決的辦法越過他去、、繼續前行、
注意一下幾點:
JMP的時候看一下地址的差距很遠F8便可很近就得F7進去不然程序會飛、
CALL有的時候就是變形的JMP比較地址差選擇F7 F8便可
F7是很安全的不過就是浪費時間
F8步過對壓縮殼用的不少,F7步過加密殼用的不少
其餘的脫殼方法(這裏只說怎麼作):
1簡單常見有名的殼能夠去下載其脫殼機脫之、
2 ESP定律(堆棧平衡定律)(頗有用能夠脫去大部分壓縮殼和少許的加密殼)
3內存鏡像法 在rcsc這裏斷 F9第二次在code斷F9差很少到OEP了就。。
4最後一次異常法不忽略全部異常shift+f9一路下去數着次數知道程序運行
從新加載再shift+f9一路下去次數比運行時的次數少一次、而後查看堆棧窗口處查看
下邊找一實例
0012FFBC 0012FFE0 指向下一個SEH記錄的指針
0012FFC0 0040CCD7 SE處理程序 //CTRL+G到這個地址處 下斷 Shit+F9運行
0012FFC4 7C817077 返回到kernel32.7C817077
0012FFC8 7C930228 ntdll.7C930228
而後單步走便可、、、找OEP去、、嘎嘎、、
5懶方法(好像能夠脫好多殼)、設置OD以下
一、忽略全部的異常
二、「調試選項」--「SFX」--「字節模式跟蹤實際入口」
等着OEP本身出來、、、
6模擬跟蹤法打開內存找到 00405000 SFX,數據這地
直接這樣下斷tc eip< 00405000等OEP出現、等等
脫殼完後還有重要的一步修復。
有的程序脫完殼就不能運行了、、
1 直接ImportREC獲取源程序(加殼的那個)的導入表而後DUMP咱脫完殼的程序
2 若是碰到有無效的函數指針、將其修復先嚐試使用右擊設置跟蹤級別爲1 2 3什麼的 若是還有的話 直接右擊反彙編進去找到那個函數複製
其名字而後雙擊這個無效的函數指針將這個函數名複製進去肯定便可 最後沒有了無效的DUMP、、
3 有的時候是PE損壞了 用LOADPE的重建PE功能便可
4 我遇見過幾次先LOADPE 再ImportREC修復就好了、、、
一點小筆記先記下接下來就是無限的去脫殼、、、總結經驗、、