ASProtect 1.23 RC4 - 1.3.08.24-[Awicons V9.20 ]脫殼AND破解

看雪資料發表於2004-07-01

ASProtect 1.23 RC4 - 1.3.08.24-[Awicons V9.20 ]脫殼AND破解

【破解作者】 hmimys
【作者郵箱】 hmimys@163.com
【使用工具】 hmimysOD\PEID\LodePE\import\AsprDbgr
【破解平臺】 WinXP
【軟體名稱】 Awicons V9.20 
【保護方式】 ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov
【下載地址】 天空軟體站  http://www2.skycn.com/soft/12033.html
【軟體簡介】 說明: Awicons 是一個搜尋,建立,編輯,匯入/匯出,管理圖示,游標,和小型圖片的強力工具!具體功能如下:
                  1.全面支援Windows XP的圖示!
                  2.支援包括ico, cur, ani, png, gif, bmp, jpg在內的多種檔案格式!
                  3.支援所有的顏色格式!包括mono, 16, 256, true-color, true-color with alpha!
                  4.最大可以建立128 x 128 大小的圖示!
                  5.可以自動對硬碟裡的圖示,游標和圖片進行掃描!
                  6.自帶多種畫筆,多種強力慮鏡,使你的編輯建立更加輕鬆自如!
                  7.支援直接從dll,EXE檔案中提取圖示!
                  8.支援圖示庫!
                  9.等等。
【破解宣告】 只是感興趣,沒有其他目的。失誤之處敬請諸位大俠賜教!
【脫殼破解】
 一、尋找OEP 
==================================================================================================
用IsDebug 1.4外掛去掉Ollydbg的偵錯程式標誌。 
設定Ollydbg忽略除了“記憶體訪問異常”之外的所有其他異常選項。 
00401000 >  68 01E05900     push AWicons.0059E001-----------------?進入OD後斷在這裡
按F9執行程式。程式出現記憶體訪問異常,按Shift+F9跳過,一連按22次,來到下面這個地方:
00F246A5    3100            xor dword ptr ds:[eax], eax
00F246A7    EB 01           jmp short 00F246AA
00F246A9    68 648F0500     push 58F64
00F246AE    0000            add byte ptr ds:[eax], al
00F246B0    00EB            add blch
00F246B2    02E8            add chal
00F246B4    0158 A1         add dword ptr ds:[eax-5F], ebx
此時堆疊內容:
00AFFF38   00AFFF44  指標到下一個 SEH 記錄
00AFFF3C   00F2465C  SE 控制程式碼
00AFFF40   00F39ED8  ASCII "+xRgBwCgF/M="
00AFFF44   00AFFFE0  指標到下一個 SEH 記錄
00AFFF48   00F24C49  SE 控制程式碼
00AFFF4C   00AFFF90
00AFFF50   00F10000
00AFFF54   003D0000
00AFFF58   00F24138
00AFFF5C   00F39ED8  ASCII "+xRgBwCgF/M="
00AFFF60   00F23616  返回到 00F23616 來自 00F12524
按ALT+M 開啟記憶體映象選中:
記憶體映象,專案 23
 地址=00401000
 大小=000D9000 (888832.)
 Owner=AWicons  00400000
 區段=
 包含=code
 型別=Imag 01001002
 訪問=R
 初始訪問=RWE
