Michael4u电脑工作室 出品 Michael4u 屏幕捉图终结者 V2.0
软件类型: 共享软件
注册费用:人民币20元
功能限制:不注册无法保存图像(这也太狠了点吧)
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
破解过程
运行程序测试了一下,发现这个软件又是一个重新启动注册的程序,先不管它,
我们先拦截程序的注册对话框,看看有什么!
用W32dasm反汇编程序后(注意脱壳),
W32dasm 的字符串参考中双击: "请重新运行程序,以便确认注册."
来到如下代码处:
:0047C679 6858C74700 push 0047C758
我们往上看看:
|:0047C608(C)
代码略............
* Possible StringData Ref from Code Obj ->"\smhcreen.dll"
|
代码略............
* Possible StringData Ref from Code Obj ->"regkey"
|
:0047C663 BA3CC74700 mov edx, 0047C73C
* Possible StringData Ref from Code Obj ->"smhcreen"
|
代码略............
* Possible StringData Ref from Code Obj ->"请重新运行程序,以便确认注册."
你们看到了什么,看来注册码与regkey这个项有关系,可是这个项是注册表项,还是其它?
如果现在这们直接运行程序,在这里下断点,我想这时断下的也就是我们输入的错误注册码,
因为这个程序是重新启动时比较注册码的,所以真正的注册码会在开头进行比较:
打开Ollydbg 退出 W32dasm 后,打开你脱了壳的程序后,点击右键搜索,打字符参考:
找到了如下信息:
0047E174 ASCII "\smhcreen.dll"
双击这行来到反汇编如下代码处:
0047E174 |. B9 C0E44700 MOV ECX,dump_.0047E4C0 第一次,我在这行下断点
程序还没有完全运行,程序就被断在了 0047E174 按了几下F8 来到如下代码处:
真正的注册码在寄存器EDX中出现,就这样找到了注册码,
0047E1BB |. E8 84A7F8FF CALL dump_.00408944 ;\生成注册码
0047E1C0 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
0047E1C3 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ;\在寄存器中出现注册码
0047E1C6 |. E8 196AF8FF CALL dump_.00404BE4 ;\比较注册码
我要说的是,最早我在破解这个程序是在下在这行的上面打比较注册码的地方,所以每次都失败了.
我们要用心想想,程序启动时,先要读取这个文件,然后才是生成注册码,再比较注册码,如果你在
前面下断点,那也只能是了解程序是如何读取这个文件的,而无法打到真正的注册码,这就是这要说的.
所以,以后在破解这种程序时,要注意这一点!
0047E174 |. B9 C0E44700 MOV ECX,dump_.0047E4C0
我们再做个内存注册机:
*******************************
中断地址:47E1C3
中断次数:1
第一字节:8B
指令长度:3
保存下列信息为注册码选择内存方式 EDX
最后在结尾处插入字符#
程序运行后#号前面就是注册码
*******************************
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
2006-1-17
[课程]Android-CTF解题方法汇总!