Mass Downloader v2.2.223 SR1解密分析(1) (10千字)
/////////////////////////////////////////////////////////////////////
//
// 目標軟體:Mass Downloader
//
// 軟體版本:v2.2.223 SR1
//
// 官方網站:http://www.metaproducts.com/
//
// 軟體授權:共享軟體
//
// 作業系統:Win95/98/ME、WinNT/2000
//
// 軟體簡介:
//
// 十分不錯的下載工具軟體,功能強大。支援多執行緒下載、斷點續傳,也具有
//
// 一定的下載檔案管理能力。
//
// 軟體保護:一般序列號保護、ASPACK加殼
//
/////////////////////////////////////////////////////////////////////
//
// 使用工具:TRW2000 v1.22 娃娃修改版
// (主要用於除錯分析)
//
// HIEW v6.70 Registered - CORE
// (16進位制編輯、製作SMC版本)
//
// Our Brain...:-)
//
/////////////////////////////////////////////////////////////////////
//
// 關於本文:本文主要目的在於教學,讓初學者掌握一些基本的脫殼方法及
//
// 軟體分析手段...請勿將此教程用於商業目的。
//
//
Always Your Best Friend: FiNALSErAPH
//
// 水平有限,難免疏漏...
//
// Any Question?
// Mail To: FiNALSErAPH@yahoo.com.cn
//
//
2001-12-21
//
/////////////////////////////////////////////////////////////////////
//
// 第一部分:註冊碼校驗分析 (以Single User License為例)
//
// 為了便於說明,使用FiNALSErAPH作使用者名稱,7878787878787878
//
// 為輸入的註冊碼
//
/////////////////////////////////////////////////////////////////////
//
// 為了更方便地找到註冊碼比對點,這裡使用HMEMCPY作為斷點,我假設讀者
//
// 已經熟悉這一過程...如果你仍感到困惑...:-)繼續努力吧
//
/////////////////////////////////////////////////////////////////////
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004EDDEA(C)
|
:004EDE0A 8D55FC
lea edx, dword ptr [ebp-04]
:004EDE0D 8B83EC020000 mov eax, dword
ptr [ebx+000002EC]
:004EDE13 E8ACAAF4FF call 004388C4
//我們以HMEMCPY作斷點,F12多次,會
//來到此處...
:004EDE18 8D55F8
lea edx, dword ptr [ebp-08]
:004EDE1B 8B83F4020000 mov eax, dword
ptr [ebx+000002F4]
:004EDE21 E89EAAF4FF call 004388C4
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004EDE08(U)
|
* Possible StringData Ref from Code Obj ->"U = "
|
:004EDE26 68CCDF4E00 push 004EDFCC
:004EDE2B FF75FC
push [ebp-04]
* Possible StringData Ref from Code Obj ->", K = "
|
:004EDE2E 68DCDF4E00 push 004EDFDC
:004EDE33 FF75F8
push [ebp-08]
:004EDE36 8D45F4
lea eax, dword ptr [ebp-0C]
:004EDE39 BA04000000 mov edx,
00000004
:004EDE3E E8C962F1FF call 0040410C
:004EDE43 8B55F4
mov edx, dword ptr [ebp-0C]
:004EDE46 8B07
mov eax, dword ptr [edi]
:004EDE48 E837DC0000 call 004FBA84
:004EDE4D 8D55FC
lea edx, dword ptr [ebp-04]
:004EDE50 8B07
mov eax, dword ptr [edi]
:004EDE52 8B4DF8
mov ecx, dword ptr [ebp-08]
:004EDE55 E8FAE70100 call 0050C654
:004EDE5A 84C0
test al, al
:004EDE5C 0F848C000000 je 004EDEEE
//很明顯,上面的呼叫就是校驗的核心
//F8進入004EDE55處的呼叫
/////////////////////////////////////////////////////////////////////
* Referenced by a CALL at Addresses:
|:004EDE55 , :004F9885
|
:0050C654 55
push ebp
:0050C655 8BEC
mov ebp, esp
:0050C657 6A00
push 00000000
:0050C659 6A00
push 00000000
:0050C65B 6A00
push 00000000
:0050C65D 6A00
push 00000000
:0050C65F 6A00
push 00000000
:0050C661 53
push ebx
:0050C662 894DFC
mov dword ptr [ebp-04], ecx
:0050C665 8BDA
mov ebx, edx
:0050C667 8B45FC
mov eax, dword ptr [ebp-04]
:0050C66A E8917BEFFF call 00404200
:0050C66F 33C0
xor eax, eax
:0050C671 55
push ebp
:0050C672 6857CB5000 push 0050CB57
:0050C677 64FF30
push dword ptr fs:[eax]
:0050C67A 648920
mov dword ptr fs:[eax], esp
:0050C67D C645FB00 mov
[ebp-05], 00
:0050C681 8B55FC
mov edx, dword ptr [ebp-04]
* Possible StringData Ref from Code Obj ->"dqma"
|
:0050C684 B870CB5000 mov eax,
0050CB70
:0050C689 E8AA7CEFFF call 00404338
:0050C68E 85C0
test eax, eax
:0050C690 7E12
jle 0050C6A4
:0050C692 8D55FC
lea edx, dword ptr [ebp-04]
:0050C695 8BC3
mov eax, ebx
:0050C697 E804F6FFFF call 0050BCA0
:0050C69C 8845FB
mov byte ptr [ebp-05], al
:0050C69F E990040000 jmp 0050CB34
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0050C690(C)
|
:0050C6A4 8B03
mov eax, dword ptr [ebx]
* Possible StringData Ref from Code Obj ->"angus rod"
|
:0050C6A6 BA80CB5000 mov edx,
0050CB80
:0050C6AB E8AC7AEFFF call 0040415C
:0050C6B0 0F847E040000 je 0050CB34
:0050C6B6 8B03
mov eax, dword ptr [ebx]
* Possible StringData Ref from Code Obj ->"Henry Hooker"
|
:0050C6B8 BA94CB5000 mov edx,
0050CB94
:0050C6BD E89A7AEFFF call 0040415C
:0050C6C2 0F846C040000 je 0050CB34
:0050C6C8 8B03
mov eax, dword ptr [ebx]
* Possible StringData Ref from Code Obj ->"David Arthurs"
|
:0050C6CA BAACCB5000 mov edx,
0050CBAC
:0050C6CF E8887AEFFF call 0040415C
:0050C6D4 0F845A040000 je 0050CB34
:0050C6DA 8B03
mov eax, dword ptr [ebx]
.
.
.
//這是很長的一串程式,且重複性很強。說白了,作者寫的BlackList
//(哈哈,我倒是希望作者將我的Nick加入...:-))
//我們直接略過,來到下面地址
* Possible StringData Ref from Code Obj ->"Mass Downloader 1"
|
:0050CA33 6894CF5000 push 0050CF94
:0050CA38 FF33
push dword ptr [ebx]
* Possible StringData Ref from Code Obj ->"Single"
|
:0050CA3A 68B0CF5000 push 0050CFB0
:0050CA3F 8D45F4
lea eax, dword ptr [ebp-0C]
:0050CA42 BA03000000 mov edx,
00000003
:0050CA47 E8C076EFFF call 0040410C
:0050CA4C BB01000000 mov ebx,
00000001
:0050CA51 EB2B
jmp 0050CA7E
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0050CA88(C)
|
:0050CA53 8B45FC
mov eax, dword ptr [ebp-04]
:0050CA56 8A4418FF mov
al, byte ptr [eax+ebx-01]
:0050CA5A 04D0
add al, D0
:0050CA5C 2C0A
sub al, 0A
:0050CA5E 721D
jb 0050CA7D
:0050CA60 04F9
add al, F9
:0050CA62 2C1A
sub al, 1A
:0050CA64 7217
jb 0050CA7D
:0050CA66 04FA
add al, FA
:0050CA68 2C1A
sub al, 1A
:0050CA6A 7211
jb 0050CA7D
:0050CA6C 8D45FC
lea eax, dword ptr [ebp-04]
:0050CA6F B901000000 mov ecx,
00000001
:0050CA74 8BD3
mov edx, ebx
:0050CA76 E81978EFFF call 00404294
:0050CA7B EB01
jmp 0050CA7E
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0050CA5E(C), :0050CA64(C), :0050CA6A(C)
|
:0050CA7D 43
inc ebx
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0050CA51(U), :0050CA7B(U)
|
:0050CA7E 8B45FC
mov eax, dword ptr [ebp-04]
//在這裡,D EAX就可以見到我們輸入的
//錯誤註冊碼,下BPM EAX的斷點,F5繼
//續(按2次,就會發現如下的經典比對)。
/////////////////////////////////////////////////////////////////////
//經典比對程式片段
:00404185 8B0E
mov ecx, dword ptr [esi]
:00404187 8B1F
mov ebx, dword ptr [edi]
:00404189 39D9
cmp ecx, ebx
:0040418B 7558
jne 004041E5
//在這裡分別D ESI、D EDI就可以看到
//參與比對的字串,一個是我們輸入
//的錯誤註冊碼,另一個...:-)趕緊用
//筆記錄下來。
//在此處,我的使用者名稱對應的值為:
//8856852571979FL
//88568-52571979-FL(v2.2.212)
//這個版本似乎沒有對格式作嚴格要求
/////////////////////////////////////////////////////////////////////
:0050CA81 E8C675EFFF call 0040404C
:0050CA86 3BD8
cmp ebx, eax
:0050CA88 7EC9
jle 0050CA53
.
.
.
//找到正確的註冊碼了? 恐怕高興得太早了...:-)不信試試看...
//此處還有如下的關鍵比對點
* Possible StringData Ref from Data Obj ->")?"
|
:0050CB1F B818455400 mov eax,
00544518
//此處D EAX,可以看到...我想是作者計
//算出的正版使用者資訊吧
//(這只是猜測,沒有作具體分析)
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0050CB32(C)
|
:0050CB24 3B10
cmp edx, dword ptr [eax]
//注意此處的EDX值,這是由我的使用者名稱
//算出的待校驗值。我這裡是03222F4B
:0050CB26 7506
jne 0050CB2E
:0050CB28 C645FB01 mov
[ebp-05], 01
//呵呵,是否註冊成功的標誌。我可不是
//正版使用者,所以按照正常流程,我不可
//能到達這裡,不過如果我將此時EDX的
//值預先置於00544518指向的地址空間,
//我就可以成功註冊
:0050CB2C EB06
jmp 0050CB34
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0050CB26(C)
|
:0050CB2E 83C004
add eax, 00000004
:0050CB31 4B
dec ebx
:0050CB32 75F0
jne 0050CB24
.
.
.
//哦,錯誤註冊的出口
相關文章
- EVC.SerialMe.Beta解密分析 (17千字)2002-03-13解密
- Eclipse 4.2 SR1版悄悄釋出2012-10-01Eclipse
- 解密標準操作流程-----解密技術規範之總則 (1千字)2015-11-15解密
- PECompact.v1.80.b2解密分析(SMC) - By
A Lamer...:) (6千字)2002-05-09解密
- 以太坊原始碼分析(34)eth-downloader原始碼分析2018-05-14原始碼
- 序號產生器制分析: (1千字)2001-11-19
- 五筆輸入通1.x註冊演算法分析
(10千字)2015-11-15演算法
- 以太坊原始碼分析(31)eth-downloader-peer原始碼分析2018-05-14原始碼
- 以太坊原始碼分析(32)eth-downloader-peer原始碼分析2018-05-14原始碼
- 以太坊原始碼分析(33)eth-downloader-statesync原始碼分析2018-05-14原始碼
- 死磕以太坊原始碼分析之downloader同步2020-12-23原始碼
- Readbook 1.42版 演算法分析。 (1千字)2015-11-15演算法
- PC 安全虎[Beta 1]演算法分析 (6千字)2001-12-05演算法
- linux gadget u盤(Mass storage)2021-01-04Linux
- CPUCOOL 5.1000註冊碼分析 (6千字)2001-01-19
- rOYALaCCEZZ Trial Crackme 3.2 演算法分析 (10千字)2002-02-27演算法
- 加解密演算法分析2020-06-29解密演算法
- 小李登錄檔大師 v1.41 註冊演算法分析--獻給 LILITH 和解密演算法初學者 (10千字)2001-11-09演算法解密
- KV3XXX解密過程 By: CHINA 2000.10.28 (3千字)2000-10-29解密
- JVM原始碼分析之Metaspace解密2020-07-15JVM原始碼解密
- 好工具,SWOT分析大解密!2022-08-22解密
- SDWebImage Source Probe: Downloader2016-10-07Web
- 破解winimage (1千字)2001-10-07
- FI原理 (1千字)2001-10-22
- 千字乾貨分享 | 講透資料分析,10倍提升你的分析力2022-03-08
- 對一種加密保護的思想的一點分析..... (1千字)2001-05-11加密
- 初學者(12) (1千字)2000-06-09
- 初學者(17) (1千字)2000-07-04
- 翻譯(1) (6千字)2000-07-22
- 破解“Mail Scan” (1千字)2000-08-04AI
- 初學者(20) (1千字)2000-08-08
- 初學者(27) (1千字)2000-08-25
- 博奧彩票分析系統千禧版破解實錄 (1千字)2000-12-30
- UltraEdit-32
10註冊碼演算法分析 (19千字)2003-05-17演算法
- MASS雜湊模式系統開發流程詳情2022-04-12模式
- 轉貼一個,linux 解密,www.zoudan.com (8千字)2001-04-14Linux解密
- 華表3.34專業版解密過程及思考 (3千字)2001-08-22解密
- Windows系統下EFS加密解密原理分析2019-12-05Windows加密解密