商舟@廣告直郵群發大師2002

看雪資料發表於2003-03-02

簡單演算法――商舟@廣告直郵群發大師2002

下載地址:  http://www.skycn.com/soft/7694.html
軟體大小:  592 KB
軟體語言:  簡體中文
軟體類別:  國產軟體 / 共享版 / 郵件群發
應用平臺:  Win9x/NT/2000/XP
加入時間:  2002-03-17 11:31:00
下載次數:  422
推薦等級:  ****
開 發 商:  http://www.bytesky.com/XMailer/index.html

【軟體簡介】: 正如我們去郵局發信一樣,網路郵件也有普通郵件和特快專遞之分,普通郵件需透過層層中間郵件伺服器進行中轉,速度慢,而且容易由於網路故障造成丟失,特別是如果您是一次性傳送上萬封的信件時,很容易被中間的某一個伺服器認定為垃圾郵件而被丟棄。商舟@廣告直郵群發大師將讓你的郵件以"特快專遞"的形式傳送,所有郵件不經過任何中間的伺服器,成功繞過所有中間伺服器的反垃圾郵件層層關卡,直奔目標郵箱,把您的廣告以即發即收的方式強制塞入使用者郵箱,實現了傳送結果的即時反饋和郵件收閱的零等待。每分鐘可處理4萬封郵件的傳送,支援多達512個發信執行緒同時工作。另外,本軟體還支援郵件儲存,郵箱地址有效性的實時檢驗,以及對傳送成功郵箱地址、傳送失敗郵箱地址的匯出功能,是一款不可多得的網路廣告群發軟體。

【軟體限制】:功能限制

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

【破解工具】:TRW2000娃娃修改版、FI2.5、AspackDie、W32Dasm8.93黃金版

―――――――――――――――――――――――――――――
【過    程】:

 
一、脫殼

XMailer.exe是ASPACK2.12殼。用AspackDie脫之,592K->1.49M。Delphi編寫。

―――――――――――――――――――――――――――――
二、反彙編。


1、查詢關鍵提示:"對不起,您所輸入的註冊碼不正確",在50DEE5,呵呵,是由50DE1F跳來的。順藤摸瓜吧!


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0050DE1F(C) <====由此跳來!
|
:0050DEDE 6A10                    push 00000010

* Possible StringData Ref from Code Obj ->"錯誤"
                                 |
:0050DEE0 B918E05000              mov ecx, 0050E018

* Possible StringData Ref from Code Obj ->"對不起,您所輸入的註冊碼不正確"
                                 ====> BAD BOY!                              
:0050DEE5 BA20E05000              mov edx, 0050E020
―――――――――――――――――――――――――――――

2、我們向上分析,可以看看演算法。


機器碼:604838662
試煉碼:13572468

直接BPX 50DD9E   攔下!OK!開始追蹤!

:0050DD9E E85D0A0000              call 0050E800
                                 ====>我們攔在這兒!
:0050DDA3 8D55D4                  lea edx, dword ptr [ebp-2C]
:0050DDA6 8B8308030000            mov eax, dword ptr [ebx+00000308]
:0050DDAC E897F2F3FF              call 0044D048

:0050DDB1 8B45D4                  mov eax, dword ptr [ebp-2C]
                                 ====>D EAX=604838662
604838662是我的硬碟序列號240D1B06的十進位制,呵呵,很多軟體喜歡用我們的硬碟序列號做機器碼,其實有小工具可以檢視硬碟序列號,並且可以更改!

:0050DDB4 E80FB5EFFF              call 004092C8
:0050DDB9 52                      push edx
                                 ====>?EDX=0
:0050DDBA 50                      push eax
                                 ====>?EAX=240D1B06  硬碟序列號
:0050DDBB 6945EC851A0000          imul eax, dword ptr [ebp-14], 00001A85
                                 ====>EAX=1A85

:0050DDC2 99                      cdq
:0050DDC3 030424                  add eax, dword ptr [esp]
                                 ====>EAX=1A85+240D1B06=240D358B

:0050DDC6 13542404                adc edx, dword ptr [esp+04]
:0050DDCA 83C408                  add esp, 00000008
:0050DDCD 8945F8                  mov dword ptr [ebp-08], eax
                                 ====>240D358B入[ebp-08]

:0050DDD0 8955FC                  mov dword ptr [ebp-04], edx
                                 ====>0入[ebp-04]

* Possible StringData Ref from Code Obj ->"44030620021284410"
                                 |
:0050DDD3 B838DF5000              mov eax, 0050DF38
                                 ====>EAX=44030620021284410

:0050DDD8 E8EBB4EFFF              call 004092C8
                                 ====>關鍵CALL。
此CALL對上面程式自給的數值進行運算,得出下面的EAX、EDX值。

##############################################
呵呵,看看TRW犯的“小錯誤”!^-^
?EAX
DEC=-1717838278
HEX=999BDE3A

##############################################

:0050DDDD 2B45F8                  sub eax, dword ptr [ebp-08]
                           ====>EAX=999BDE3A-240D358B=758EA8AF

