我的overlay(附加資料)處理再學習

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

【破解作者】 stasi[DCM][BCG][DFCG][FCG][OCN][CZG][D.4s]
【作者郵箱】 stasi@163.com
【作者主頁】 stasi.7169.com
【使用工具】 ollydbg winhex
【破解平臺】 Win9x/NT/2000/XP
【軟體名稱】 封神榜掛機加速外掛2.1
【下載地址】 www.wgdown.com祈禱工作室
【軟體簡介】 封神榜變態外掛:需收費使用者才能正常使用;
             本外掛收費為300元/年(提供升級)
             200元/半年(提供升級)
【軟體大小】 5m
【加殼方式】 aspack
【破解宣告】 我是一隻小菜鳥,偶得一點心得,願與大家分享:)
--------------------------------------------------------------------------------
【破解內容】


看了Lenus剛寫的《淺談脫殼中的附加資料問題(overlay)》一文,大呼過癮,概念明晰,結構清爽!
正好看到論壇裡有人給了東西,我就拿來自學了:)

 peid ->ASPack 2.12 -> Alexey Solodovnikov [重疊]

怎麼脫殼和文章無關,stripper或修api都可以的

執行脫殼後的東西,彈出搭建之星的對話方塊,說明原有的尾部資料沒有被正確讀入,要修正的!

理論部分可以看《淺彈》,我寫就有點垃圾了,可以跳過不看:)
00616070     8B45 F8              mov eax,dword ptr ss:[ebp-8]
00616073     BA B0616100          mov edx,fsbwg21.006161B0       ; ASCII "FSJM IPD W32"
00616078     E8 DBEDDEFF          call fsbwg21.00404E58
0061607D     0F85 E4000000        jnz fsbwg21.00616167
00616083     8B03                 mov eax,dword ptr ds:[ebx]
00616085     8B10                 mov edx,dword ptr ds:[eax]
00616087     FF12                 call dword ptr ds:[edx]

ds:[0041CD34]=004218B4 (fsbwg21.004218B4)

00616089     52                   push edx
0061608A     50                   push eax
0061608B     8B06                 mov eax,dword ptr ds:[esi]
0061608D     99                   cdq
0061608E     290424               sub dword ptr ss:[esp],eax    

eax=0000000C
Stack ss:[0012FF24]=000D267F

00616091     195424 04            sbb dword ptr ss:[esp+4],edx
00616095     58                   pop eax
00616096     5A                   pop edx
00616097     83E8 08              sub eax,8
0061609A     83DA 00              sbb edx,0
0061609D     52                   push edx
0061609E     50                   push eax
0061609F     8B03                 mov eax,dword ptr ds:[ebx]
006160A1     E8 FAB7E0FF          call fsbwg21.004218A0

004218A0=fsbwg21.004218A0

006160A6     8D55 F0              lea edx,dword ptr ss:[ebp-10]
006160A9     8B03                 mov eax,dword ptr ds:[ebx]
006160AB     B9 04000000          mov ecx,4
006160B0     E8 F7B9E0FF          call fsbwg21.00421AAC
006160B5     8B45 F0              mov eax,dword ptr ss:[ebp-10]
Stack ss:[0012FF58]=000D265A

