兩分種搞定UPX殼
Author:yellow
Email:yellow@safechian.net
Home Page:www.safechina.net
Date:2004-01-19.夜
我從沒有搞過破解只是在前段時間學習PE文件格式在看雪學院Down了一些資料明
天就要放假了閑來無事用一個小時把看雪學院的通覽了一遍為
了練習搞定了幾個CrackMe覺得也怪好玩的覺得!
Crack技術里的脫殼技術是非常有意思
我不想解釋脫殼的概念什么的這方面的資料非常多好了不廢話下面讓開始講解如何
在兩分種內脫掉UPX的殼以前沒有搞過Crack有什么Error的地方高手誤笑!呵呵!
相關工具:
UPX 1.23W(用于壓縮和加殼)
W32Dasm 10.0黃金漢化版(Cracker們和Hacker們都經常要用的)
OllyDbg 1.09c聆風聽雨漢化版(這個漢化Bug很少很好用)
OllyDump(OllyDbg脫殼插件)
"開始"-->"程序"-->"附件"-->"游戲"-->"掃雷"-->"右擊"-->"屬性"-->"查找目標"
復制到工作目錄下(我的是D:/temp/Crack/)使用UPX對掃雷程序加殼
命令如下:
d:/temp/crack>upx -9 winmine.exe -o swinmine.exe
目錄下生成了一個名為swinmine.exe的已加殼程序
使用W32Dasm打開反匯編已經看不到引入和引出函數參考對話框和菜單參考字串參考全變成了
String Resource ID=00001: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00002: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌?
哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?quot;
String Resource ID=0!
0003: &q
uot;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00004: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00005: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00007: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00009: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00011: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00014: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00014: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
先按Ctrl+End光標走到了最后一行再選擇W32Dasm的"查找/查找文本"菜單輸入"popad"選中
查找方向為向上找到這樣的語句:
:0101BC28 FF96E8BC0100 !
call dword ptr [esi+0001BCE8]
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
│:0101BBF0(C)
│
:0101BC2E 61 popad
:0101BC2F E99C81FEFF jmp 01003DD0;<==---
光標移到:0101BC2F E99C81FEFF jmp 01003DD0這句上選擇"編輯/快速編輯"
菜單項將
E99C81FEFF000000000000000000000000000000改為
CCE99C81FEFF0000000000000000000000000000
(后面去掉兩個一字節前面添加一字節的十六進制數的CC即匯編語句int 3User Break
Point中斷調用)保存成Pswinmine.exe運行一下彈出一個MessageBox"Software Exception...
位置0101bc2f"出現一個未處理異常?出錯了?沒有!沒有!是我們寫入的int 3發出的!
看
清楚它的位置0101bc2f
再反匯編Pswinmine.exe看一下0x01!
01bc2f地
址的指令就明白了:
:0101BC28 FF96E8BC0100 call dword ptr [esi+0001BCE8]
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
│:0101BBF0(C)
│
:0101BC2E 61 popad
:0101BC2F CC int 03;<==---
:0101BC30 E99C81FEFF jmp 01003DD1<==---
退出W32Dasm打開OllyDbg打開剛才打過用戶中斷調用補丁的Pswinmine.exe程序顯示
"模塊"Pwinmine"的快速統計測試報告說明它的代碼總發也許是經過了壓縮加密或者包含
很大數目的嵌入式數據.代碼分析結果將會是非常不可靠的或者是簡單而且錯誤的.您確定要
繼續進行分析嗎?"當然!
點"是"了再按F9程序會中斷在0101bc2f因為我們int 3調用了User
Break Point中斷控制權轉到了OllyDbg其實加殼(加密)后程序需要在執行時由一小段程序
來解密程序然后再跳轉到解密后的代碼執行這和Overflow攻擊中使用的ShellCode編解碼技
術驚人的相似ShellCode在解碼以前只有一小段代碼(通常是解碼子程序)是可執行的其它未
經解碼的代碼(其實在未解碼前它們同加殼過的軟件代碼一樣是一系列毫無規則的錯誤的指令
甚至是根本不存在的指令代碼)如果執行就會出現錯誤.
右擊選"Dump Debuged Process"在Entry Point框輸入3dd1注意是3dd1而不是3dd0輸入保
存文件名123.exe點確定保存運行一下一切正常(這時程序已從內存中被脫殼出來).
退出OllyDbg打開W32Dasm再次反匯編123.exe(已脫UPX殼的掃雷程序)
菜單參考:
Menu: MenuID_01F4
Menu: MenuID_01F4 Item: ""
Menu: MenuID_01F4 Item: "??)(M)"
Menu: MenuID_01F4 Item: "?B)"
Menu: MenuID_01F4 Item: "-?I)"
Menu: MenuID_01F4 Item: "痼(S)"
Menu: MenuID_01F4 !
Item: "丕(E)"
Menu: MenuID_01F4 Item: "亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb