大地非典預防系統 V1.0筆記,希望大家注意身體!

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

這一份筆記是一個非常不完整的筆記,但我把它發出來的原因是:

我本人剛剛從醫院回家(非典剛好),我知道非典是多麼可怕,在我39度高燒不退的時候什麼藥都沒辦法,當時我以為自己死定了......

後來醫生說我抵抗力強,身體好!高燒才能退下去的!

所以現在才能在論壇和大家灌水!((我在這裡呼籲大家平時有時間就多運動,如打打籃球什麼的,我就常常打籃球的......過去的事,不多說了!)

我把這文章貼出來的原因事希望大家把它下載回家認真讀讀,應該會對你有幫助的!

【下載頁面】:http://ltyj.51.net/show.php?id=39&t=soft

【軟體大小】:1872 KB

【軟體簡介】: 一款設計精美,操作方便,關係到世界人民身體健康的"非典"預防軟體,她提供了整套的有關"非典"的途徑、狀況、防治、藥療、法律、預防、熱線、醫院及線上收看最新動態等綜合資訊,使能得到及時預防,讓生命永遠屬於您和您的家人。

【軟體限制】:只能試用十次,不輸入註冊碼的話就不能再用了!

【作者宣告】:只是個人興趣,讀者看後所做出的一切事情與我無關,我也不負責,希望讀者能三思再後行!

【破解工具】:w32Dasm   TRW2K   PEid   AspackDie

―――――――――――――――――――――――――――――――――
【過    程】:用PEid發現在主程式FRun.Exe是用ASPack 2.x加的殼,那麼我就用AspackDie脫殼(0.99M->3.25M)
然後用w32Dasm反彙編,結果我哭....(什麼也沒有,全是看不懂的東東...)!
那麼只好拿出"傢伙"TRW2K來了...
執行程式FRun.Exe然後選擇註冊,填入78787878  ctrl+n撥出TRW2K   下斷點bpx hmemcpy  F5出來後按確定馬上攔下!
按16次F12到但出錯誤的對話方塊!那麼再來一次,這當然是按15次F12了!來到了下面!按了N次F10後來到下面!


:004C3F5E

:0040485E

:0058BA25 8BD8                    mov ebx, eax
:0058BA27 33C0                    xor eax, eax
:0058BA29 55                      push ebp
:0058BA2A 68C5BA5800              push 0058BAC5
:0058BA2F 64FF30                  push dword ptr fs:[eax]
:0058BA32 648920                  mov dword ptr fs:[eax], esp
:0058BA35 8D55F8                  lea edx, dword ptr [ebp-08]
:0058BA38 A19CEA6B00              mov eax, dword ptr [006BEA9C]
:0058BA3D 8B00                    mov eax, dword ptr [eax]
:0058BA3F E84085F3FF              call 004C3F84               \\??演算法CALL(不知道也不明白)  F8進去!
:0058BA44 8D55FC                  lea edx, dword ptr [ebp-04]
:0058BA47 A19CEA6B00              mov eax, dword ptr [006BEA9C]
:0058BA4C 8B00                    mov eax, dword ptr [eax]
:0058BA4E E83185F3FF              call 004C3F84               \\??演算法CALL(不知道也不明白)  F8進去!
:0058BA53 8B55F8                  mov edx, dword ptr [ebp-08] \\這裡是錯誤的註冊碼!
:0058BA56 8B45FC                  mov eax, dword ptr [ebp-04] \\這裡是正確的註冊碼!
:0058BA59 E8A2D9E7FF              call 00409400               \\!!關鍵CALL!F8追進去!
:0058BA5E 8BF0                    mov esi, eax                \\EAX=ESI
:0058BA60 85F6                    test esi, esi               \\比較是否為零
:0058BA62 7511                    jne 0058BA75                \\不是零的話就跳到下面死掉!爆破!
:0058BA64 66837B5200              cmp word ptr [ebx+52], 0000
:0058BA69 743F                    je 0058BAAA
:0058BA6B 8BD3                    mov edx, ebx
:0058BA6D 8B4354                  mov eax, dword ptr [ebx+54]
:0058BA70 FF5350                  call [ebx+50]               \\這裡是彈出註冊成功的對話方塊的!
:0058BA73 EB35                    jmp 0058BAAA

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0058BA62(C)
|
:0058BA75 66837B5A00              cmp word ptr [ebx+5A], 0000
:0058BA7A 7408                    je 0058BA84
:0058BA7C 8BD3                    mov edx, ebx
:0058BA7E 8B435C                  mov eax, dword ptr [ebx+5C]
:0058BA81 FF5358                  call [ebx+58]               \\這裡是彈出註冊失敗的對話方塊!

-------------------------------------------------------------------------------

:0058BA3F E84085F3FF              call 004C3F84
F8來到這裡:


:004C3F84 53                      push ebx
:004C3F85 56                      push esi
:004C3F86 8BF2                    mov esi, edx
:004C3F88 8BD8                    mov ebx, eax
:004C3F8A 837B0800                cmp dword ptr [ebx+08], 00000000
:004C3F8E 750D                    jne 004C3F9D

* Possible StringData Ref from Code Obj ->"錯誤:引數區為空,無引數可取"
                                 |
:004C3F90 B8BC3F4C00              mov eax, 004C3FBC
:004C3F95 E84AABFEFF              call 004AEAE4
:004C3F9A 5E                      pop esi
:004C3F9B 5B                      pop ebx
:004C3F9C C3                      ret

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C3F8E(C)
|
:004C3F9D 8BC6                    mov eax, esi
:004C3F9F 8B530C                  mov edx, dword ptr [ebx+0C]
:004C3FA2 8B4B08                  mov ecx, dword ptr [ebx+08]
:004C3FA5 8B148A                  mov edx, dword ptr [edx+4*ecx]   \\這裡D EDX可以看到密匙123456
:004C3FA8 E86F08F4FF              call 0040481C
:004C3FAD FF4B08                  dec [ebx+08]
:004C3FB0 5E                      pop esi
:004C3FB1 5B                      pop ebx
:004C3FB2 C3                      ret                              \\返回到0058BA44!

-------------------------------------------------------------------------------
:0058BA4E E83185F3FF              call 004C3F84
F8來到這裡:
:004C3F84 53                      push ebx
:004C3F85 56                      push esi
:004C3F86 8BF2                    mov esi, edx
:004C3F88 8BD8                    mov ebx, eax
:004C3F8A 837B0800                cmp dword ptr [ebx+08], 00000000
:004C3F8E 750D                    jne 004C3F9D

* Possible StringData Ref from Code Obj ->"錯誤:引數區為空,無引數可取"
                                 |
:004C3F90 B8BC3F4C00              mov eax, 004C3FBC
:004C3F95 E84AABFEFF              call 004AEAE4
:004C3F9A 5E                      pop esi
:004C3F9B 5B                      pop ebx
:004C3F9C C3                      ret

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C3F8E(C)
|
:004C3F9D 8BC6                    mov eax, esi
:004C3F9F 8B530C                  mov edx, dword ptr [ebx+0C]
:004C3FA2 8B4B08                  mov ecx, dword ptr [ebx+08]
:004C3FA5 8B148A                  mov edx, dword ptr [edx+4*ecx]   \\這裡D EDX可以看見真的註冊碼!
:004C3FA8 E86F08F4FF              call 0040481C
:004C3FAD FF4B08                  dec [ebx+08]
:004C3FB0 5E                      pop esi
:004C3FB1 5B                      pop ebx
:004C3FB2 C3                      ret                               \\返回0058BA53!


-------------------------------------------------------------------------------
:0058BA59 E8A2D9E7FF              call 00409400
F8來到這裡:
* Referenced by a CALL at Addresses:
|:0041897A   , :00481071   , :005567B0   , :00557AF8   , :0058BA59  
|:00654E77   , :006B735F  
|
:00409400 56                      push esi
:00409401 57                      push edi
:00409402 89C6                    mov esi, eax                \\EAX=ESI=正確的註冊碼!
:00409404 89D7                    mov edi, edx                \\EDX=EDI=我輸入錯誤的註冊碼!
:00409406 09C0                    or eax, eax                 \\??或運算,用處不知道,請大哥哥指點!
:00409408 7403                    je 0040940D
:0040940A 8B40FC                  mov eax, dword ptr [eax-04] \\取得正確註冊的位數!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00409408(C)
|
:0040940D 09D2                    or edx, edx                 \\??或運算,用處不知道,請大哥哥指點!
:0040940F 7403                    je 00409414
:00409411 8B52FC                  mov edx, dword ptr [edx-04] \\取得我輸入註冊碼的位數!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040940F(C)
|
:00409414 89C1                    mov ecx, eax                \\EAX=ECX
:00409416 39D1                    cmp ecx, edx                \\比較是否相等!
:00409418 7602                    jbe 0040941C                \\不等於就跳到下面!
:0040941A 89D1                    mov ecx, edx                \\EDX=ECX等於我輸入註冊碼的位數!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00409418(C)
|
:0040941C 39C9                    cmp ecx, ecx                \\比較,不知道有什麼用,請指點!
:0040941E F3                      repz                        \\經過這裡有後真假註冊碼都移動了,不知道有什麼用,請指點!
:0040941F A6                      cmpsb                       \\???不知道有什麼用,請指點!
:00409420 7408                    je 0040942A
:00409422 0FB646FF                movzx eax, byte ptr [esi-01]\\取得正確註冊碼第X位的ASCII碼放入EAX
:00409426 0FB657FF                movzx edx, byte ptr [edi-01]\\取得我輸入註冊碼第X位的ASCII碼放入EDX

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00409420(C)
|
:0040942A 29D0                    sub eax, edx                 \\相減,結果儲存EAX
:0040942C 5F                      pop edi
:0040942D 5E                      pop esi
:0040942E C3                      ret

------------------------------------------------------------------------
總結:(程式是怎麼運算出註冊碼的,我到現在都還沒有搞懂!請大哥哥指點!)

註冊資訊儲存在登錄檔的:HKEY_CLASSES_ROOT\Ddfd的字串值test裡面,test的值大於100就表示註冊版本,小於否之!

這個程式是把機器碼乘以密匙123456的積和我輸入的註冊碼比較的,也就是說註冊碼就是機器碼乘以密匙123456的積!
我們假定註冊碼是X機器碼是Y那麼:(X=Y*123456)

可惜我不會程式設計,所以做不了序號產生器!(但我感覺這個程式的序號產生器很容易做,會的大哥哥不要笑我...)

這個程式可以爆破!但就是不完美,因為把
:0058BA62 7511
改成:
:0058BA62 9090
之後程式每次執行機器碼都不同了!程式就永遠變成了未註冊版本,沒次執行都是第一次用!(我呆了...)

記憶體序號產生器做不了,因為這個程式在開始執行的時候就會執行經過0058BA59這個地方,所以我想問問大家怎麼辦好!

看來我加入組織的機會渺茫了好多啊!沒辦法!只好用另外一個方法了!

----------------------------------------------------------------------------

就是搬出我個人認為最好用的工具---->REGMON 4.32中文版!

執行REGMON,在執行FRun.Exe,你會發現程式獲取了登錄檔[HKEY_CLASSES_ROOT\Ddfd]的值,在那裡面有兩個字串值test和test1,其中test1是程式隨機產生的機器碼,test是否註冊的標誌!(大於101的是註冊版)那麼你懂了吧,把它改一改就可以了!呵呵...

或者自己動手做一個註冊檔案!新建一個 本文文件 內容如下:

REGEDIT4

[HKEY_CLASSES_ROOT\Ddfd]
"test"="101"


再把本文文件的副檔名由txt改成reg

雙擊執行這個reg檔案就變成註冊版本了!!簡單吧!

在這裡我要謝謝您願意花時間看我這篇文章!謝謝...


                                                          2003.05.12 下午於清遠


相關文章