以殼解殼--SourceRescuer脫殼手記破解分析
前言:七月份就已經發布在DFCG論壇裡了,現在看雪老大要出精華6了,大菜鳥我近來沒時間寫東東了,就把它轉來,算是投一篇稿吧。真希望能入選一篇,以回報這個給了我很多幫助的看雪論壇!
軟體名稱:
以殼解殼--SourceRescuer脫殼手記
軟體簡介:
半年多前(過年前)看見fly脫神放出的該軟體脫殼破解版(含原版)。當時偶初學破解,先當下來用用。時隔半年多,開啟雜亂的硬碟,才又發現該軟體。想想初學脫殼,一眨眼半年又過去了,唉,歲月匆匆啊!!!話不多說了,今天我們用fly脫神的以殼脫殼法治理該軟體,希望廣大脫友能有所收穫!又注:用fly脫神的標準方法脫了N>10次,沒有成功,後看了Mr.David兄的脫system cleaner4.91的動畫,才成功。Mr.David兄在後期處理使用了稍有不同的方法,我們來學學看。呵呵
下載地址:http://bbs.pediy.com/showthread.php?s=&threadid=7042
------------------------------------------------------------
破解作者:
springkang[DFCG]
破解工具:
OllyDbg,impr,loadpe,AsprDbgr_build_106.exe,winxp,etc
破解目的:
只為技術,不唯破解!互相探討,共同提高!!
------------------------------------------------------------
[破解過程]
詳細過程:
用peid0.92查是ASProtect 1.23 RC4 Registered -> Alexey Solodovnikov。
用為OD載入,不忽略記憶體訪問異常,其餘全部忽略!
00401000 > 68 01405B00 PUSH SourceRe.005B4001 //載入後停在這裡,F9執行
00401005 E8 01000000 CALL SourceRe.0040100B
0040100A C3 RETN
0040100B C3 RETN
0040100C AF SCAS DWORD PTR ES:[EDI]
00AE49CB 3100 XOR DWORD PTR DS:[EAX],EAX //偶這裡是第二十三次異常後出現第二次硬碟指紋,然後下ALT+M開啟下記憶體斷點,shift+f9
00AE49CD EB 01 JMP SHORT 00AE49D0
00AE49CF 68 648F0500 PUSH 58F64
00AE49D4 0000 ADD BYTE PTR DS:[EAX],AL
00AE49D6 00EB ADD BL,CH
0056BAD4 55 PUSH EBP //停在這裡
0056BAD5 8BEC MOV EBP,ESP
0056BAD7 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0056BADA A3 F8295700 MOV DWORD PTR DS:[5729F8],EAX //注意[5729f8],現在我們可在用dd 5729f8監視該記憶體區域的值。這裡是儲存註冊名的。透過最後一次異常後就可以修改裡面的內容了。取消記憶體斷點後,再按幾次shift+f9來到經典的異常處
0056BADF 5D POP EBP
0056BAE0 C2 0400 RETN 4
00AE3D03 3100 XOR DWORD PTR DS:[EAX],EAX //來到這裡
00AE3D05 64:8F05 0000000>POP DWORD PTR FS:[0]
00AE3D0C 58 POP EAX
00AE3D0D 833D BC7EAE00 0>CMP DWORD PTR DS:[AE7EBC],0
00AE3D14 74 14 JE SHORT 00AE3D2A
00AE3D16 6A 0C PUSH 0C
00AE3D18 B9 BC7EAE00 MOV ECX,0AE7EBC
00AE3D1D 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
00AE3D20 BA 04000000 MOV EDX,4
00AE3D25 E8 E6D2FFFF CALL 00AE1010
00AE3D2A FF75 FC PUSH DWORD PTR SS:[EBP-4]
00AE3D2D FF75 F8 PUSH DWORD PTR SS:[EBP-8]
00AE3D30 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
00AE3D33 8338 00 CMP DWORD PTR DS:[EAX],0
00AE3D36 74 02 JE SHORT 00AE3D3A
00AE3D38 FF30 PUSH DWORD PTR DS:[EAX]
00AE3D3A FF75 F0 PUSH DWORD PTR SS:[EBP-10]
00AE3D3D FF75 EC PUSH DWORD PTR SS:[EBP-14]
00AE3D40 C3 RETN //在這裡下F2斷點,然後shift+f9到這裡。取消斷點,好,我們看看堆疊的值:
0012FF5C 00AF750C
0012FF60 00400000 ASCII "MZP"
0012FF64 E55B8319
0012FF68 0012FFA4 //dd 0012ff68 然後 下硬體訪問斷點,也可以直接:hr 12ff68.然後F9
0012FF6C 00000003
00AF761A /EB 3F JMP SHORT 00AF765B //中斷到這裡了,F7或F8均可,
00AF761C |60 PUSHAD
00AF761D |9C PUSHFD
00AF761E |FC CLD
00AF761F |BF 00000000 MOV EDI,0
00AF7624 |B9 00000000 MOV ECX,0
00AF7629 |F3:AA REP STOS BYTE PTR ES:[EDI] //fly是在這裡再下斷,可是本文中,我們不下斷,往後看。
00AF762B |9D POPFD
00AF762C |61 POPAD
00AF762D |C3 RETN
從00AF761A /EB 3F JMP SHORT 00AF765B跳到這裡:
00AF765B 03C3 ADD EAX,EBX ; SourceRe.00400000
00AF765D BB 3F060000 MOV EBX,63F //單步到這裡後,我們停住,不要再向前走了。等下修復時這裡就是入口處了!!!到這裡我們就可以dump了。先完全dump,再區域dump(我這裡是:address:00af0000,size:0000c000,考慮為什麼在這裡,因為從00af765d往下幾行程式碼就是殼對入口處程式碼的處理了)。然後我們裝配一下dump後的檔案。磁碟載入後:修復新載入的section的voffset為:00af0000-00400000=6f0000,儲存後重建pe,選項只先validate pe.重建完後。接著我們執行AsprDbgr_build_106,
00AF7662 0BDB OR EBX,EBX
00AF7664 75 02 JNZ SHORT 00AF7668
00AF7666 50 PUSH EAX
00AF7667 C3 RETN
00AF7668 E8 00000000 CALL 00AF766D //fly脫神等人提示這行要注意,本文中暫且不管它。
AsprDbgr_build_106執行後的程式碼:
AsprDbgr v1.0beta () Made by me... Manko.
iEP=401000 (J:\破解\SourceRescuer\原版\SourceRescuer.exe)
IAT Start: 573140 //這裡注意一下,我們在用impr修復時填入173140
End: 573908
Length: 7C8 //這個數字我們也用得上
IATentry 573194 = AE10AC resolved as GetProcAddress
IATentry 573198 = AE1500 resolved as GetModuleHandleA
IATentry 5731AC = AE1574 resolved as GetCommandLineA
IATentry 573250 = AE1500 resolved as GetModuleHandleA
IATentry 5732CC = AE1564 resolved as LockResource
IATentry 573304 = AE1528 resolved as GetVersion
IATentry 57331C = AE10AC resolved as GetProcAddress
IATentry 573324 = AE1500 resolved as GetModuleHandleA
IATentry 57334C = AE155C resolved as GetCurrentProcessId
IATentry 573354 = AE158C resolved as FreeResource
15 invalid entries erased.
Dip-Table at adress: AE7980
0 56BAD4 0 0 56BAE4 0 0 56BB00 56BB78 56BB80 0 0 0 0
Last SEH passed. (AE3D05) Searching for signatures. Singlestepping to OEP!
Call + OEP-jump-setup at: AF8304 ( Code: E8000000 5D81ED )
Mutated, stolen bytes at: AF834F ( Code: EB02CD20 6681355D )
Erase of stolen bytes at: AF82B9 ( Code: 9CFCBFF7 82AF00B9 )
Repz ... found. Skipping erase of stolen bytes.
possible (temp)OEP: 406EC8 (Reached from preOEP: AF82C9)
Sugested tempOEP at: 56BFE3 //還有這裡,等下用impr修復時填上16bfe3
現在我們用impr開啟程式,選取最新的sourcerescuer程式(也就用AsprDbgr_build_106產生的程式,不是od產生的,注意!偶就是這裡失敗了N次)
oep填上:0056bfe3-00400000=
16bfe3,RVA和size分別填上:573140-40000=173140和7c8,然後iat autosearch 和get imports,再show invalid ,全部有效。接下來在oep處填入:00AF765D -40000=6f765d,fix dump.執行就OK了
相比之下,後期處理和fly 大俠的方法稍有點不同,脫友們體會到了嗎?
破解小結:
方法源自fly脫神的以殼解殼文章,沒有他,我不可能完成脫殼。還要感謝Mr.David兄的動畫,解決了我的一些疑問!
偶很菜了,沒時間總結了,謝謝你能耐心的看完
偶的QQ:14695672(註明crack)
springkang[DFCG]
2004。7。27
------------------------------------------------------------
相關文章
- upx手動脫殼2020-10-26
- iOS逆向學習之五(加殼?脫殼?)2019-10-10iOS
- 十、iOS逆向之《越獄砸殼/ipa脫殼》2021-03-18iOS
- Od跟進之脫殼(待完善)2018-10-20
- 教你如何寫UPX脫殼指令碼2019-05-11指令碼
- 一次簡單的脫殼2024-08-30
- 某IOT蠕蟲病毒分析之UPX脫殼實戰2018-04-11
- 某殼分析+修復(二)2018-05-14
- 逆向基礎——軟體手動脫殼技術入門2020-08-19
- Android.Hook框架Cydia篇(脫殼機制作)2020-08-19AndroidHook框架
- 脫殼基礎知識以及簡單應用2019-06-17
- Linux 外殼程式2018-08-05Linux
- 蝦殼也是寶!2023-11-22
- iOS應用程式的脫殼實現原理淺析2019-03-04iOS
- 安卓整體加殼(一代殼)原理及實踐2024-09-15安卓
- 二手車電商需要“貝殼”?2021-06-25
- Android之Apk加殼2018-12-11AndroidAPK
- 腦殼疼的tapable2019-04-18
- 【開源】BlackDex,無需環境,Android新姿勢脫殼工具2021-05-27Android
- 從Android執行時出發,打造我們的脫殼神器2020-08-19Android
- 金蟬脫殼2百度雲免費線上觀看2018-06-23
- 紙殼CMS列表Grid的配置2018-08-17
- 加殼上碰到的問題2018-04-10
- 領取wps稻殼會員2019-12-24
- 笑話站【蛋殼兒網】2019-05-11
- 關於Windows外殼(Windows Shell)2024-11-11Windows
- 鋁殼電阻是什麼?2024-09-26
- 局勢詭譎,貝殼守城2023-03-31
- 騰訊安全ApkPecker上線DEX-VMP自動化脫殼服務2021-07-19APK
- Dalvik下一代殼通用解決方案2020-12-02
- 從零開始dumpdecrypted砸殼解析2018-09-30
- 貝殼產品筆試相關2018-09-04筆試
- Flutter Notes | Android 借殼分享微信2020-06-27FlutterAndroid
- 蛋殼兒網2.0【笑話站】2019-05-11
- 貝殼專案,上傳到cos2024-07-16
- 羽夏殼世界—— PE 結構(上)2022-04-10
- dp on 凸殼總結&gym 101806 T Touch The Sky 題解2020-11-10
- 高研班直播公開課《JNI函式與脫殼分析實戰》 8月14日下午1點!2022-08-14函式
- 淺談被加殼ELF的除錯2020-08-19除錯