软件名称:
小护士 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
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破解如何给软件脱壳基础教程
查看所有0条评论>>