Armadillo殼時間問題的解決And脫殼――Mr.Captor V2.8

看雪資料發表於2015-11-15

Armadillo殼時間問題的解決And脫殼――Mr.Captor V2.8
    
 
  
下載頁面:  http://www.skycn.com/soft/11437.html
軟體大小:  1718 KB
軟體語言:  英文
軟體類別:  國外軟體 / 共享版 / 影像捕捉
應用平臺:  Win9x/NT/2000/XP
加入時間:  2004-02-15 11:01:12
下載次數:  2628
推薦等級:  ****

【軟體簡介】:Mr.Captor 是一個非常好用的螢幕截圖程式!他可以幫助你把看到的任何圖片忠實的保留下來!並可以儲存為BMP, PCX, GIF, JPEG, PNG, TIFF, TGA, CUR, ICO, AVI等格式!支援自定義熱鍵!非常容易使用呀!

【作者宣告】:只是感興趣,沒有其他目的。失誤之處敬請諸位大俠賜教!

【除錯環境】:WinXP、Ollydbg、PEiD、LordPE、ImportREC

――――――――――――――――――――――――――――――――― 
【脫殼過程】:
          
     
    
我的系統時間是“變幻莫測”的,呵呵,為了測試軟體的緣故經常更改系統時間。Mr.Captor V2.8 執行後提示:“Your system clock appears to have been set back,possibly in an attempt to defeat the security system on this program. Please correct your system clock before trying to run this program again. If your clock is correct, please contact the author of this program for instructions on correcting this error (report code 0,1995,1903)”。 然後程式退出拒絕執行了。

今天就來解決這個“System Clock Set Back”的問題。

Mr.Captor V2.8是Armadillo標準殼。設定Ollydbg忽略所有的異常選項。

―――――――――――――――――――――――――――――――――
一、解決“System Clock Set Back”的問題



BP CompareFileTime  斷下後取消斷點,Ctrl+F9返回程式

77E51702     8B4424 04           mov eax,dword ptr ss:[esp+4]//斷在這,Ctrl+F9返回
77E51706     8B4C24 08           mov ecx,dword ptr ss:[esp+8]
77E5170A     8B10                mov edx,dword ptr ds:[eax]
77E5170C     8B40 04             mov eax,dword ptr ds:[eax+4]
77E5170F     56                  push esi
77E51710     8B31                mov esi,dword ptr ds:[ecx]
77E51712     8B49 04             mov ecx,dword ptr ds:[ecx+4]
77E51715     3BC1                cmp eax,ecx
77E51717     0F87 D4E5FFFF       ja kernel32.77E4FCF1
77E5171D     73 07               jnb short kernel32.77E51726
77E5171F     83C8 FF             or eax,FFFFFFFF
77E51722     5E                  pop esi
77E51723     C2 0800             retn 8//返回 00D55088


00D55088     85C0                test eax,eax//Ctrl+F9返回
   …… …… 省 略 …… ……
00D550C7     C3                  retn//返回 00D5854B


00D58546     E8 64CAFFFF         call 00D54FAF
00D5854B     84C0                test al,al//返回這裡
00D5854D     59                  pop ecx
00D5854E     74 43               je short 00D58593

00D58593     3BFB                cmp edi,ebx
00D58595     74 08               je short 00D5859F

00D5859F     8B45 F0             mov eax,dword ptr ss:[ebp-10]
00D585A2     3BC3                cmp eax,ebx
00D585A4     74 56               je short 00D585FC//在這裡改變標誌位Z=1使其跳轉!★

00D585FC     A1 3CCAD700         mov eax,dword ptr ds:[D7CA3C]
00D58601     3918                cmp dword ptr ds:[eax],ebx
00D58603     75 67               jnz short 00D5866C//在這裡改變標誌位Z=0使其跳轉!★

00D5866C     60                  pushad//到這裡就OK啦  :-)
00D5866D     33C0                xor eax,eax
00D5866F     75 02               jnz short 00D58673


在00D585A4和00D58603處改變標誌位,使這2個地方跳轉就避開“System Clock Set Back”的問題了。注意:不要直接修改程式碼,程式會出錯的。也可以跟蹤修改,使程式“FixClock”,接受現在的系統時間為合法時間。至於“Expired”的問題也在下面的程式碼段處理,修改跳轉就行了。


―――――――――――――――――――――――――――――――――
二、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//返回 00D26A5C

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
注意看BP GetModuleHandleA+5 時的堆疊:

0012BE5C    00D26A5C  返回到 00D26A5C 來自 kernel32.GetModuleHandleA
0012BE60    0012BF98  ASCII "kernel32.dll"
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

這次修改Magic Jump採用pyzpyz兄弟提出的方法,直接在這個時機返回程式