在這行設定記憶體訪問斷點,Shift+F9執行中斷:
004088C0    8B4424 04       mov eaxdword ptr ss:[esp+4]
004088C4    A3 00945000     mov dword ptr ds:[509400], eax; ---------?這個地址是指向註冊名地址的了
004088C9    C2 0400         retn 4
清除記憶體斷點,然後記下這個[509400],後面要用到!
Shift+F9 3次直接來到下面這個熟悉的地方了!
00F24C22    3100            xor dword ptr ds:[eax], eax-----------?在這裡用LoadPE糾正映像大小後 
00F24C24    EB 01           jmp short 00F24C27                      Dump這個程式
00F24C26    68 648F0500     push 58F64
00F24C2B    0000            add byte ptr ds:[eax], al
00F24C2D    00EB            add blch
00F24C2F    02E8            add chal
00F24C31    0158 33         add dword ptr ds:[eax+33], ebx
00F24C34    C05A 59 59      rcr byte ptr ds:[edx+59], 59
00F24C38    64:8910         mov dword ptr fs:[eax], edx
00F24C3B    68 504CF200     push 0F24C50
00F24C40    8D45 CC         lea eaxdword ptr ss:[ebp-34]
00F24C43    E8 F8E7FEFF     call 00F13440
00F24C48    C3              retn
00F24C49  ^ E9 46E2FEFF     jmp 00F12E94
00F24C4E  ^ EB F0           jmp short 00F24C40
00F24C50    5F              pop edi
00F24C51    5E              pop esi
00F24C52    5B              pop ebx
00F24C53    8BE5            mov espebp
00F24C55    5D              pop ebp
00F24C56    C3              retn---------------------------------?F2下斷,Shift+F9執行,斷在這裡.
此時暫存器ESP=00AFFF94,我們直接在命令欄裡輸入HW 00afffc0 按F9執行,中斷3次後我們將斷斷續續的看到Stolen Code.
00F37761    8BEC            mov ebpesp***         沒有push ebp,到時我們補上!
00F37763    6A FF           push -1***              打***的均為Stolen Code          
00F37765    68 48944E00     push 4E9448***
00F3776A    68 ACCE4900     push 49CEAC***
00F3776F    64:A1 00000000  mov eaxdword ptr fs:[0]***
00F37775    66:8135 7E77F30>xor word ptr ds:[F3777E], 0A5EE
此時我們一路F7下來
00F377A2    50              push eax***
00F377A3    66:812D AC77F30>sub word ptr ds:[F377AC], 9A4
00F377AC    8F              ???                                      ; 未知命令
00F377B4    64:8925 0000000>mov dword ptr fs:[0], esp***
00F377BB    83EC 58         sub esp, 58***
00F377EB    53              push ebx***
00F377EC    66:812D F577F30>sub word ptr ds:[F377F5], 9A4
00F377F5    8F              ???                                      ; 未知命令
00F3782A    56              push esi***
00F3782B    66:812D 3478F30>sub word ptr ds:[F37834], 9A4
00F37834    8F              ???                                      ; 未知命令
00F37869    57              push edi***
00F3786A    66:812D 7378F30>sub word ptr ds:[F37873], 9A4
00F37873    8F              ???                                      ; 未知命令
下面還是一路F7
00F37622    BF 5F76F300     mov edi, 0F3765F
00F37627    B9 5E140000     mov ecx, 145E
00F3762C    F3:AA           rep stos byte ptr es:[edi]-------------------------------?這裡F8過
00F3762E    9D              popfd
00F3762F    5F              pop edi
00F37630    59              pop ecx
00F37631    C3              retn------------------------------------------------?這裡返回臨時OEP
0049EF43    0000            add byte ptr ds:[eax], al--------------------------?這裡就是真OEP了
0049EF45    0000            add byte ptr ds:[eax], al
0049EF47    0000            add byte ptr ds:[eax], al
0049EF49    0000            add byte ptr ds:[eax], al
0049EF4B    0000            add byte ptr ds:[eax], al
0049EF4D    0000            add byte ptr ds:[eax], al
0049EF4F    0000            add byte ptr ds:[eax], al
0049EF51    0000            add byte ptr ds:[eax], al
0049EF53    0000            add byte ptr ds:[eax], al
0049EF55    0000            add byte ptr ds:[eax], al
0049EF57    0000            add byte ptr ds:[eax], al
0049EF59    0000            add byte ptr ds:[eax], al
0049EF5B    0000            add byte ptr ds:[eax], al
0049EF5D    0000            add byte ptr ds:[eax], al
0049EF5F    0000            add byte ptr ds:[eax], al
0049EF61    0000            add byte ptr ds:[eax], al
0049EF63    0000            add byte ptr ds:[eax], al
0049EF65    0000            add byte ptr ds:[eax], al
0049EF67    0000            add byte ptr ds:[eax], al
0049EF69    FF15 24A34D00   call dword ptr ds:[4DA324]----------------?返回到這裡,我們向上看!
0049EF6F    33D2            xor edxedx
我們整理一下Stolen Code:
push ebp
mov ebpesp
push -1
push 004E9448
push 0049CEAC                
mov eaxdword ptr fs:[0]
push eax
mov dword ptr fs:[0], esp
sub esp, 58
push ebx
push esi
push edi
mov dword ptr ss:[ebp-18], esp
二、修復輸入表
==================================================================================================
用AsprDbgr載入Awicons 搞定輸入表:
AsprDbgr v1.0beta (:P) Made by me... Manko.
  iEP=401000 (C:\Program Files\AWicons\AWicons.exe)
    IAT Start: 4DA000
          End: 4DA770
       Length: 770
      IATentry 4DA1F8 = F21CD8 resolved as GetCommandLineA
      IATentry 4DA294 = F21CB8 resolved as GetCurrentProcess
      IATentry 4DA2D0 = F21C64 resolved as GetModuleHandleA
      IATentry 4DA324 = F21C8C resolved as GetVersion
      IATentry 4DA364 = F21CC8 resolved as LockResource
      IATentry 4DA390 = F217A4 resolved as GetProcAddress
    12 invalid entries erased.
  Dip-Table at adress: F27AB4
    0 4088C0 0 4088F0 4088D0 0 0 474F70 408900 409360 0 0 0 0
  Last SEH passed. (F239EE) Searching for signatures. Singlestepping to OEP!
    Call + OEP-jump-setup at: F37D25 ( Code: E8000000 5D81ED )
    Mutated, stolen bytes at: F37D71 ( Code: F3EB02CD 20EB0169 )
    Erase of stolen bytes at: F37CD4 ( Code: 9CFCBF13 7DF300B9 )
      Repz ... found. Skipping erase of stolen bytes. ;)
  possible (temp)OEP: 49EF69 (Reached from preOEP: F37CE5)
現在開啟IMPORT設定OEP為9EF69,然後就可以得到全部的iat,得到全部輸入表後把oep改回9EF43,當然,如果你喜歡的話
也可以一開始就設OEP 為9EF43。現在DUMP+FIXDUMP後程式還不能執行!
三、破解修復
==================================================================================================
用OD載入脫殼後的檔案,找塊空地方寫入Cracked by hmimys[D.4S]當然你也可以寫你的名字,我找的是004F300,然後D 509410
修改其值,使其指向004F300,至此脫殼破解全部完成!
在此特謝:
Fly.Forgot.jwh51.temerata.David.Yock.all of my friends and you!

相關文章