PEbundle V2.3脫殼 - 某演算法序號產生器
【脫文標題】 PEbundle V2.3脫殼 - 某演算法序號產生器
【脫文作者】 weiyi75[Dfcg]
【作者郵箱】 weiyi75@sohu.com
【作者主頁】 Dfcg官方大本營 --- www.chinadfcg.com
【使用工具】 Fi,Ollydbg,Loadpe,Imprec1.42
【脫殼平臺】 Win2K
【軟體名稱】 keygen
【軟體簡介】 PEbundle v2.3 加殼的一個某演算法序號產生器
【軟體大小】 164KB
【下載地址】 本地下載
【加殼方式】 PEbundle v2.3
【保護方式】 壓縮殼,IAT簡單加密
【脫殼宣告】 我是一隻小菜鳥,偶得一點心得,願與大家分享:
--------------------------------------------------------------------------------
【脫殼內容】
看過 PEbundle V2.3脫殼――唐詩三百首 V1.2 脫文,大家對PEbundle V2.3有些概念吧,特點是迴圈多。
既然有了前面的經驗,就沒必要慢慢跟蹤了,首先找Oep。
OD設定忽略全部異常設定,載入程式,無須隱藏OD,因為PEbundle是個壓縮殼。
00439000 > 9C pushfd //入口點
00439001 60 pushad
00439002 E8 02000000 call keygen.00439009
00439007 33C0 xor eax, eax
00439009 8BC4 mov eax, esp
0043900B 83C0 04 add eax, 4
0043900E 93 xchg eax, ebx
0043900F 8BE3 mov esp, ebx
00439011 8B5B FC mov ebx, dword ptr ds:[ebx-4]
00439014 81EB 07304000 sub ebx, keygen.00403007 ; ASCII "D$"
0043901A 87DD xchg ebp, ebx
0043901C 80BD DD3B4000 0>cmp byte ptr ss:[ebp+403BDD], 0
00439023 74 21 je short keygen.00439046
00439025 8D85 D6384000 lea eax, dword ptr ss:[ebp+4038D6]
0043902B 50 push eax
0043902C FF95 B2384000 call dword ptr ss:[ebp+4038B2]
00439032 8D8D 2C3A4000 lea ecx, dword ptr ss:[ebp+403A2C]
00439038 51 push ecx
00439039 50 push eax
0043903A FF95 A2384000 call dword ptr ss:[ebp+4038A2]
....................................................................................
找Oep試試我的二次軟硬斷點結合法,這個方法只能找Oep,IAT無法避免加密。
命令列 d 12ffc0
0012FFC0 F8 FF 12 00 F5 87 E6 77 A8 16 55 00 56 00 00 00 ?.w?U.V... //已經有資料了,沒關係,還是下個硬體寫入dword斷點
0012FFD0 00 F0 FD 7F 00 02 00 00 C8 FF 12 00 00 02 00 00 .瘕...?....
0012FFE0 FF FF FF FF B4 F0 E7 77 C8 8E E6 77 00 00 00 00 答ww....
0012FFF0 00 00 00 00 00 00 00 00 00 90 43 00 00 00 00 .........C.....
F9執行
硬體斷點1
00439376 C3 retn
00439377 C8 000000 enter 0, 0
0043937B 57 push edi
0043937C 56 push esi
0043937D 8B75 08 mov esi, dword ptr ss:[ebp+8]
00439380 8B7D 0C mov edi, dword ptr ss:[ebp+C]
00439383 8A06 mov al, byte ptr ds:[esi]
00439385 3C 61 cmp al, 61
00439387 72 06 jb short keygen.0043938F
00439389 3C 7A cmp al, 7A
0043938B 77 02 ja short keygen.0043938F
0043938D 04 E0 add al, 0E0
0043938F 8A27 mov ah, byte ptr ds:[edi]
00439391 80FC 61 cmp ah, 61
00439394 72 08 jb short keygen.0043939E
00439396 80FC 7A cmp ah, 7A
00439399 77 03 ja short keygen.0043939E
0043939B 80C4 E0 add ah, 0E0
0043939E 46 inc esi
0043939F 47 inc edi
004393A0 837D 10 01 cmp dword ptr ss:[ebp+10], 1
004393A4 75 01 jnz short keygen.004393A7
...........................................................................
然後Alt+M 開啟記憶體映象視窗。
記憶體映象,專案 12
地址=00401000 //Code 段下記憶體訪問斷點,F9執行
大小=0000D000 (53248.)
Owner=keygen 00400000
區段=.text
包含=code
型別=Imag 01001002
訪問=R
初始訪問=RWE
記憶體斷點
0040D1EF /. 55 push ebp //OEP 入口,LoadPe脫殼
0040D1F0 |. 8BEC mov ebp, esp
0040D1F2 |. 6A FF push -1
0040D1F4 |. 68 10FD4000 push keygen.0040FD10
0040D1F9 |. 68 4ED34000 push keygen.0040D34E ; jmp to MSVCRT._except_handler3; SE handler
installation
0040D1FE |. 64:A1 0000000>mov eax, dword ptr fs:[0]
0040D204 |. 50 push eax
0040D205 |. 64:8925 00000>mov dword ptr fs:[0], esp
0040D20C |. 83EC 68 sub esp, 68
0040D20F |. 53 push ebx
0040D210 |. 56 push esi
0040D211 |. 57 push edi
0040D212 |. 8965 E8 mov dword ptr ss:[ebp-18], esp
0040D215 |. 33DB xor ebx, ebx
0040D217 |. 895D FC mov dword ptr ss:[ebp-4], ebx
0040D21A |. 6A 02 push 2
0040D21C |. FF15 54E44000 call dword ptr ds:[40E454] ; MSVCRT.__set_app_type
0040D222 |. 59 pop ecx
0040D223 |. 830D 70234100>or dword ptr ds:[412370], FFFFFFFF
0040D22A |. 830D 74234100>or dword ptr ds:[412374], FFFFFFFF
0040D231 |. FF15 50E44000 call dword ptr ds:[40E450] ; MSVCRT.__p__fmode
0040D237 |. 8B0D 64234100 mov ecx, dword ptr ds:[412364]
0040D23D |. 8908 mov dword ptr ds:[eax], ecx
0040D23F |. FF15 4CE44000 call dword ptr ds:[40E44C] ; MSVCRT.__p__commode
.........................................................................................
脫殼後發現程式不能執行,這時需要用Imprec修復引入函式表(Import Table)
Imprec選擇程式,在Oep處填71B80,點IT自動搜尋,然後點獲輸入資訊,看到輸入表有無效的,點顯示無效按鈕,提示有1個未修復的指標,這是垃
圾指標嗎?直接Cut程式是無法執行的,刪除這個指標程式可以執行,感覺不爽。為這個問題特地請教Jwh51。
不同的DLL之間一定要有個空間進行區別,所以很多殼就在這個空間內插入垃圾了,而同一個DLL之內是沒有空餘空間的.所以也無法插入垃圾了。
一般情況下,垃圾總是位於兩個DLL之間,而這個指標位於Kernel32.dll之間, 所以這個指標不是垃圾指標,為什麼這個指標刪除仍然可以執行?這是因為在程式裡API是按順序排列的,排上去不併不一定馬上就要用到。當然
,可能程式裡沒用到這個指標,就不會出錯了。
那我們找找它是Kernel32.dll的哪個Api函式。
圖中我們看到,40e078處的指標無法識別,這個用功能強大的OD下斷點,基本上都能從堆疊獲暫存器裡找到加密指標。
還是命令列 d 40e078,然後對40e078下硬體寫入dword斷點,當加密指標時Od立刻會通知我們。
F9執行中斷兩次,第二次到這裡中斷。
硬體中斷
00439BD4 ^E9 67FFFFFF jmp keygen.00439B40
00439BD9 F8 clc
00439BDA C3 retn
00439BDB F9 stc
00439BDC C3 retn
00439BDD 0000 add byte ptr ds:[eax], al
00439BDF 0000 add byte ptr ds:[eax], al
00439BE1 0000 add byte ptr ds:[eax], al
00439BE3 0000 add byte ptr ds:[eax], al
00439BE5 0000 add byte ptr ds:[eax], al
00439BE7 0000 add byte ptr ds:[eax], al
00439BE9 0000 add byte ptr ds:[eax], al
00439BEB 0000 add byte ptr ds:[eax], al
00439BED 0000 add byte ptr ds:[eax], al
00439BEF 0000 add byte ptr ds:[eax], al
..........................................................................................
0012FF80 00036000
0012FF84 00439B87 keygen.00439B87
0012FF88 004394AA keygen.004394AA
0012FF8C 77E705CF KERNEL32.LoadLibraryA //堆疊捲軸往上一點看到 KERNEL32.LoadLibraryA
0012FF90 00400000 keygen.00400000
0012FF94 00410A30 keygen.00410A30
0012FF98 00439ABC 返回到 keygen.00439ABC 來自 keygen.00439AC9
0012FF9C 004392C1 返回到 keygen.004392C1 來自 keygen.00439AAD
0012FFA0 005516A8
ECX 00410A30 keygen.00410A30
EDX 00400000 keygen.00400000
EBX 004110B8 ASCII "LoadLibraryA" //暫存器EBX中存放的加密指標
ESP 0012FF98
EBP 00036000
ESI 00410914 keygen.00410914
EDI 0040E07C keygen.0040E07C
EIP 00439BD4 keygen.00439BD4
C 1 ES 0023 32bit 0(FFFFFFFF)
P 1 CS 001B 32bit 0(FFFFFFFF)
A 0 SS 0023 32bit 0(FFFFFFFF)
Z 0 DS 0023 32bit 0(FFFFFFFF)
S 1 FS 0038 32bit 7FFDE000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000287 (NO,B,NE,BE,S,PE,L,LE)
ST0 empty 0.0
ST1 empty 0.0
ST2 empty 0.0
ST3 empty 0.0
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 0.0
ST7 empty -UNORM E330 00000020 00000000
3 2 1 0 E S P U O Z D I
FST 0000 Cond 0 0 0 0 Err 0 0 0 0 0 0 0 0 (GT)
FCW 027F Prec NEAR,53 Mask 1 1 1 1 1 1
..............................................................................
於是在Rva 0000E078 處填入 KERNEL32.LoadLibraryA
指標全部修復,修復程式,正常執行。
【脫殼總結】PEbundle V2.3手動脫殼一般用二次軟硬斷點結合法找OEP,IAT一般沒有加密,加密指標也很容易用硬體訪問斷點找到答案。
--------------------------------------------------------------------------------
【版權宣告】 本文純屬技術交流, 轉載請註明作者並保持文章的完整,感謝Jwh51兄的耐心指點!
相關文章
- 序號產生器合集2024-03-17
- 【原創】FileRecoveryAngel 演算法分析+序號產生器2015-11-15演算法
- Myeclipse 6.5 序號產生器2020-04-06Eclipse
- IconEdit2
v2.3脫殼實錄2010-08-13
- 分享一個navicat序號產生器2024-04-02
- win10如何執行序號產生器_win10怎麼執行序號產生器2020-08-28Win10
- 如何製作VB程式記憶體序號產生器--國內某軟體的序號產生器(隱去軟體資訊)
(14千字)2002-08-04記憶體
- 全國電話通1.18
演算法分析+序號產生器2004-04-26演算法
- Windows系統切換工具
演算法分析+序號產生器2004-07-02Windows演算法
- QuickCD V1.0.4演算法分析+序號產生器原始碼2015-11-15UI演算法原始碼
- winzip序號產生器 (1千字)2001-04-12
- AddRemove 4GOOD 註冊演算法+序號產生器2003-07-25REMGo演算法
- 蒼鷹象棋1.0
註冊演算法分析和序號產生器2004-05-16演算法
- eBook Edit Pro 3.21 演算法分析及序號產生器原始碼2003-03-13演算法原始碼
- 餅乾Flash播放器 V1.92-演算法+序號產生器原始碼2015-11-15播放器演算法原始碼
- 美萍安全衛士V8.45序號產生器制作分析過程,及序號產生器! (11千字)2001-10-28
- Gif2Swf Ver 2.1 TC20序號產生器 && MASM32序號產生器 (4千字)2001-12-10ASM
- 序號產生器制分析: (1千字)2001-11-19
- 《淺談利用RSA演算法防止非法序號產生器的製作》2004-05-20演算法
- VB家庭課堂 v2.0的演算法和序號產生器2015-11-15演算法
- 搜尋引擎工廠專業版演算法分析+演算法序號產生器2015-11-15演算法
- 製作mIRC6.02序號產生器(給別人寫的初學者序號產生器教材) (14千字)2015-11-15
- SAP CRM One Order的事件序號產生器制2020-02-11事件
- Navicat Premiumx64 使用序號產生器啟用2018-11-12REM
- xplorer2之破解和序號產生器2004-12-05
- 010
Editorv1.3破解(序號產生器)2004-05-17
- winzip的通用序號產生器 (2千字)2001-12-10
- 超級公式計算器 V4.5x 演算法分析+序號產生器原始碼2015-11-15公式演算法原始碼
- 進位專家註冊演算法分析及序號產生器C原始碼2004-08-19演算法原始碼
- SAP CRM呼叫中心裡的事件序號產生器制2020-03-10事件
- 貼彩虹狗破解工具的序號產生器 (727字)2001-07-01
- Kalua Cocktails 1.1完全破解,內附彙編序號產生器(用序號產生器編寫器,並有它的使用教程)
(22千字)2002-02-27AI
- Advanced Dialer v2.5演算法分析(附序號產生器) (3千字)2002-04-17演算法
- Beyond Compare 1.9f註冊演算法&序號產生器 (8千字)2002-04-28演算法
- Lc3&Lc4
註冊演算法分析及序號產生器的製作2004-06-18演算法
- mIRC v5.81版註冊碼演算法分析和序號產生器編寫2000-12-11演算法
- Advanced Emailer 2.1 簡單演算法分析+序號產生器原始碼(tc2)2015-11-15AI演算法原始碼
- SWF2Video Pro V1.0.1.2 完全破解 演算法分析+序號產生器2015-11-15IDE演算法