您的位置:首页精文荟萃破解文章 → 小护士 V1.52简单算法分析

小护士 V1.52简单算法分析

时间:2004/10/15 0:59:00来源:本站整理作者:蓝点我要评论(0)

 


软件名称:
 小护士 V1.52简单算法分析
 
软件简介:
 软件大小:  759 KB
软件语言:  简体中文
软件类别:  国产软件 / 共享版 / 开关定时
应用平台:  WinNT/2000/XP
界面预览:  无
加入时间:  2003-04-03 10:23:23
下载次数:  1117
推荐等级:  


联 系 人:  yyllyy@sohu.com  
开 发 商:  http://yhh365.3322.net/

软件介绍:  

   本软件主要为那些一坐在电脑前就不要命的人设计。主要功能为每半小时就关闭屏幕、锁定键盘3分
钟,促使你休息。关闭前10-120秒提醒你,可提醒两次。工作期间有5分钟不用电脑视为已休息,重新计
时。注册用户可以调整工作和休息时间长短,并且以后自动按你的设定运行。目前,在WINDOWSNT/2000/
XP上稳定运行,在WINDOWS9X上可提醒你休息,没锁定键盘


下载地址:
 http://www.skycn.com/soft/11505.html
------------------------------------------------------------
 
破解作者:
 yzez[DFCG]
 
破解工具:
 regsnap(filemon)、ollydbg1.09b、破解环境:WINXP系统
 
破解目的:
 初学破解,交流经验。
 
------------------------------------------------------------
 
[破解过程]
 