00D26A56     FF15 C4D0D400       call dword ptr ds:[D4D0C4]; kernel32.GetModuleHandleA
00D26A5C     8B0D B885D500       mov ecx,dword ptr ds:[D585B8]
00D26A62     89040E              mov dword ptr ds:[esi+ecx],eax
00D26A65     A1 B885D500         mov eax,dword ptr ds:[D585B8]
00D26A6A     393C06              cmp dword ptr ds:[esi+eax],edi
00D26A6D     75 16               jnz short 00D26A85
00D26A6F     8D85 B4FEFFFF       lea eax,dword ptr ss:[ebp-14C]
00D26A75     50                  push eax
00D26A76     FF15 CCD0D400       call dword ptr ds:[D4D0CC]; kernel32.LoadLibraryA
00D26A7C     8B0D B885D500       mov ecx,dword ptr ds:[D585B8]
00D26A82     89040E              mov dword ptr ds:[esi+ecx],eax
00D26A85     A1 B885D500         mov eax,dword ptr ds:[D585B8]
00D26A8A     393C06              cmp dword ptr ds:[esi+eax],edi
00D26A8D     0F84 AD000000       je 00D26B40//改為JMP  ★
00D26A93     33C9                xor ecx,ecx
00D26A95     8B03                mov eax,dword ptr ds:[ebx]
00D26A97     3938                cmp dword ptr ds:[eax],edi
00D26A99     74 06               je short 00D26AA1
00D26A9B     41                  inc ecx
00D26A9C     83C0 0C             add eax,0C
00D26A9F     EB F6               jmp short 00D26A97

看到上面GetModuleHandleA和LoadLibraryA了嗎?直接改00D26A8D jmp 00D26B40,此時修改程式碼很方便,不需要在IAT處理結束後再還原始碼了。 8)


――――――――――――――――――――――――――――――――― 
三、401000段 記憶體斷點 大法,直達OEP 

 

Alt+M 檢視記憶體,在401000開始的段上下 記憶體訪問斷點,F9執行,直接中斷在OEP處  

0043B0FF     55                  push ebp//在這兒用LordPE糾正ImageSize後完全DUMP這個程式
0043B100     8BEC                mov ebp,esp
0043B102     6A FF               push -1
0043B104     68 E0BC4700         push MrCaptor.0047BCE0
0043B109     68 A4A34300         push MrCaptor.0043A3A4
0043B10E     64:A1 00000000      mov eax,dword ptr fs:[0]
0043B114     50                  push eax
0043B115     64:8925 00000000    mov dword ptr fs:[0],esp
0043B11C     83EC 58             sub esp,58
0043B11F     53                  push ebx
0043B120     56                  push esi
0043B121     57                  push edi
0043B122     8965 E8             mov dword ptr ss:[ebp-18],esp
0043B125     FF15 EC034700       call dword ptr ds:[4703EC]; kernel32.GetVersion


執行ImportREC,選擇這個程式。把OEP改為0003B0FF,點IT AutoSearch,CUT掉無效函式。

我是在XP下脫殼的,若要脫殼後的程式能夠在98下正常執行,需修改以下2個函式:
1、000703B0  kernel32.dll  02AC  RestoreLastError  //改為:SetLastError
2、000709A0  winspool.drv  008F  DEVICECAPABILITIES//CUT掉!

FixDump,正常執行!可以簡單優化一下脫殼後的程式,用LordPE刪除text1和其下的adata、data1、pdata共4個區段,注意保留rsrc區段!然後再用LordPE重建PE,提示最小到50%,1.62M->835K。呵呵,精簡了許多。


――――――――――――――――――――――――――――――――― 
四、破解 



00428213     FFD7                call edi; kernel32.GetEnvironmentVariableA
00428215     85C0                test eax,eax
00428217     74 0C               je short dumped_.00428225//NOP掉就OK了  :-)
00428219     C783 B8020000 E7030>mov dword ptr ds:[ebx+2B8],3E7
00428223     EB 2D               jmp short dumped_.00428252

這樣修改之後About裡面的Unregistered和時間提示就沒用了,已然註冊。


―――――――――――――――――――――――――――――――――    
                                
         ,     _/ 
        /| _.-~/            _     ,        青春都一晌
       ( /~   /              ~-._ |
       `\  _/                   ~ )          忍把浮名 
   _-~~~-.)  )__/;;,.          _  //'
  /'_,   --~    ~~~-  ,;;___(  (.-~~~-.        換了破解輕狂
 `~ _( ,_..-- (     ,;'' /    ~--   /._` 
  /~~//'   /' `~         ) /--.._, )_  `~
  "  `~"  "      `"      /~'`    `\~~   
                         "     "   "~'  ""

    

     Cracked By 巢水工作坊――fly [OCN][FCG][NUKE][DCM]

                2004-03-18  19:30

相關文章