Brainspawn-SpectR-Pro25101破解简析
软件:Brainspawn-SpectR-Pro25101大小:1.94 MB (2,040,865 字节)
MD5:E12A9BA08BA5D8080F59085A639FEF1F
工具:OD
声明:仅为学习
下载:http://www.brainspawn.com/
过程:
内容 备注
1 下载、杀毒并安装 安装过程中要求注册
2 输入用户和假码 默认为demo
根据经验,此注册信息将可能写入到系统的某个位置,有可能是文件内,有可能是注册表。
3 输入任意用户和假码注册、提示不成功 Inno制作的安装包
提示:You must enter a valid registration key.Enter DEMO for the User Name to install the DEMO version.
4 取消或以demo方式安装,去试用软件 需要宿主软件才能使用
安装目录:C:\Program Files\brainspawn\SpectR-Pro
软件限制:This software is unregistered and will function for 3 minutes.
5 试用了解软件限制,以方便爆破,但今天我们追码 还得回到安装包
根据经验,有可能将注册信息写到了注册表,而判断的正误的依据有可能在安装包中的某个文件里或是代码。
6 提取安装包、观察并分析提取的文件
2008-01-1609:16 62,976 uninst.exe
2008-01-1609:16 522,240 install.exe
2008-01-1609:16 9,877 setup.msg
2008-01-1609:16 203,342 script.bin //通过分析,只有一部分代码可以看懂。
2008-01-1609:16 287 flist.bin
2008-01-1609:16 <DIR> {app}
2008-01-1609:16 1,130,496 spectrpro.dll
2008-01-1609:16 761,856 focus.dll
2008-01-1609:16 1,097,728 spectr.dll
2008-01-1609:16 110,592 Register.exe //这个是注册部分
2008-01-1609:16 955,717 SpectR-Pro.chm
2008-01-1609:16 307,200 spectrnsp.dll
7 经分析发现它是写注册表的操作 搜索注册,找出来,双击填写上自己的名称和假码。此时不确定长度。
User Name:goodbabyLicense Key:11111111111111111111111
8 OD转入宿主软件,加载spectrpro.dll 右键查看此模块,ctrl+n(搜索当前模块中的标签)
安装时:用到RegSetValueExA
加载时:用到RegQueryValueExA//取出设定的值,此函数下断
9 下断点,重新加载软件
0F0233CE 8B1D 04D0020F mov ebx,dword ptr ds:[<&ADVAPI32.RegQue>; ADVAPI32.RegQueryValueExA
10 断下,在此处:0F0233CE 单步跟,发现这段确实是从表中取值,此步只为证明这个思路。
11 下断,在此处:0F0235CD 因为会用到这个:strncmp,字串比较。
关于这个strncmp函数,请看看资料。
到目前为止一共设了两个断点,再细看两个是不是离得不是很远,这下得更仔细的去观察下。
0F0233CE 8B1D 04D0020F mov ebx,dword ptr ds:[<&ADVAPI32.RegQue>; ADVAPI32.RegQueryValueExA
取值后,到下面来对比,习惯上的思维。
0F0235CD FF15 F0D0020F call dword ptr ds:[<&MSVCRT.strncmp>] ; MSVCRT.strncmp
12 再下断,在strncmp上面的一些位置随意下 但建议在跳转和CALL的前一条下断。如果看跳转的颜色习惯就用单击的方式直接观察。
0EFA34A1 55 push ebp ; 开始,下断
也可以在它的上面第一个跳转的前一条下断
0EFA347A 83F9 17 cmp ecx,17 ; 这里也可以下断
好了,到目前为止,一共下了四个断点。
0F0233CE0F0235CD0EFA34A10EFA347A
13 重新载入 0EFA347AF8
0EFA347A 83F9 17 cmp ecx,17 ; 真码字串23位
双击ecx修改为23就不跳
0EFA347A 83F9 17 cmp ecx,17 ; 真码字串23位
0EFA347D 0F85 74010000 jnz spectrpr.0EFA35F7
0EFA3483 807A 05 2D cmp byte ptr ds:,2D ; ds:=F0(为2D就不跳)-
0EFA3487 0F85 6A010000 jnz spectrpr.0EFA35F7
0EFA348D 807A 0B 2D cmp byte ptr ds:,2D ; ds:=BA(为2D就不跳)-
0EFA3491 0F85 60010000 jnz spectrpr.0EFA35F7
0EFA3497 807A 11 2D cmp byte ptr ds:,2D ; ds:=F0(为2D就不跳)-
0EFA349B 0F85 56010000 jnz spectrpr.0EFA35F7
0EFA34A1 55 push ebp ; 开始
说明:23位中必须有3条横线。
假想:
因23-3=20
所以,有20个非-的字串可参考输入
如:11111-22222-33333-44444
这样安排刚好有三条小横线,其它之和为20。
这只是假想,我们继续,我决定将注册表中的License:11111-22222-33333-44444
这样来试一次,结果如下:
一直到0F0235CD处,请看:真假字串的比较
0012F960 0012F990|s1 = "70CFFFABC25B07C865FC1EDBAD47B1CB"
0012F964 0012F978|s2 = "11111222223333344444"
0012F968 00000014\maxlen = 14 (20.)
出现这个后,我立即按假想对位输入
11111-22222-33333-44444
70CFF-FABC2-5B07C-865FC多出来的-1EDBA-D47B1CB
将70CFF-FABC2-5B07C-865FC直接埴入注册表中的License:70CFF-FABC2-5B07C-865FC
导出结果:
Windows Registry Editor Version 5.00
"License"="70CFF-FABC2-5B07C-865FC"
"Name"="goodbaby"
14 OD重新加载 还是重复刚才的步骤跟踪,哈哈,结果是成功。
15 总结
软件安装包一般可以提取,有些不能。
提取目的是分析以获得更多信息。
这样也绿色,如果不用虚拟机。
它的dll文件从注册表中取值(RegQueryValueExA)进行判断(strncmp)是否为正确的注册许可。
破解时可以胡思乱想,结合经验可以快速的破解,不一定要死记硬背。
为了不浪费青春,可以不用一条一条的跟,因为它不是非要一条一条的分析才破得了的。
关键是了解加密的思路与应对的方法。
OD的操作要非常熟悉。
同时要利用辅助工具计算或是获得信息。
水平有限,请批评指正。谢谢大家,以此文与同水平的朋友们共勉。 /:001 对偶来说很新鲜学习 不错的方法啊
虽然我还没有碰到过这样的情况(我破解的都很简单)
恩学习了 主要是方法
/:014 看得我头痛,不过没关系以,下载程序自己操作,慢慢搞定,谢谢楼主。 谢谢楼主的提供,对我们新手来说是不错的 是一个好的思路,值得偶学习。
页:
[1]