006160B8     99                   cdq
006160B9     52                   push edx
006160BA     50                   push eax
006160BB     8B03                 mov eax,dword ptr ds:[ebx]
006160BD     E8 DEB7E0FF          call fsbwg21.004218A0
006160C2     8BD6                 mov edx,esi
006160C4     8B03                 mov eax,dword ptr ds:[ebx]
006160C6     B9 04000000          mov ecx,4
006160CB     E8 DCB9E0FF          call fsbwg21.00421AAC
006160D0     8B06                 mov eax,dword ptr ds:[esi]
006160D2     3B45 F0              cmp eax,dword ptr ss:[ebp-10]
006160D5     74 37                je short fsbwg21.0061610E
006160D7     8D45 F8              lea eax,dword ptr ss:[ebp-8]
006160DA     8B16                 mov edx,dword ptr ds:[esi]
006160DC     E8 B7EFDEFF          call fsbwg21.00405098
006160E1     8B55 F8              mov edx,dword ptr ss:[ebp-8]
006160E4     8B03                 mov eax,dword ptr ds:[ebx]
006160E6     8B0E                 mov ecx,dword ptr ds:[esi]
006160E8     E8 BFB9E0FF          call fsbwg21.00421AAC
006160ED     8BD6                 mov edx,esi
006160EF     8B03                 mov eax,dword ptr ds:[ebx]
006160F1     B9 04000000          mov ecx,4
006160F6     E8 B1B9E0FF          call fsbwg21.00421AAC
006160FB     A1 342E6200          mov eax,dword ptr ds:[622E34]
00616100     8B00                 mov eax,dword ptr ds:[eax]
00616102     8B0E                 mov ecx,dword ptr ds:[esi]
00616104     8B55 F8              mov edx,dword ptr ss:[ebp-8]
00616107     8B38                 mov edi,dword ptr ds:[eax]
00616109     FF57 3C              call dword ptr ds:[edi+3C]
0061610C   ^ EB B4                jmp short fsbwg21.006160C2
0061610E     8D55 E4              lea edx,dword ptr ss:[ebp-1C]
00616111     A1 342D6200          mov eax,dword ptr ds:[622D34]
00616116     8B00                 mov eax,dword ptr ds:[eax]
00616118     E8 8B15E9FF          call fsbwg21.004A76A8
0061611D     8B45 E4              mov eax,dword ptr ss:[ebp-1C]
00616120     8D55 E8              lea edx,dword ptr ss:[ebp-18]
00616123     E8 4841DFFF          call fsbwg21.0040A270
00616128     8B55 E8              mov edx,dword ptr ss:[ebp-18]
0061612B     A1 242B6200          mov eax,dword ptr ds:[622B24]
00616130     E8 6BE9DEFF          call fsbwg21.00404AA0
00616135     8D4D DC              lea ecx,dword ptr ss:[ebp-24]
00616138     A1 342E6200          mov eax,dword ptr ds:[622E34]
0061613D     8B00                 mov eax,dword ptr ds:[eax]
0061613F     33D2                 xor edx,edx
00616141     8B18                 mov ebx,dword ptr ds:[eax]
00616143     FF53 0C              call dword ptr ds:[ebx+C]
00616146     8B55 DC              mov edx,dword ptr ss:[ebp-24]
00616149     8D4D E0              lea ecx,dword ptr ss:[ebp-20]
0061614C     A1 242B6200          mov eax,dword ptr ds:[622B24]
00616151     8B00                 mov eax,dword ptr ds:[eax]
00616153     E8 740BEBFF          call fsbwg21.004C6CCC
00616158     8B55 E0              mov edx,dword ptr ss:[ebp-20]
0061615B     8B45 FC              mov eax,dword ptr ss:[ebp-4]
0061615E     E8 3DE9DEFF          call fsbwg21.00404AA0
00616163     B3 01                mov bl,1
00616165     EB 0D                jmp short fsbwg21.00616174
00616167     8B03                 mov eax,dword ptr ds:[ebx]
00616169     E8 8EDADEFF          call fsbwg21.00403BFC
0061616E     33C0                 xor eax,eax
00616170     8903                 mov dword ptr ds:[ebx],eax
00616172     33DB                 xor ebx,ebx
00616174     33C0                 xor eax,eax
00616176     5A                   pop edx
00616177     59                   pop ecx
00616178     59                   pop ecx
00616179     64:8910              mov dword ptr fs:[eax],edx
0061617C     68 9E616100          push fsbwg21.0061619E
00616181     8D45 DC              lea eax,dword ptr ss:[ebp-24]
00616184     BA 05000000          mov edx,5
00616189     E8 E2E8DEFF          call fsbwg21.00404A70
0061618E     8D45 F8              lea eax,dword ptr ss:[ebp-8]
00616191     E8 B6E8DEFF          call fsbwg21.00404A4C
00616196     C3                   retn
00616197   ^ E9 08E2DEFF          jmp fsbwg21.004043A4
0061619C   ^ EB E3                jmp short fsbwg21.00616181
0061619E     8BC3                 mov eax,ebx
006161A0     5F                   pop edi
006161A1     5E                   pop esi
006161A2     5B                   pop ebx
006161A3     8BE5                 mov esp,ebp
006161A5     5D                   pop ebp
006161A6     C3                   retn