:0050DDE0 1B55FC                  sbb edx, dword ptr [ebp-04]
                                 ====>EDX=9C6D9D-0=9C6D9D

:0050DDE3 8945F0                  mov dword ptr [ebp-10], eax
                                 ====>758EA8AF入[ebp-10]

:0050DDE6 8955F4                  mov dword ptr [ebp-0C], edx
                                 ====>9C6D9D入 [ebp-0C]

:0050DDE9 8D55D0                  lea edx, dword ptr [ebp-30]
:0050DDEC 8B8310030000            mov eax, dword ptr [ebx+00000310]
:0050DDF2 E851F2F3FF              call 0044D048
:0050DDF7 8B45D0                  mov eax, dword ptr [ebp-30]
:0050DDFA 50                      push eax
:0050DDFB FF75FC                  push [ebp-04]
:0050DDFE FF75F8                  push [ebp-08]
:0050DE01 8B45F0                  mov eax, dword ptr [ebp-10]
                                 ====>758EA8AF入 EAX
:0050DE04 8B55F4                  mov edx, dword ptr [ebp-0C]
                                 ====>9C6D9D入 EDX
:0050DE07 E84C79EFFF              call 00405758
                                 ====>關鍵CALL,記作關鍵CALL 2
此CALL對上面的EAX、EDX透過64次迴圈得出真碼的16進位制值!詳細情況見後。

:0050DE0C 52                      push edx
:0050DE0D 50                      push eax
:0050DE0E 8D45CC                  lea eax, dword ptr [ebp-34]
:0050DE11 E8CEB3EFFF              call 004091E4
:0050DE16 8B55CC                  mov edx, dword ptr [ebp-34]
                                 ====>D EDX=72796479 真碼!

:0050DE19 58                      pop eax
:0050DE1A E8016CEFFF              call 00404A20
                                ====>比較CALL!F8進入!

:0050DE1F 0F85B9000000            jne 0050DEDE
                                 ====>跳則OVER!

:0050DE25 B201                    mov dl, 01
:0050DE27 A114364700              mov eax, dword ptr [00473614]
:0050DE2C E8E358F6FF              call 00473714
:0050DE31 8945DC                  mov dword ptr [ebp-24], eax
:0050DE34 33C0                    xor eax, eax
:0050DE36 55                      push ebp
:0050DE37 68D7DE5000              push 0050DED7
:0050DE3C 64FF30                  push dword ptr fs:[eax]
:0050DE3F 648920                  mov dword ptr fs:[eax], esp
:0050DE42 BA02000080              mov edx, 80000002
:0050DE47 8B45DC                  mov eax, dword ptr [ebp-24]
:0050DE4A E86559F6FF              call 004737B4
:0050DE4F 8D45D8                  lea eax, dword ptr [ebp-28]

* Possible StringData Ref from Code Obj ->"System\Services\ed946c1b-4b05-4070-b56c-d47d82"
                                       ->"37c207"
                                 |
:0050DE52 BA54DF5000              mov edx, 0050DF54
:0050DE57 E85068EFFF              call 004046AC
:0050DE5C 8B55D8                  mov edx, dword ptr [ebp-28]
:0050DE5F 8B45DC                  mov eax, dword ptr [ebp-24]
:0050DE62 E8DD61F6FF              call 00474044
:0050DE67 84C0                    test al, al
:0050DE69 750B                    jne 0050DE76
:0050DE6B 8B55D8                  mov edx, dword ptr [ebp-28]
:0050DE6E 8B45DC                  mov eax, dword ptr [ebp-24]
:0050DE71 E8A659F6FF              call 0047381C

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0050DE69(C)
|
:0050DE76 B101                    mov cl, 01
:0050DE78 8B55D8                  mov edx, dword ptr [ebp-28]
:0050DE7B 8B45DC                  mov eax, dword ptr [ebp-24]
:0050DE7E E8755AF6FF              call 004738F8
:0050DE83 B101                    mov cl, 01
:0050DE85 BA94DF5000              mov edx, 0050DF94
:0050DE8A 8B45DC                  mov eax, dword ptr [ebp-24]
:0050DE8D E8925FF6FF              call 00473E24
:0050DE92 8B45DC                  mov eax, dword ptr [ebp-24]
:0050DE95 E8EA58F6FF              call 00473784
:0050DE9A 6A40                    push 00000040

* Possible StringData Ref from Code Obj ->"註冊成功"
                                 ====>成功了!
:0050DE9C B998DF5000              mov ecx, 0050DF98

* Possible StringData Ref from Code Obj ->"感謝您購買我們的軟體!特別提示:如果您的電腦硬"
                                       ->"盤被重新格式化,則必須根據新的機器碼向比天國際"
                                       ->"獲取新的軟體註冊碼。"
                                 |
:0050DEA1 BAA4DF5000              mov edx, 0050DFA4


―――――――――――――――――――――――――――――
3、F8進入關鍵CALL 2:50DE07  call 00405758


