手動脫殼ASProtect 1.23beta21之Aspack2.12的主程式and暗樁分析
標 題:手動脫殼ASProtect 1.23beta21之Aspack2.12的主程式and暗樁分析
發信人:David
時 間:2004-2-01 週日, 下午3:04
詳細資訊:
【脫文作者】 weiyi75[Dfcg](感謝jeffzhang[Dfcg]技術指點)
【作者郵箱】 weiyi75@sohu.com
【作者主頁】 Dfcg官方大本營
【使用工具】 Ollydbg1.09d,Imprec1.42,LoadPe
【破解平臺】 Win2000/XP
【軟體名稱】 Aspack2.12主程式
【下載地址】 http://www.aspack.com/files/aspack212.zip
【軟體簡介】
ASPack is an advanced Win32 executable file compressor, capable of reducing the file size of 32-bit Windows programs by as much as 70%. (ASPack compression ratio improves upon the industry-standard zip file format by as much as 10-20%.) ASPack makes Windows 95/98/NT programs and libraries smaller, and decrease load times across networks, and download times from the internet; it also protects programs against reverse engineering by non-professional hackers. Programs compressed with ASPack are self-contained and run exactly as before, with no runtime performance penalties.
【軟體大小】 293k
【加殼方式】 ASProtect 1.22 - 1.23 Beta 21 -> Alexey Solodovnikov
【破解宣告】 我是一隻小菜鳥,偶得一點心得,願與大家分享:)
--------------------------------------------------------------------------------
【破解內容】
前言,關於這個軟體用SDK緊密結合殼,使脫殼檔案不能直接執行。Fpx原來寫出一篇節點修復文章,這裡Jeffzhang兄提示有另外辦法修復,我學會後覺的對初學者有用,故釋出此文。Jeffzhang真是脫殼高手,吾望塵莫及。
好,脫殼開始。
這個版本的Asprotect對Nt偵錯程式不檢測,Softice嚴格校驗。OD異常設定不忽略記憶體異常,其餘全部忽略,載入程式。
00401000 > 68 01804600 PUSH ASPack.00468001 停在這裡,F9執行。
00401005 E8 01000000 CALL ASPack.0040100B
0040100A C3 RETN
0040100B C3 RETN
0040100C 3B92 7724E04E CMP EDX,DWORD PTR DS:[EDX+4EE02477]
00401012 04 84 ADD AL,84
00401014 3D 62110889 CMP EAX,89081162
00401019 1905 9080A438 SBB DWORD PTR DS:[38A48090],EAX
0040101F 45 INC EBP
00401020 E1 09 LOOPDE SHORT ASPack.0040102B
......................................................................
記憶體異常。
009E0739 3100 XOR DWORD PTR DS:[EAX],EAX
009E073B EB 01 JMP SHORT 009E073E
009E073D 68 648F0500 PUSH 58F64
009E0742 0000 ADD BYTE PTR DS:[EAX],AL
009E0744 00EB ADD BL,CH
009E0746 02E8 ADD CH,AL
009E0748 0158 68 ADD DWORD PTR DS:[EAX+68],EBX
009E074B F8 CLC
009E074C ^ E2 9D LOOPD SHORT 009E06EB
......................................................................
繼續Shift+F9 32次忽略異常到最後一次異常處。
009E00E1 3100 XOR DWORD PTR DS:[EAX],EAX 最後一次異常。
009E00E3 64:8F05 0000000>POP DWORD PTR FS:[0] // 在此處下斷,Shift+F9中斷到這句,然後清除斷點
009E00EA 58 POP EAX
009E00EB 833D DC399E00 0>CMP DWORD PTR DS:[9E39DC],0
009E00F2 74 14 JE SHORT 009E0108
009E00F4 6A 0C PUSH 0C
009E00F6 B9 DC399E00 MOV ECX,9E39DC
009E00FB 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
009E00FE BA 04000000 MOV EDX,4
009E0103 E8 94C3FFFF CALL 009DC49C
009E0108 FF75 FC PUSH DWORD PTR SS:[EBP-4]
009E010B FF75 F8 PUSH DWORD PTR SS:[EBP-8]
009E010E 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
009E0111 8338 00 CMP DWORD PTR DS:[EAX],0
009E0114 74 02 JE SHORT 009E0118
009E0116 FF30 PUSH DWORD PTR DS:[EAX]
009E0118 FF75 F0 PUSH DWORD PTR SS:[EBP-10]
009E011B FF65 EC JMP DWORD PTR SS:[EBP-14] 這裡就跳走了。
009E011E 5F POP EDI
009E011F 5E POP ESI
009E0120 5B POP EBX
009E0121 8BE5 MOV ESP,EBP
009E0123 5D POP EBP
009E0124 C3 RETN 注意這裡不能下斷點啊,不同於Asprotect1.23rc4
......................................................................
接著按ALT+M開啟記憶體映象。在第一個塊上下記憶體訪問斷點。
記憶體映象
R R
00400000 00001000 ASPack PE header Imag R RWE
00401000 00042000 ASPack code Imag R RWE //在此處上下記憶體
訪問斷點
......................................................................
按F9執行,程式就會中斷在OEP處了。
0044289C 55 PUSH EBP //中斷在這裡,現在就可以DUMP了。
0044289D 8BEC MOV EBP,ESP
0044289F 83C4 F4 ADD ESP,-0C
004428A2 E8 4D0BFCFF CALL ASPack.004033F4
004428A7 E8 0C21FCFF CALL ASPack.004049B8
004428AC E8 6354FCFF CALL ASPack.00407D14
004428B1 E8 D6C6FCFF CALL ASPack.0040EF8C
接著用Import REC 填入oep 4289C ,iat自動搜尋-獲得輸入資訊-顯示無效的,右鍵先用追蹤層次1修復大部分指標,剩下8個指標用Asprotect1.2X外掛修復。
執行修復後的程式出錯,當然不可能這麼簡單了。所以接下來的工作就是尋找出錯的位置然後修復。用OD載入修復後的程式,來到這裡。
00442901 |. E8 D210FEFF CALL Dump_.004239D8
00442906 |. BA 38294400 MOV EDX,Dump_.00442938
0044290B |. A1 30564400 MOV EAX,DWORD PTR DS:[445630]
00442910 |. E8 DF0DFEFF CALL Dump_.004236F4
00442915 FF15 0C494400 CALL DWORD PTR DS:[44490C] //這裡出錯,資訊框提示 DS:[0044490C]
=0098C9A0,這裡是呼叫殼中的程式碼,殼被脫了,當然出錯,所以要知道它究竟是呼叫什麼內容,只能跟蹤未脫殼的程式相應位置。
用OD重新載入未脫殼的程式,重複上敘步驟。直到OEP處停下。
00442915 FF15 0C494400 CALL DWORD PTR DS:[44490C] //按F4來到這裡,接著F7跟入
0098C9A0 833D A8359900 0>CMP DWORD PTR DS:[9935A8],0 //來到這裡
0098C9A7 74 06 JE SHORT 0098C9AF
0098C9A9 FF15 A8359900 CALL DWORD PTR DS:[9935A8] //DS:[009935A8]=004427A8,呼叫004427A8處的程式碼 ; ASPack.004427A8
0098C9AF C3 RETN
看到這裡大家應該都知道該怎樣修復了吧。在轉儲視窗,Ctrl+G來到0044490C
0044490C A0 C9 98 00 //原先值
0044490C A8 27 44 00 //修改值
儲存為Unpack1.exe,試執行,確定一個錯誤提示,英文介面,還不能加殼程式。
繼續查詢出錯的位置
0043F1B8 FF15 04494400 CALL DWORD PTR DS:[444904] //這裡出錯,DS:[00444904]=0098C8F4,又是呼叫殼中的程式碼
同理跟蹤未脫殼的程式來到此處
0043F1B8 FF15 04494400 CALL DWORD PTR DS:[444904] //F7進入
0098C8F4 C3 RETN //來到這裡。返回到 0043F1BE
暈,裡面就是一個RETN,這個也好辦,隨便找一個RETN讓它返回吧。可以用Ctrl+F查詢RETN,我選用的是
00401234處的,隨便哪個RETN都行。
同樣來到轉儲視窗,Ctrl+G來到00444904
00444904 F4 C8 98 00 //原先值
00444904 34 12 40 00 //修改值
繼續查詢出錯的位置
0043F246 FF15 08494400 CALL DWORD PTR DS:[444908] //DS:[00444908]=0098C8F4 這裡也是呼叫殼中的程式碼
同樣跟蹤未脫殼的程式來到此處
0043F246 FF15 08494400 CALL DWORD PTR DS:[444908] //F7進入
0098C8F4 C3 RETN //來到這裡。
這裡和上面修改一樣。
00444908 F4 C8 98 00 //原先值
00444908 34 12 40 00 //修改值
到這裡就是徹底結束了,可以正常執行了。
【破解總結】
在轉儲視窗中修改
00444904 F4 C8 98 00 //原先值
00444904 34 12 40 00 //修改值
00444908 F4 C8 98 00 //原先值
00444908 34 12 40 00 //修改值
0044490C A0 C9 98 00 //原先值
0044490C A8 27 44 00 //修改值
相關文章
- upx手動脫殼2020-10-26
- iOS逆向學習之五(加殼?脫殼?)2019-10-10iOS
- 某IOT蠕蟲病毒分析之UPX脫殼實戰2018-04-11
- 十、iOS逆向之《越獄砸殼/ipa脫殼》2021-03-18iOS
- 逆向基礎——軟體手動脫殼技術入門2020-08-19
- Od跟進之脫殼(待完善)2018-10-20
- iOS應用程式的脫殼實現原理淺析2019-03-04iOS
- 一次簡單的脫殼2024-08-30
- 教你如何寫UPX脫殼指令碼2019-05-11指令碼
- Android之什麼是樁程式碼(Stub)?2019-01-29Android
- Android.Hook框架Cydia篇(脫殼機制作)2020-08-19AndroidHook框架
- 騰訊安全ApkPecker上線DEX-VMP自動化脫殼服務2021-07-19APK
- 脫殼基礎知識以及簡單應用2019-06-17
- 從Android執行時出發,打造我們的脫殼神器2020-08-19Android
- 動態脫敏典型應用場景分析——業務脫敏、運維脫敏、資料交換脫敏2020-08-03運維
- 故障分析 | 手動 rm 掉 binlog 導致主從報錯2022-05-16
- 【開源】BlackDex,無需環境,Android新姿勢脫殼工具2021-05-27Android
- Android 裝逼技術之暗碼啟動應用2019-07-15Android
- Linux 外殼程式2018-08-05Linux
- 一本正經的聊聊手機主題顏色隨手機殼顏色變化的幾種方案2018-08-03
- 高研班直播公開課《JNI函式與脫殼分析實戰》 8月14日下午1點!2022-08-14函式
- 某殼分析+修復(二)2018-05-14
- 需求背後程式設計師的辛酸—(由APP主題顏色隨手機殼顏色變化需求帶來的思考)2018-08-03程式設計師APP
- Android之Apk加殼2018-12-11AndroidAPK
- 提煉賽博朋克之魂:《攻殼機動隊》的前世今生2020-05-28
- ostgreSQL主從切換-手動2024-05-20SQL
- Honcho:特斯拉成脫手最快的二手車品牌2020-09-09
- 充電樁規模競爭格局分析2020-07-09
- 基於日出和日落時間自動切換到明/暗 Gtk 主題2018-09-02
- 金蟬脫殼2百度雲免費線上觀看2018-06-23
- Dijkstra 演算法的手動分析2024-06-11演算法
- vscode原始碼分析【七】主程式啟動訊息通訊服務2019-06-19VSCode原始碼
- Qt啟動子程式,子程式關閉時通知主程式,實現主程式對子程式的管理2020-08-27QT
- 貝殼研究院 :2021年1月二手房業主預期增強2021-02-06
- 自己動手編寫一個Mybatis外掛:Mybatis脫敏外掛2020-08-11MyBatis
- App基於手機殼顏色換膚?先嚐試一下用 KMeans 來提取影象中的主色2018-08-12APP
- 二手車電商需要“貝殼”?2021-06-25
- 【Datawhale】動手學資料分析2022-11-26
- Python 從零開始爬蟲(六)——動態爬取解決方案 之 手動分析2018-05-09Python爬蟲