详细过程:
1、我原不知道这个软件,一个朋友下载了一个,要我帮他看一看能否注册,我就试了一试,这个软件的
算法超级简单,难在如何找到关键断点,因为该软件输入注册信息后,没有任何提示信息,软件直接退出
,用W32DASM找有用信息,看来是不行了。
2、先运行regsnap新建一个快照,保存。点开小护士 V1.52,输入注册信息,点确定程序自动退出,再运
行regsnap新建一个快照,然后将两个快照比较,我们可以发现新增了一个键值:HKEY_USERS\S-1-5-21-79
6845957-1364589140-725345543-1003\Software\Microsoft\MS Setup (ACME)\User Info\DefName
打开注册表编辑器,找到这个键值:DefCompany"="yzez[DFCG]"
"DefName"="911000888",由此可见,不管软件正确注册与否,都会在注册表中写进信息,如果注册失败,会在
注册表中写进"DefName"="911000888",如果软件正确注册,会在注册表中写入什么信息呢?暂时不管,但是
我们已经找到了破解的思路,就是要在软件对注册表进行操作时设下断点。
3、好了,我们已经找到了门路,开工吧!运行ollydbg1.09b,点File---open,载入小护士V1.52,现在程
序已被ollydbg载入了吧,现在我们要设置好断点,如何设?跟我来,右键在ollydbg左上窗口右键单击,
就会出现一个窗口,我们选:Seach for---Name(label) in current module(快捷键是:Ctrl+N),又会出
现一个窗口:Names in Nurse,在这里我们往下找,要找到这一行:RegopenkeyExA---在这里会打开注册
表进行读写操作。在这一行上我们点一下,这一行的颜色变了吧!变了我们就直接按Enter键,又会弹出
一个窗口:References in Nurse:.text to ADVAPI32.RegOpenkeyExA,
0040460A CALL    DWORD PTR DS:[<&ADVAPI32.RegOpenKeyExA>] ADVAPI32.RegOpenKeyExA
00404B8F CALL    DWORD PTR DS:[<&ADVAPI32.RegOpenKeyExA>] ADVAPI32.RegOpenKeyExA
00405BCF CALL    DWORD PTR DS:[<&ADVAPI32.RegOpenKeyExA>] ADVAPI32.RegOpenKeyExA
0040637B CALL    DWORD PTR DS:[<&ADVAPI32.RegOpenKeyExA>] ADVAPI32.RegOpenKeyExA
00406A27 CALL    DWORD PTR DS:[<&ADVAPI32.RegOpenKeyExA>] ADVAPI32.RegOpenKeyExA
我们要在这里全部设下断点,如何设?我们在这个窗口右键单击,会出现一个信息框,选中:Set break
point on every command,单击,这五个CALL就全设断了,然后回到ollydbg的主界面,按F9程序运行,第一
次中断,没有出现注册窗口,按F2取消这个断点,继续按F9,第二次还是没有出现注册窗口,再按F2取消
这个断点,继续按F9,第三次终于出现了注册窗口,输入注册信息,点确定,程序会被中断下来:
00405AFF      90            NOP
00405B00   .  6A FF         PUSH    -1
00405B02   .  68 66824000   PUSH    Nurse.00408266                   ;  SE handler installation
00405B07   .  64:A1 0000000>MOV     EAX, DWORD PTR FS:[0]
00405B0D   .  50            PUSH    EAX
00405B0E   .  64:8925 00000>MOV     DWORD PTR FS:[0], ESP
00405B15   .  81EC 0C010000 SUB     ESP, 10C
00405B1B   .  53            PUSH    EBX
00405B1C   .  56            PUSH    ESI
00405B1D   .  57            PUSH    EDI
00405B1E   .  8BF1          MOV     ESI, ECX
00405B20   .  6A 01         PUSH    1
00405B22   .  E8 BB1B0000   CALL    -------找注册算法在此设断!
00405B27   .  8B56 60       MOV     EDX, DWORD PTR DS:[ESI+60]
00405B2A   .  8D4C24 0C     LEA     ECX, DWORD PTR SS:[ESP+C]
00405B2E   .  81F2 3412AB78 XOR     EDX, 78AB1234
00405B34   .  8956 60       MOV     DWORD PTR DS:[ESI+60], EDX
00405B37   .  E8 941B0000   CALL    
00405B3C   .  8B46 64       MOV     EAX, DWORD PTR DS:[ESI+64]
00405B3F   .  8B4E 60       MOV     ECX, DWORD PTR DS:[ESI+60]
00405B42   .  33DB          XOR     EBX, EBX
00405B44   .  3BC1          CMP     EAX, ECX
00405B46   .  899C24 200100>MOV     DWORD PTR SS:[ESP+120], EBX
00405B4D   .  75 11         JNZ     SHORT Nurse.00405B60-------此处修改可暴破!
00405B4F   .  68 F84FB527   PUSH    27B54FF8--------十进制值是:666193912,把此值写入注册表,注册成功!
00405B54   .  8D4C24 10     LEA     ECX, DWORD PTR SS:[ESP+10]
00405B58   .  68 10C44000   PUSH    Nurse.0040C410                   ;  ASCII "%d"
00405B5D   .  51            PUSH    ECX
00405B5E   .  EB 0F         JMP     SHORT Nurse.00405B6F
00405B60   >  68 38C54C36   PUSH    364CC538
00405B65   .  8D5424 10     LEA     EDX, DWORD PTR SS:[ESP+10]
00405B69   .  68 10C44000   PUSH    Nurse.0040C410                   ;  ASCII "%d"
00405B6E   .  52            PUSH    EDX
00405B6F   >  E8 FE1B0000   CALL    
00405B74   .  8B4424 18     MOV     EAX, DWORD PTR SS:[ESP+18]       ;  Nurse.00409FE8
00405B78   .  83C4 0C       ADD     ESP, 0C
00405B7B   .  8D4C24 18     LEA     ECX, DWORD PTR SS:[ESP+18]
00405B7F   .  50            PUSH    EAX                              ; /<%s> = 00000009 ???
00405B80   .  68 F8C44000   PUSH    Nurse.0040C4F8                   ; |format = "%s"
00405B85   .  51            PUSH    ECX                              ; |s = 003E40B8
00405B86   .  FF15 B4944000 CALL    DWORD PTR DS:[<&MSVCRT.sprintf>] ; \sprintf
00405B8C   .  83C4 0C       ADD     ESP, 0C
00405B8F   .  E8 7A1C0000   CALL    
00405B94   .  8B10          MOV     EDX, DWORD PTR DS:[EAX]
00405B96   .  8D4424 18     LEA     EAX, DWORD PTR SS:[ESP+18]
00405B9A   .  50            PUSH    EAX
00405B9B   .  8D4C24 14     LEA     ECX, DWORD PTR SS:[ESP+14]
00405B9F   .  895424 14     MOV     DWORD PTR SS:[ESP+14], EDX
00405BA3   .  E8 221B0000   CALL    
00405BA8   .  8B4C24 10     MOV     ECX, DWORD PTR SS:[ESP+10]
00405BAC   .  8D5424 14     LEA     EDX, DWORD PTR SS:[ESP+14]
00405BB0   .  52            PUSH    EDX                              ; /pHandle = 0012E7A0
00405BB1   .  68 06000200   PUSH    20006                            ; |Access = KEY_WRITE
00405BB6   .  8B41 F8       MOV     EAX, DWORD PTR DS:[ECX-8]        ; |
00405BB9   .  53            PUSH    EBX                              ; |Reserved = 0
00405BBA   .  68 E0C34000   PUSH    Nurse.0040C3E0                   ; |Subkey = "Software\\Microsoft\\MS Setup (ACME)\\User Info"
00405BBF   .  68 01000080   PUSH    80000001                         ; |hKey = HKEY_CURRENT_USER
00405BC4   .  C68424 340100>MOV     BYTE PTR SS:[ESP+134], 1         ; |
00405BCC   .  8D78 01       LEA     EDI, DWORD PTR DS:[EAX+1]        ; |
00405BCF   .  FF15 10904000 CALL    DWORD PTR DS:[<&ADVAPI32.RegOpen>; \RegOpenKeyExA--中断在此
00405BD5   .  3BC3          CMP     EAX, EBX------这里是一个比较
00405BD7   .  74 10         JE      SHORT Nurse.00405BE9----相等就跳,跳就成功,试改一下,je
00405BD9   .  53            PUSH    EBX                      改JNZ,按F8几下,程序运行,没有注册界面!
00405BDA   .  53            PUSH    EBX
00405BDB   .  68 D8C44000   PUSH    Nurse.0040C4D8
00405BE0   .  8BCE          MOV     ECX, ESI
00405BE2   .  E8 571C0000   CALL    
00405BE7   .  EB 44         JMP     SHORT Nurse.00405C2D
00405BE9   >  8B4C24 14     MOV     ECX, DWORD PTR SS:[ESP+14]
00405BED   .  8D4424 18     LEA     EAX, DWORD PTR SS:[ESP+18]
00405BF1   .  57            PUSH    EDI                              ; /BufSize = A (10.)
00405BF2   .  50            PUSH    EAX                              ; |Buffer = 00000009
00405BF3   .  6A 01         PUSH    1                                ; |valueType = REG_SZ
00405BF5   .  53            PUSH    EBX                              ; |Reserved = 0
00405BF6   .  68 D0C44000   PUSH    Nurse.0040C4D0                   ; |valueName = "DefName"
00405BFB   .  51            PUSH    ECX                              ; |hKey = 3E40B8---在此把注册信息写入注册表中
00405BFC   .  FF15 08904000 CALL    DWORD PTR DS:[<&ADVAPI32.RegSetV>; \RegSetvalueExA
00405C02   .  3BC3          CMP     EAX, EBX
00405C04   .  74 10         JE      SHORT Nurse.00405C16
00405C06   .  53            PUSH    EBX
00405C07   .  53            PUSH    EBX
00405C08   .  68 B0C44000   PUSH    Nurse.0040C4B0
00405C0D   .  8BCE          MOV     ECX, ESI
00405C0F   .  E8 2A1C0000   CALL    
00405C14   .  EB 17         JMP     SHORT Nurse.00405C2D
00405C16   >  8B5424 14     MOV     EDX, DWORD PTR SS:[ESP+14]
00405C1A   .  52            PUSH    EDX                              ; /hKey = 0012E7A0
00405C1B   .  FF15 18904000 CALL    DWORD PTR DS:[<&ADVAPI32.RegClos>; \RegCloseKey
00405C21   .  395E 64       CMP     DWORD PTR DS:[ESI+64], EBX
00405C24   .  74 07         JE      SHORT Nurse.00405C2D
00405C26   .  8BCE          MOV     ECX, ESI
00405C28   .  E8 D31A0000   CALL    
00405C2D   >  8D4C24 10     LEA     ECX, DWORD PTR SS:[ESP+10]
00405C31   .  889C24 200100>MOV     BYTE PTR SS:[ESP+120], BL
00405C38   .  E8 BB190000   CALL    
00405C3D   .  8D4C24 0C     LEA     ECX, DWORD PTR SS:[ESP+C]
00405C41   .  C78424 200100>MOV     DWORD PTR SS:[ESP+120], -1
00405C4C   .  E8 A7190000   CALL    
00405C51   .  8B8C24 180100>MOV     ECX, DWORD PTR SS:[ESP+118]
00405C58   .  5F            POP     EDI
00405C59   .  5E            POP     ESI
00405C5A   .  5B            POP     EBX
00405C5B   .  64:890D 00000>MOV     DWORD PTR FS:[0], ECX
00405C62   .  81C4 18010000 ADD     ESP, 118
好爽!我们终于找到了关键断点,现在找一找它的注册算法处:我们往上找,找到这里:
00405B22   .  E8 BB1B0000   CALL    ----------在此CALL设断,再一次调试,输入注册信息:12345678,点确定被中断
00405B27   .  8B56 60       MOV     EDX, DWORD PTR DS:[ESI+60]----EDX的值是多少?315357FC,十进制是:827545596这正是我的机器识别码
00405B2A   .  8D4C24 0C     LEA     ECX, DWORD PTR SS:[ESP+C]
00405B2E   .  81F2 3412AB78 XOR     EDX, 78AB1234-----XOR 常数:78AB1234,EDX的值是:49F845C8,十进制值是:1241007560
00405B34   .  8956 60       MOV     DWORD PTR DS:[ESI+60], EDX
00405B37   .  E8 941B0000   CALL    ------在这里做内存注册机
00405B3C   .  8B46 64       MOV     EAX, DWORD PTR DS:[ESI+64]
00405B3F   .  8B4E 60       MOV     ECX, DWORD PTR DS:[ESI+60]
00405B42   .  33DB          XOR     EBX, EBX
00405B44   .  3BC1          CMP     EAX, ECX-----比较,EAX是:BC614E(12345678我输入的注册假码),EDX的值是:49F845C8
00405B46   .  899C24 200100>MOV     DWORD PTR SS:[ESP+120], EBX
00405B4D   .  75 11         JNZ     SHORT Nurse.00405B60----不相等就跳,跳就失败!
跳到此处:
00405B60   >  68 38C54C36   PUSH    364CC538-----十进制值是:911000888,这个值写入注册表中就失败,那么EDX的值就是我们的注册码了!
00405B65   .  8D5424 10     LEA     EDX, DWORD PTR SS:[ESP+10]
00405B69   .  68 10C44000   PUSH    Nurse.0040C410                   ;  ASCII "%d"
00405B6E   .  52            PUSH    EDX
好了!终于结束!
3、算法总结:注册码=机器识别码的十六进制值 XOR 常数78AB1234转化为十进值就是注册码!
4、内存注册机:中断地址:405B37,中断次数:1,第一字节:E8, 指令长度:2,寄存器方式,EDX,选中十进制。  
破解小结:
  这个算法超级简单,所以我想重点应该在如何找到关键断点上。


    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程