* Referenced by a CALL at Addresses:
|:0041499B   , :0050DE07  
|
:00405758 55                      push ebp
:00405759 53                      push ebx
:0040575A 56                      push esi
:0040575B 57                      push edi
:0040575C 31FF                    xor edi, edi
:0040575E 8B5C2414                mov ebx, dword ptr [esp+14]
:00405762 8B4C2418                mov ecx, dword ptr [esp+18]
:00405766 09C9                    or ecx, ecx
:00405768 7508                    jne 00405772
:0040576A 09D2                    or edx, edx
:0040576C 745C                    je 004057CA
:0040576E 09DB                    or ebx, ebx
:00405770 7458                    je 004057CA

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405768(C)
|
:00405772 09D2                    or edx, edx
:00405774 790A                    jns 00405780
:00405776 F7DA                    neg edx
:00405778 F7D8                    neg eax
:0040577A 83DA00                  sbb edx, 00000000
:0040577D 83CF01                  or edi, 00000001

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405774(C)
|
:00405780 09C9                    or ecx, ecx
:00405782 790A                    jns 0040578E
:00405784 F7D9                    neg ecx
:00405786 F7DB                    neg ebx
:00405788 83D900                  sbb ecx, 00000000
:0040578B 83F701                  xor edi, 00000001

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405782(C)
|
:0040578E 89CD                    mov ebp, ecx
:00405790 B940000000              mov ecx, 00000040
                                 ====>呵呵,64次!
:00405795 57                      push edi
:00405796 31FF                    xor edi, edi
:00405798 31F6                    xor esi, esi
:0040579A D1E0                    shl eax, 1
                                 ====>758EA8AF算術左移64次
                                 ====>64次左移後的結果=456C93E

:0040579C D1D2                    rcl edx, 1
                                 ====>9C6D9D帶進位迴圈左移64次
                                 ====>64次左移後的結果=0
:0040579E D1D6                    rcl esi, 1
                                 ====>64次左移後的結果=329F8E05
:004057A0 D1D7                    rcl edi, 1
                                 ====>64次左移後的結果=0
:004057A2 39EF                    cmp edi, ebp
:004057A4 720B                    jb 004057B1
:004057A6 7704                    ja 004057AC
:004057A8 39DE                    cmp esi, ebx
:004057AA 7205                    jb 004057B1

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004057A6(C)
|
:004057AC 29DE                    sub esi, ebx
                                 ====>ESI-EBX

:004057AE 19EF                    sbb edi, ebp
:004057B0 40                      inc eax
                                 ====>EAX增1

呵呵,64次迴圈後的結果:EAX=456C93E+1=456C93F,這就是真碼的16進位制值!


* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004057A4(C), :004057AA(C)
|
:004057B1 E2E7                    loop 0040579A
                                 ====>迴圈吧!
:004057B3 5B                      pop ebx
:004057B4 F7C301000000            test ebx, 00000001
:004057BA 7407                    je 004057C3
:004057BC F7DA                    neg edx
:004057BE F7D8                    neg eax
:004057C0 83DA00                  sbb edx, 00000000

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004057BA(C), :004057CE(U)
|
:004057C3 5F                      pop edi
:004057C4 5E                      pop esi
:004057C5 5B                      pop ebx
:004057C6 5D                      pop ebp
:004057C7 C20800                  ret 0008


―――――――――――――――――――――――――――――
4、F8進入比較CALL:0050DE1A  call 00404A20


* Referenced by a CALL at Addresses:
|:0041D3DB   , :004240C6   , :00426E73   , :0042C93D   , :0042DC74  
|:00433DBB   , :00433DD9   , :0043BAE0   , :0044BEDA   , :0044BF68  
|
…… ……很多地方CALL此處 …… ……

:00404A20 53                      push ebx
:00404A21 56                      push esi
:00404A22 57                      push edi
:00404A23 89C6                    mov esi, eax
:00404A25 89D7                    mov edi, edx
:00404A27 39D0                    cmp eax, edx
                                 ====>D EAX=13572468 試煉碼
                                 ====>D EDX=72796479 真碼!!

:00404A29 0F848F000000            je 00404ABE


―――――――――――――――――――――――――――――

【KeyMake之記憶體序號產生器】:


中斷地址:50DE1A
中斷次數:1
第一位元組:E8
指令長度:5

中斷地址:404A27
中斷次數:1
第一位元組:39
指令長度:2

記憶體方式:EDX              

―――――――――――――――――――――――――――――

【總       結】:


程式對自給的44030620021284410進行運算得出999BDE3A,
999BDE3A-我的硬碟序列號-自給的1A85=758EA8AF。

758EA8AF算術左移64次=456C93E
456C93E+1=456C93F  ―― 這就是真碼的16進位制值!


奇怪了!難道每次都要重新註冊?

―――――――――――――――――――――――――――――

【整       理】:


機器碼:604838662
註冊碼:72796479  

―――――――――――――――――――――――――――――


   
                   Cracked By 巢水工作坊――fly【OCN】

                          2003-2-9  18:00

相關文章