E族自動關機的破解

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

破解軟體:e族自動關機
軟體大小:731 KB
應用平臺:Win9x/NT/2000/XP
下載次數:36578
破解工具:TRW1.22
破解難度:very easy
軟體下載:http://count.skycn.com/softdown.php?id=3320&url=http://on165-http.skycn.net/down/eShut.exe

軟體說明:歡迎使用e族自動關機,它可以在您指定的時間自動關閉計算機。如果您在臨睡前有聽音樂、評書、英語的喜好,或是因計算機尚未完成工作任務而不能脫身,e族自動關機是您的最佳選擇。未註冊版只能使用18次。

半個多月沒碰過電腦了,今天好不容易撈到機會,趕緊駕貓上網,發現論壇裡面一如既往的熱鬧,令人高興的是論壇5終於出爐了,趕緊下下來,順便下了這個小軟體,分析了一下,發現是個超級簡單但非常好用的小軟體,本不好意思往上貼,想到自已菜鳥,無所謂了,獻給所有喜愛破解的菜鳥。

無殼,用Delphi編寫,任意填入註冊碼12345678,下BPX HMEMCPY(用BPX GETWINDOWTEXTA斷不下來),點下一步,程式被中斷
BC *,PMODULE,按7下F12,再按F10,來到以下程式碼
0167:004707C2  CMP      DWORD [EBP-30],BYTE +00 <---程式中斷於此,判斷是否輸入了註冊碼
0167:004707C6  JNZ      004707DA
0167:004707C8  MOV      EAX,[EBP-04]
0167:004707CB  MOV      DWORD [EAX+03B8],05
0167:004707D5  JMP      00470896
0167:004707DA  XOR      EAX,EAX
0167:004707DC  PUSH     EBP
0167:004707DD  PUSH     DWORD 0047087F
0167:004707E2  PUSH     DWORD [FS:EAX]
0167:004707E5  MOV      [FS:EAX],ESP
0167:004707E8  LEA      EDX,[EBP-34]
0167:004707EB  MOV      EAX,[EBP-04]
0167:004707EE  MOV      EAX,[EAX+0318]        
0167:004707F4  CALL     0043B71C              
0167:004707F9  MOV      EAX,[EBP-34]       <---取輸入的註冊碼
0167:004707FC  CALL     00408960           <---此Call將輸入的註冊碼轉換成16進位制值,返回值在EAX中
0167:00470801  MOV      EBX,EAX                
0167:00470803  MOV      EAX,[EBP-04]
0167:00470806  MOV      EAX,[EAX+03B0]     <---取機器碼的16進位制值
0167:0047080C  MOV      CL,01
0167:0047080E  MOV      EDX,EBX                
0167:00470810  CALL     00464D88           <---關鍵的比對Call,跟進
0167:00470815  MOV      EDX,[0047508C]    
0167:0047081B  MOV      [EDX],AL          
0167:0047081D  MOV      EAX,[0047508C]    
0167:00470822  CMP      BYTE [EAX],00          
0167:00470825  JZ       00470868           <---關鍵跳轉
0167:00470827  MOV      EAX,[EBP-04]
0167:0047082A  MOV      DWORD [EAX+03B8],04
0167:00470834  MOV      EAX,EBX
0167:00470836  XOR      EDX,EDX
0167:00470838  PUSH     EDX
0167:00470839  PUSH     EAX
0167:0047083A  LEA      EAX,[EBP-38]
0167:0047083D  CALL     004088D8
0167:00470842  MOV      EDX,[EBP-38]
0167:00470845  MOV      EAX,[EBP-04]
0167:00470848  MOV      EAX,[EAX+033C]
0167:0047084E  CALL     0043B74C
0167:00470853  MOV      EAX,[EBP-04]
0167:00470856  MOV      EAX,[EAX+0300]
0167:0047085C  MOV      EDX,00470B94
0167:00470861  CALL     0043B74C
0167:00470866  JMP      SHORT 00470875
0167:00470868  MOV      EAX,[EBP-04]
0167:0047086B  MOV      DWORD [EAX+03B8],05
0167:00470875  XOR      EAX,EAX
0167:00470877  POP      EDX
0167:00470878  POP      ECX
0167:00470879  POP      ECX
0167:0047087A  MOV      [FS:EAX],EDX
0167:0047087D  JMP      SHORT 00470896
跟進上面的那個關鍵Call,來到如下程式碼:
0167:00464D89  MOV      EBP,ESP
0167:00464D8B  ADD      ESP,BYTE -08
0167:00464D8E  PUSH     EBX
0167:00464D8F  PUSH     ESI
0167:00464D90  XOR      EBX,EBX          <---EBX=0      
0167:00464D92  MOV      [EBP-08],EBX
0167:00464D95  MOV      [EBP-04],EDX     <---取註冊碼的16進位制值到[EBP-04]中
0167:00464D98  XOR      EDX,EDX
0167:00464D9A  PUSH     EBP
0167:00464D9B  PUSH     DWORD 00464E13
0167:00464DA0  PUSH     DWORD [FS:EDX]
0167:00464DA3  MOV      [FS:EDX],ESP
0167:00464DA6  XOR      EBX,EBX
0167:00464DA8  XOR      EAX,27DFFC3A     <---EAX中為機器碼的16進位制值,與27DFFC3A或後的數值為真碼
0167:00464DAD  CMP      EAX,[EBP-04]     <---真假碼比較
0167:00464DB0  JNZ      00464DB4
0167:00464DB2  MOV      BL,01            <---EBX=01
0167:00464DB4  TEST     CL,CL
0167:00464DB6  JZ       00464DFD
0167:00464DB8  MOV      DL,01
0167:00464DBA  MOV      EAX,[0045DA80]
0167:00464DBF  CALL     0045DB80
0167:00464DC4  MOV      ESI,EAX
0167:00464DC6  MOV      CL,01
0167:00464DC8  MOV      EDX,00464E2C
0167:00464DCD  MOV      EAX,ESI
0167:00464DCF  CALL     0045DC84
0167:00464DD4  TEST     AL,AL
0167:00464DD6  JZ       00464DF6
0167:00464DD8  MOV      EAX,[EBP-04]
0167:00464DDB  XOR      EDX,EDX
0167:00464DDD  PUSH     EDX
0167:00464DDE  PUSH     EAX
0167:00464DDF  LEA      EAX,[EBP-08]
0167:00464DE2  CALL     004088D8
0167:00464DE7  MOV      ECX,[EBP-08]
0167:00464DEA  MOV      EDX,00464E4C
0167:00464DEF  MOV      EAX,ESI
0167:00464DF1  CALL     0045DE20
0167:00464DF6  MOV      EAX,ESI
0167:00464DF8  CALL     00403724
0167:00464DFD  XOR      EAX,EAX
0167:00464DFF  POP      EDX
0167:00464E00  POP      ECX
0167:00464E01  POP      ECX
0167:00464E02  MOV      [FS:EAX],EDX
0167:00464E05  PUSH     DWORD 00464E1A
0167:00464E0A  LEA      EAX,[EBP-08]
0167:00464E0D  CALL     00404490
0167:00464E12  RET    
0167:00464E13  JMP      00403EB8
0167:00464E18  JMP      SHORT 00464E0A
0167:00464E1A  MOV      EAX,EBX          <---根據EBX的值置標誌位EAX的值
0167:00464E1C  POP      ESI
0167:00464E1D  POP      EBX
0167:00464E1E  POP      ECX
0167:00464E1F  POP      ECX
0167:00464E20  POP      EBP
0167:00464E21  RET    

這個軟體的演算法非常簡單,將機器碼的16進位制值與27DFFC3A作或運算後的結果的10進位制值即為正確註冊碼。
軟體註冊成功後將註冊資訊儲存在登錄檔的
“HKEY_CURRENT_USER/Software/eNation/eShut”中,重啟時會取出進行比對

相關文章