• 标 题:E族自动关机的破解  
  • 作 者: ShenGe
  • 时 间:2003/05/09 11:23am
  • 链 接:http://bbs.pediy.com

破解软件: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”中,重启时会取出进行比对