另類Armadillo脫殼+破解――StayOn Pro V4.00 Build 2003.03.01
另類Armadillo脫殼+破解――StayOn Pro V4.00 Build 2003.03.01
下載頁面: http://www.skycn.com/soft/1427.html
軟體大小: 485 KB
軟體語言: 英文
軟體類別: 國外軟體 / 共享版 / 網路輔助
應用平臺: Win9x/NT/2000/XP
加入時間: 2003-03-04 15:03:31
下載次數: 1035
推薦等級: ****
【軟體簡介】:保持你的Internet連線性,如果你要離開,但是又不想下網,用這個可以保持網路連線,避免你被強行斷線。
【作者宣告】:只是感興趣,沒有其他目的。失誤之處敬請諸位大俠賜教!
【除錯環境】:WinXP、Ollydbg、PEiD、LordPE、ImportREC 1.6
―――――――――――――――――――――――――――――――――
【脫殼過程】:
一、何謂 另類Armadillo
Armadillo加殼的方式想必大家都知道。其加殼程式執行時有的是單程式有的是雙程式,單程式的一般是標準方式加殼,雙程式的則有的是標準方式加殼有的是CopyMem-II方式加殼。
但是N久以前我卻突然發現另類Armadillo,程式執行後看是單程式,其實並不僅僅是唯一的單程式!這次以StayOn Pro為例簡單說一下這種加殼方式。感謝jwh51兄的幫忙,告訴我這其實還是標準殼,裡面沒有CC,呵呵。
設定Ollydbg忽略所有的異常選項。老規矩:用IsDebug 1.4外掛去掉Ollydbg的偵錯程式標誌。
下斷:BP CreateProcessA F9執行程式斷下,Alt+F9返回程式程式碼
0043FBAF 50 push eax
0043FBB0 8D8D A8FAFFFF lea ecx,dword ptr ss:[ebp-558]
0043FBB6 51 push ecx
0043FBB7 FF15 30B14400 call dword ptr ds:[<&KERNEL32.CreateProcessA>]//產生子程式
0043FBBD 85C0 test eax,eax
0043FBBF 75 2A jnz short StayOn_P.0043FBEB
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
CreateProcessA 時的堆疊:
0012F59C 0043FBBD /CALL 到 CreateProcessA 來自 StayOn_P.0043FBB7
0012F5A0 0012F7C4 |ModuleFileName = "E:..............ArmadilloStayOn ProStayOn Pro.exe"
0012F5A4 00141EE0 |CommandLine = """E:..............ArmadilloStayOn ProStayOn Pro.exe"""
0012F5A8 00000000 |pProcessSecurity = NULL
0012F5AC 00000000 |pThreadSecurity = NULL
0012F5B0 00000000 |InheritHandles = FALSE
0012F5B4 00000000 |CreationFlags = 0
0012F5B8 00000000 |pEnvironment = NULL
0012F5BC 00000000 |CurrentDir = NULL
0012F5C0 0012F780 |pStartupInfo = 0012F780
0012F5C4 0012F8C8 pProcessInfo = 0012F8C8
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
Ollydbg裡的StayOn Pro.exe用CreateProcessA產生了新的子程式,然後完成任務,ExitProcess退出了!我們的Ollydbg裡面是“死悄悄”的程式碼,而新程式的StayOn Pro.exe已經得意的執行起來啦。如果此時再用Ollydbg附加這個新的子程式,已經沒有什麼意義了,IAT的處理已經完畢,程式依然執行。這種方式似曾相識,某個殼也是這樣。
00445746 FF15 2CB14400 call dword ptr ds:[<&KERNEL32.ExitProcess>]//退出
呵呵,沒有辦法了?有!最簡單的就用mysqladm大蝦的方法!搞定這個另類Armadillo,Let's Go!
―――――――――――――――――――――――――――――――――
二、使程式把自己當成子程式執行
用Ollydbg載入程式,按雙程式標準殼的脫殼方法就OK了!
00444974 55 push ebp//進入OD後停在這
00444975 8BEC mov ebp,esp
00444977 6A FF push -1
00444979 68 00E64400 push StayOn_P.0044E600
0044497E 68 94444400 push StayOn_P.00444494
00444983 64:A1 00000000 mov eax,dword ptr fs:[0]
00444989 50 push eax
0044498A 64:8925 00000000 mov dword ptr fs:[0],esp
00444991 83EC 58 sub esp,58
00444994 53 push ebx
00444995 56 push esi
00444996 57 push edi
00444997 8965 E8 mov dword ptr ss:[ebp-18],esp
0044499A FF15 6CB14400 call dword ptr ds:[<&KERNEL32.GetVersion>]
下斷:BP OpenMutexA
77E6074A 55 push ebp//斷在這,看看堆疊
77E6074B 8BEC mov ebp,esp
77E6074D 51 push ecx
77E6074E 51 push ecx
77E6074F 837D 10 00 cmp dword ptr ss:[ebp+10],0
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
BP OpenMutexA 時的堆疊:
0012F5B8 0043F85D /CALL 到 OpenMutexA 來自 StayOn_P.0043F857
0012F5BC 001F0001 |Access = 1F0001
0012F5C0 00000000 |Inheritable = FALSE
0012F5C4 0012FBF8 MutexName = "37C::DAA99D8E17" ★注意0012FBF8
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
Ctrl+G:401000 鍵入以下程式碼:
00401000 60 pushad
00401001 9C pushfd
00401002 68 F8FB1200 push 12FBF8 ★ 堆疊裡看到的值
00401007 33C0 xor eax,eax
00401009 50 push eax
0040100A 50 push eax
0040100B E8 B4B2A577 call kernel32.CreateMutexA
00401010 9D popfd
00401011 61 popad
00401012 E9 33F7A577 jmp kernel32.OpenMutexA
在401000處新建起源,F9執行,再次中斷在OpenMutexA處。
―――――――――――――――――――――――――――――――――
二、Magic Jump,避開IAT加密
取消以前斷點,下斷:BP GetModuleHandleA+5
77E59F93 837C24 04 00 cmp dword ptr ss:[esp+4],0
77E59F98 0F84 23060000 je kernel32.77E5A5C1//斷在這,注意看堆疊
77E59F9E FF7424 04 push dword ptr ss:[esp+4]
77E59FA2 E8 55080000 call kernel32.77E5A7FC
77E59FA7 85C0 test eax,eax
77E59FA9 74 08 je short kernel32.77E59FB3
77E59FAB FF70 04 push dword ptr ds:[eax+4]
77E59FAE E8 B0060000 call kernel32.GetModuleHandleW
77E59FB3 C2 0400 retn 4
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
注意看BP GetModuleHandleA+5 時的堆疊變化:
0012E210 003C5DC8 返回到 003C5DC8 來自 kernel32.GetModuleHandleA
0012E214 003DA7F8 ASCII "kernel32.dll"
0012E210 003C5DC8 返回到 003C5DC8 來自 kernel32.GetModuleHandleA
0012E214 003DA7EC ASCII "user32.dll"
0012E24C 003CF6BD 返回到 003CF6BD 來自 kernel32.GetModuleHandleA
0012E250 00BD1528 ASCII "WSOCK32.dll"
0012E230 003C622B 返回到 003C622B 來自 kernel32.GetModuleHandleA ★ OK
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
當堆疊如上變化後,就可以Alt+F9返回程式程式碼了。
003C6225 FF15 D4803D00 call dword ptr ds:[3D80D4]; kernel32.GetModuleHandleA
003C622B 8B4D 08 mov ecx,dword ptr ss:[ebp+8]
003C622E 3BC8 cmp ecx,eax
003C6230 75 07 jnz short 003C6239
003C6232 B8 98A33D00 mov eax,3DA398
003C6237 EB 30 jmp short 003C6269
003C6239 393D C8A73D00 cmp dword ptr ds:[3DA7C8],edi
003C623F B8 C8A73D00 mov eax,3DA7C8
003C6244 74 0C je short 003C6252//Magic Jump ★
直接修改003C6244 jmp 003C6252 因為這個東東使用的是Armadillo舊版加殼,所以這裡可以直接修改。
同時開始下面的第三步,以防程式直接執行!
―――――――――――――――――――――――――――――――――
三、401000段 記憶體斷點 大法,直達OEP
Alt+M 檢視記憶體,在401000開始的段上下 記憶體訪問斷點,F9執行,直接中斷在OEP處
0040DED2 55 push ebp//用LordPE糾正ImageSize後完全DUMP這個程式
0040DED3 8BEC mov ebp,esp
0040DED5 6A FF push -1
0040DED7 68 38C34200 push StayOn_P.0042C338
0040DEDC 68 8C054100 push StayOn_P.0041058C
0040DEE1 64:A1 00000000 mov eax,dword ptr fs:[0]
0040DEE7 50 push eax
0040DEE8 64:8925 00000000 mov dword ptr fs:[0],esp
0040DEEF 83EC 58 sub esp,58
0040DEF2 53 push ebx
0040DEF3 56 push esi
0040DEF4 57 push edi
0040DEF5 8965 E8 mov dword ptr ss:[ebp-18],esp
0040DEF8 FF15 90824200 call dword ptr ds:[428290] ; kernel32.GetVersion
執行ImportREC 1.6,選擇這個程式。把OEP改為0000DED2,點IT AutoSearch,所有的函式都是有效的。點“Get Import”,FixDump,正常執行!
―――――――――――――――――――――――――――――――――
四、破解
脫殼後的程式可以正常執行了,已經不需要註冊了,時間限制也沒用了。但是啟動時的要求註冊的NAG居然還彈了出來,這使我疑惑了一會兒,沒脫完?載入Ollydbg裡看看,真相大白了!原來作者把註冊介面寫進了主程式,註冊驗證依舊是在Armadillo殼裡面進行。繼續搞定他!
00404A46 E8 B18B0000 call dumped_.0040D5FC//判斷是否已經註冊
00404A4B 59 pop ecx
00404A4C 85C0 test eax,eax
00404A4E 59 pop ecx
00404A4F 75 11 jnz short dumped_.00404A62//跳就彈出要求註冊的NAG
00404A51 C787 D0000000010000 mov dword ptr ds:[edi+D0],1
00404A5B 33DB xor ebx,ebx
00404A5D E9 3C010000 jmp dumped_.00404B9E
00404A62 83A7 D0000000 00 and dword ptr ds:[edi+D0],0
00404A69 6A 0E push 0E
00404A6B 53 push ebx
00404A6C 68 40434300 push dumped_.00434340; ASCII "DAYSINSTALLED"
00404A71 FF15 D4814200 call dword ptr ds:[<&kernel32.GetEnvironmentVariableA>]
00404A77 8D45 DC lea eax,dword ptr ss:[ebp-24]
00404A7A 53 push ebx
00404A7B 50 push eax
00404A7C 8BCF mov ecx,edi
00404A7E E8 EFFCFFFF call dumped_.00404772
00404A83 50 push eax
00404A84 8D8F 30010000 lea ecx,dword ptr ds:[edi+130]
00404A8A C645 FC 02 mov byte ptr ss:[ebp-4],2
00404A8E E8 7F6B0100 call dumped_.0041B612
00404A93 8D4D DC lea ecx,dword ptr ss:[ebp-24]
00404A96 C645 FC 01 mov byte ptr ss:[ebp-4],1
00404A9A E8 7E6A0100 call dumped_.0041B51D
00404A9F 8B87 D4000000 mov eax,dword ptr ds:[edi+D4]
00404AA5 8D8F D4000000 lea ecx,dword ptr ds:[edi+D4]
00404AAB FF90 B8000000 call dword ptr ds:[eax+B8]
00404AB1 83BF 34010000 01 cmp dword ptr ds:[edi+134],1
00404AB8 8B87 AC020000 mov eax,dword ptr ds:[edi+2AC]
00404ABE 74 29 je short dumped_.00404AE9
00404AC0 50 push eax
00404AC1 68 50434300 push dumped_.00434350 ; ASCII "sop"
00404AC6 8BCF mov ecx,edi
00404AC8 E8 4FFCFFFF call dumped_.0040471C//呼叫ArmAccess.DLL驗證註冊碼 ★
00404ACD 85C0 test eax,eax
00404ACF 74 18 je short dumped_.00404AE9
00404AD1 6A 00 push 0
00404AD3 6A 00 push 0
00404AD5 68 18434300 push dumped_.00434318; ASCII "Thank You For registering StayOn Pro!"
00404ADF C787 D0000000010000 mov dword ptr ds:[edi+D0],1
00404AE9 6A 08 push 8
00404AEB 53 push ebx
00404AEC 68 10434300 push dumped_.00434310 ; ASCII "EXPIRED"//過期
00404AF1 FF15 D4814200 call dword ptr ds:[<&kernel32.GetEnvironmentVariableA>]
00404AF7 53 push ebx
00404AF8 8D4D F0 lea ecx,dword ptr ss:[ebp-10]
00404AFB E8 476A0100 call dumped_.0041B547
00404B00 68 08434300 push dumped_.00434308 ; ASCII "True"
已經脫殼了當然找不到ArmAccess.DLL驗證註冊碼啦,我們索性幫忙一下,呵呵。
00404A4F 75 11 jnz short dumped_.00404A62//NOP掉!
這樣啟動時候的NAG永不再來了,About裡面也是Registered了!
―――――――――――――――――――――――――――――――――
, _/
/| _.-~/ _ , 青春都一晌
( /~ / ~-._ |
`\ _/ ~ ) 忍把浮名
_-~~~-.) )__/;;,. _ //'
/'_, --~ ~~~- ,;;___( (.-~~~-. 換了破解輕狂
`~ _( ,_..-- ( ,;'' / ~-- /._`
/~~//' /' `~ ) /--.._, )_ `~
" `~" " `" /~'` `\~~
" " "~' ""
Cracked By 巢水工作坊――fly [OCN][FCG][NUKE][DCM]
2004-03-16 16:16
相關文章
- Armadillo 3.6主程式脫殼2015-11-15
- 壹次脫殼法――Armadillo 雙程式標準殼 快速脫殼2015-11-15
- Armadillo V3.01標準加殼方式的脫殼(第一篇)--SoundEdit
Pro2015-11-15
- Armadillo V3.6雙程式標準殼 ------神速脫殼大法2015-11-15
- Armadillo3.60
加殼的EXE檔案脫殼全過程2004-09-08
- 以殼解殼--SourceRescuer脫殼手記破解分析2004-11-16
- 關於雙程式Armadillo標準殼的脫法2015-11-15
- 另類PEtite V2.2 脫殼+修復+破解――英漢漢英雙向學習詞典
V1.02015-11-15
- Blaze Media Pro5.05脫殼+基本修復CC(int3)+破解2015-11-15
- MySQL Manager 2.8.0.1脫殼破解手記破解分析2004-11-03MySql
- Armadillo殼時間問題的解決And脫殼――Mr.Captor
V2.82015-11-15APT
- Armadillo 2.52加殼原理分析和改進的脫殼方法
(12千字)2015-11-15
- “天音怒放”手動脫殼及破解2015-11-15
- 菜鳥脫 UltraFXP 0.9941 殼( SVKP )+ 破解2015-11-15
- 脫Flashfxp 1.3 build 780的殼 (10千字)2001-08-15UI
- 實戰Armadillo V3.60標準加殼方式的脫殼――WinXP的Notepad2015-11-15
- Armadillo V2.xx標準加殼方式的脫殼(第二篇)--Virtual
Personality 4.02015-11-15
- jdpack的脫殼及破解 (5千字)2002-06-25
- 手動脫ASProtect 的殼-Synchromagic
v3.5 build 5572003-08-03UI
- 轉貼一篇:FlashFXP v1.4.1 build 823 的脫殼與破解 (16千字)2001-12-30UI
- 《Erlang
4.08》另類破解手記2002-06-24
- Vampp 2.0.8 Build 311的脫殼(Vbox 4.10)2000-12-06UI
- 用Armadillo標準加殼的程式的脫殼和引入表修復方案---OLLYDBG (8千字)2015-11-15
- 殼的工作原理脫殼2013-04-10
- 脫Advanced Email Extractor PRO的殼 (19千字)2001-08-19AI
- VBExplorer.exe脫殼教程
附脫殼指令碼2015-11-15指令碼
- 不脫殼破解極光多能鬧鐘
(16千字)2003-04-14
- iRider.exe
2.20BETA主程式脫殼 Armadillo 1.xx - 2.xx2004-07-30IDE
- 魔術情書
6.55 破解過程+不脫殼打破解補丁【原創】2004-12-07
- [轉載]快速判斷Armadillo殼版本2004-08-24
- ExeStealth 常用脫殼方法 + ExeStealth V2.72主程式脫殼2015-11-15
- 光碟機護理2.0 另類破解法 (857字)2000-10-05
- Asprotect1.23 Rc4 之SynchroMagic脫殼修復+破解2015-11-15
- 不脫殼破解ACDSee v3.0 trial build 1209(SMC初步,很詳細,國外文章)
(8千字)2001-10-04UI
- 關於Armadillo 1.8x-2.x的anti-debug&加殼原理初步探討和脫殼方法
(12千字)2002-04-11
- 脫殼基本知識2015-11-15
- SoftDefender主程式脫殼2015-11-15
- 明月幾時有――ASProtect
V1.31 build 06.14主程式 脫殼2004-10-01UI