看api參考:
DWORD SetFilePointer( 
                     HANDLE hFile,                  //在用CreateFileA開啟後得到的檔案控制程式碼
                     LONG lDistanceToMove,          //要移動的距離,這個是低32位
                     PLONG lpDistanceToMoveHigh,    //要移動的距離,這是高32位,要注意這是一個指向資料的指標
                     DWORD dwMoveMethod             //表示指標開始的位置
                     ); 

winhex裡,未脫殼的尾部資料:

000d264dh: 4E 3E 4E 3E 0A 4E 3E 4E 3E 00 00 00 00 09 00 00 ; N>N>.N>N>.......
000d265dh: 00 2E 5C 66 73 62 2E 49 50 44 00 24 0C 00 5A 26 ; ..\fsb.IPD.$..Z&
000d266dh: 0D 00 20 20 20 20 46 53 4A 4D 20 49 50 44 20 57 ; ..    FSJM IPD W
000d267dh: 33 32                                           ; 32

000C2400就對應:DWORD dwMoveMethod
000D265A就是指向長度的偏移地址
所以修復的兩個要點就是overlay的長度和overlay的開始地址!

要做的就是選中整個overlay的資料段,copy到脫殼檔案裡。
選000C2400為段開始,選000D267E為段結束,這就是整個overlay的資料段,編輯-》複製選塊-》正常。

winhex開啟脫殼後檔案,不需要費心找空白的地方,直接在最後一位元組後paste,因為winhex可以自動擴充套件檔案長度。

paste後檔案尾部地址和資料情況:

00259a4dh: 4E 3E 4E 3E 0A 4E 3E 4E 3E 00 00 00 00 09 00 00 ; N>N>.N>N>.......
00259a5dh: 00 2E 5C 66 73 62 2E 49 50 44 00 24 0C 00 5A 26 ; ..\fsb.IPD.$..Z&
00259a6dh: 0D 00 20 20 20 20 46 53 4A 4D 20 49 50 44 20 57 ; ..    FSJM IPD W
00259a7dh: 33 32      
                                     ; 32
檢視長度地址09的偏移量為00259A5A
所以修改000D265A為00259A5A
修改overlay資料開始地址,修改000C2400為00249800

修改後資料情況:
00259a4dh: 4E 3E 4E 3E 0A 4E 3E 4E 3E 00 00 00 00 09 00 00 ; N>N>.N>N>.......
00259a5dh: 00 2E 5C 66 73 62 2E 49 50 44 00 98 24 00 5A 9A ; ..\fsb.IPD.?.Z?
0259a6dh: 25 00 20 20 20 20 46 53 4A 4D 20 49 50 44 20 57 ; %.    FSJM IPD W
00259a7dh: 33 32                                           ; 32
儲存就ok了:)


--------------------------------------------------------------------------------
【破解總結】


這類overlay問題和《淺談脫殼中的附加資料問題(overlay)》所提到的overkay問題好象
是同屬一個問題的兩個型別。本文提到的overlay的處理時,是不能運用《淺談》一文裡爆
句的方法,因為這裡的資料雖然是附加資料,但是檔案資料的主體的一部分,缺少這部分數
據,檔案雖然能執行,但卻是沒有意義的!所以只能手動修正尾部的overlay資料。
這種資料產生的原因大概是dephi對附加資源的儲存過程中產生的,具體流程不太瞭解:(

以下給出這類dephi的overlay資料手動處理的快捷方法,無須使用ollydbg,有點機械,如有
錯誤望指出。
1)脫掉主檔案的殼,修復錯誤的輸入表
2)16進位制編輯器開啟原檔案,查詢文字“f2000”把所得的偏移量減去5就是原檔案裡overlay
資料的開始地址,copy至檔案尾部。
3)開啟脫殼後檔案,從檔案最後一位元組,開始貼上,並記起始地址為A.
4)再查詢文字“FSJM IPD W32”,所得的偏移量減去C就是存放起始地址的地方,用地址A代替
(注意資料的儲存方式)
5)最後用存放起始地址的地方前最近的“00 00 00 00”後一個位元組的偏移量替換存放起始地
址後的4位元組的內容,儲存就ok!

其實最好就是把外掛省下的錢給點xikug,forgot,老羅...寫個工具出來,“他們那個都是程式設計
強人,說了少了,他不幹,俺啊俺啊...”:)


--------------------------------------------------------------------------------
【版權宣告】 本文純屬技術交流, 轉載請註明作者並保持文章的完整, 謝謝!

相關文章