前两天同学发给我一个软件,叫我看看。叫做“监测人批量绘制过程线软件”,软件功能倒是看了半天没看懂。程序为试用版的,有诸多限制,而且还有一些流氓软件的特性,于是索性自己DIY一把,去掉限制,破解之。
首先,运行一下软件,弹出如下框:
REG文件也就是注册表文件喽,我们打开看看是什么东东,监测人软件注册.reg的文件内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
“jianceren”=”C:\\windows\\jianceren.exe”
呵呵,一看就是向注册表项中加开机自启动项,而且路径还是C:\\windows\\jianceren.exe,看了下目录里面,有一个jianceren.exe,估计运行的时候被拷到windows目录下面去了。OK,分析到这,我们已经知道运行程序必须设置它的一个程序为开机启动,光这一条,就可以定它为流氓软件了。
OK,我们先按它要求,将注册表文件导进去,等搞完了再删之。运行注册表文件后再次运行,就OK了。这时去windows目录下面去看,已经出现了jianceren.exe这个文件。我们用监测软件也能够检测出来,如图:
jianceren.exe文件运行时如图,是个弹窗流氓东东。
拷贝文件的动作暴露无疑。好的,我们先删除jianceren.exe这个文件,运行程序,这时会有提示如图:
说明程序每次运行的时候都会进行检查,那么我们现在来DIY,使程序能在没有运行注册表文件和不存在jianceren.exe这个文件的时候也能正常运行。
首先PEID查壳,VB的,无壳。那么直接就OD载入,既然有提示框,我们就下bp rtcMsgBox这个断点,运行程序,断下来后会来到如图代码:
按照图中的注释的方法进行更改,搞定注册表这一项。同样的方法来到文件拷贝的地方,如图进行更改:
好的,现在已经没什么限制就可以正常运行了,但是程序的标题还是有试用版的字眼,我们用VBExploer这个工具来改掉标题,运行后如图:
这个版本本来就是有功能限制的,但是有的还是可以去除,比如这个设置曲线数据的这个地方,不能超过2:
我们同样用下消息断点,分析后得到如图结果:
在离消息框最近的那个JE跳转修改JE为JMP跳转就可以了。其它曲线数目设置的地方类似。
到此功能限制已经基本去掉了,但是后来我又分析了一下,用VBDeDe这个工具分析如图:
这说明软件本身是有注册这个窗体的,只是不能调用出来。分析窗体的文字和事件后找到了注册按钮的事件地址:
那么我们需要有一个地方来调用这个过程,我这里是改的“文件->退出”这个菜单,我们首先把“退出”文字改成“注册”,在OD中Ctrl+B进行二进制查找,在ASCII码中输入“退出”进行查找,找到后到数据窗体口跟随,选中文字后按空格进行修改,在ASCII处输入“注册”。
然后我们需要找这个菜单的单击事件地址。我们观察到单击菜单后会新建一个窗体,于是我们就用 bp CreateWindowExA 这个断点,中断会按F9运行,记下最后一次F9(程序跑起来的F9)的次数,然后重新开始,去最后一个F9,再F8单步走,一直走到程序的领空为止。然后我们向上拉,来到段首,发现有一个JMP跳到段首处,我们跟到JMP去,就发现了菜单项的事件跳转代码处:
我们把“00451A45 . E9 66150500 JMP 功能限制.004A2FB0 ; 文件-退出”这一行的JMP 地址改为我们刚用VBDe得到的注册按钮事件的地址。
改好保存为我们再来进行注册事件的跟踪,单步跟下去,很简单,我就直接帖需要更改的地方了:
004BDFAE . 66:85C0 TEST AX,AX
004BDFB1 . 0F84 8C030000 JE 功能限制.004BE343 ; 注册码为空的跳,NOP掉
004BDFB7 . 8B13 MOV EDX,DWORD PTR DS:[EBX]
004BE024 . 53 PUSH EBX
004BE025 . FF91 00070000 CALL DWORD PTR DS:[ECX+700] ; 跳向一个网页,NOP掉
004BE02B . 85C0 TEST EAX,EAX
全部完工后程序运行如图:
该软件的下载地址为:http://www.jianceren.cn/down/soft/201012/19-5950.html
记录:
From6 为注册窗体
Formload:BE560
注册按钮 地址:004BDD50
菜单事件代码:
004519C8 . 816C24 04 430>SUB DWORD PTR SS:[ESP+4],43
004519D0 . E9 4BF80400 JMP 功能限制.004A1220 ; 7
004519D5 . 816C24 04 5B0>SUB DWORD PTR SS:[ESP+4],5B
004519DD . E9 DEF90400 JMP 功能限制.004A13C0 ; 4个
004519E2 . 816C24 04 4F0>SUB DWORD PTR SS:[ESP+4],4F
004519EA . E9 11FC0400 JMP 功能限制.004A1600 ; 5个
004519EF . 816C24 04 6B0>SUB DWORD PTR SS:[ESP+4],6B
004519F7 . E9 44FE0400 JMP 功能限制.004A1840 ; 6
004519FC . 816C24 04 570>SUB DWORD PTR SS:[ESP+4],57
00451A04 . E9 D7FF0400 JMP 功能限制.004A19E0 ; 8
00451A09 . 816C24 04 330>SUB DWORD PTR SS:[ESP+4],33
00451A11 . E9 6A010500 JMP 功能限制.004A1B80 ; 启动时
00451A16 . 816C24 04 670>SUB DWORD PTR SS:[ESP+4],67
00451A1E . E9 FD0E0500 JMP 功能限制.004A2920 ; 第二个菜单
00451A23 . 816C24 04 FFF>SUB DWORD PTR SS:[ESP+4],0FFFF
00451A2B . E9 30110500 JMP 功能限制.004A2B60
00451A30 . 816C24 04 470>SUB DWORD PTR SS:[ESP+4],47
00451A38 . E9 33130500 JMP 功能限制.004A2D70 ; 3个
00451A3D . 816C24 04 370>SUB DWORD PTR SS:[ESP+4],37
00451A45 . E9 66150500 JMP 功能限制.004A2FB0 ; 文件-退出
00451A4A . 816C24 04 FFF>SUB DWORD PTR SS:[ESP+4],0FFFF
00451A52 . E9 C9150500 JMP 功能限制.004A3020 ; 启动时
00451A57 . 816C24 04 FFF>SUB DWORD PTR SS:[ESP+4],0FFFF
00451A5F . E9 FC160500 JMP 功能限制.004A3160 ; 启动时
注册处代码:
004BDFAE . 66:85C0 TEST AX,AX
004BDFB1 . 0F84 8C030000 JE 功能限制.004BE343 ; 注册码为空的跳
004BDFB7 . 8B13 MOV EDX,DWORD PTR DS:[EBX]
004BE024 . 53 PUSH EBX
004BE025 . FF91 00070000 CALL DWORD PTR DS:[ECX+700] ; 跳向一个网页
004BE02B . 85C0 TEST EAX,EAX