首页
社区
课程
招聘
[原创]新兵报道!附第一次破解过程和心得。
发表于: 2007-3-17 20:02 4149

[原创]新兵报道!附第一次破解过程和心得。

2007-3-17 20:02
4149
在看雪的ID已经注册好久了,可是因为对于加密解密一窃不通,所以只是偶尔站在门外看看,不敢发一言。

经过两年断断续续的努力,现在终于敢进来说两句了。
为了看《加密与解密》这本书,我看了不少的书来打基础,其中包括汇编、win32汇编、windows程序设计、c++思想之类的。
终于在上上个月把这些知识都初步掌握,至今为止研究《加密与解密》已经差不多一个多月了。
前天终于把该书看完,当然一遍还不够。但已经心痒难耐,于是昨天上网下载了个共享软件开始试试,经过两天的苦苦调试,终于基本

把该软件的功能限制给解除了。以下是我的解密过程和一些心得,与各位新兵朋友分享,请多多指教:
软件:windows优化大师
版本:7.7.7.308

第一步:当然是先看有没有壳,用peid看过,还好,没有。(不然脱壳就够为难我了)
第二步:用ollydbg加载,运行。发现一运行就出现异常,但不用od加载,直接运行又没问题。
        难道用了anti?(这个东西我可还没怎么搞懂),按cntr+n,发现导入了raiseexception,是不是它发现父进程是调试器就自

已抛出异常?不管,先设断。果然发现断在这里,把这句nop掉,然后运行,终于可以正常启动程序。(奇怪的是,以后我不在这里设

断,不nop掉也能进去了,不知道是什么原因,请高手指点)
第三步:打开注册窗口,随便填了个注册码,点击注册,系统没任何反应。(看来作者也作了防范,没有弹出对话框让你断),本来想

断消息wm_command看看究竟点击“注册”后它做了些什么,但od好像不支持这样的功能(是这样吗?请高手指点),后来找来了

softice想断wm_command,(之所以开始没用,主要是softice在我的xp里极不稳定,经常死机),但需要hwnd,我用proc查到,然后

bmsg,但提示找不到desktop windows,设断不成功。(我找了个记事本这样断也不行,同样的错误,这是什么原因?请高手指点.),

退出来,死机。唉,只好放弃softice。可还得在这个注册按钮上找办法啊,于是搬来filemon,regmon但也没发现什么有用的信息(难道它

判断不正确就啥都不做?),在这耗了几乎一天。第二天一睡醒,突然来了灵感,为什么不从它限制的功能上找方法?
第四步:众所周知,优化大师那个“全部删除”按钮是留给注册用户用的,呵,就从这里找。点击“全部删除“,果然有提示”。。。只能注

册用户使用。。。“,哈哈,于是bpx messageboxa,再点,终于找到了某个关键的地方。在messagebox前有一个je 指令,再之前有个

call xxxx,那肯定是call xxx返回一个bool值,如果为0就跳转到功能代码正常执行,否则弹出错误。仔细研究了一下这个xxxx,发现是一

个字符串比较函数,两个字符串分别在eax,和edx中。于是找call xxxx之前的eax和edx值,有几句mov ax,[xxx]和mov dx,[xxx],将它们都

xor成0,剩下的nop掉。再运行,哈,终于可以正常运行那个“全部删除”了。
第五步:找到关键代码,但有功能限制的地方还很多,是不是都是这样呢?又查了几个地方,发现真得如此。那破解它就相当地简单了

,只需找到以前的机器码替换成新的xor和nop就行了,找个hex workshop,替换“55FCA1F80E6D008B00”为"D29033C09090909090"

,保存,运行,哈,所有功能限制都解除了。
第六步(失败告终):现在唯一满中不足的就是那个窗口标题仍有有个“未注册”,本来以为很容易,直接寻找“未注册”替换成“已注册”

,但我全部换完,那个标题还是“未注册”,难道这个字符串放在其它文件中?我把所有dll和exe都找开,一起替换,但仍然没有效果。

(真是奇怪!难道这个字符串它也要加密吗?不可能呀,这是什么原因啊?请高手指点)

嘿嘿,这只是我的第一个解密程序,只是属于初初级,真希望什么时候也能弄个注册机。我会继续努力地!!文中有些疑问,如果有哪位

能够替我解答,在这里感激不尽!!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
2
一月看完,天才啊,我是书放在旁边,几年都看不完
2007-3-17 23:32
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
3
raiseexception用来抛出异常的。。便于程序调试
2007-3-17 23:51
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我看了一个月~~头都大了
2007-3-18 07:25
0
雪    币: 47147
活跃值: (20380)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
最初由 circleyl 发布
本来想断消息wm_command看看究竟点击“注册”后它做了些什么,但od好像不支持这样的功能(是这样吗?请高手指点),。
........

参考这个帖子:
http://bbs.pediy.com/showthread.php?s=&threadid=17671
http://bbs.pediy.com/showthread.php?s=&threadid=21532

最初由 circleyl 发布
但需要hwnd,我用proc查到,然后bmsg,但提示找不到desktop windows,设断不成功。
........

softice需要在应用程序领空下该命令才有效。

最初由 circleyl 发布
真希望什么时候也能弄个注册机。
........

论坛精华集里有相关文章,这个软件用了RSA算法。

最初由 circleyl 发布
真是奇怪!难道这个字符串它也要加密吗?不可能呀,这是什么原因啊?请高手指点........

有可能是加密的,显示的时候再将字符串解密。

最初由 circleyl 发布
为了看《加密与解密》这本书,我看了不少的书来打基础,其中包括汇编、win32汇编、windows程序设计、c++思想之类的。
终于在上上个月把这些知识都初步掌握,至今为止研究《加密与解密》已经差不多一个多月了。


磨刀不误砍柴功,接下来你的进步将会很快的。
2007-3-18 10:37
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 KAN 发布
一月看完,天才啊,我是书放在旁边,几年都看不完


只是粗略看了一遍,很多东西都没理解透彻。另外,如果有点基础的话,还是容易看懂得的。建议你也先打打基础。正如 kanxue坛主 所说,磨刀不误砍柴工。

另外,多谢kanxue给我的问题解答,新手成长的路上离不开各位高手的指点。
2007-3-18 12:24
0
雪    币: 209
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
祝贺!

厚积方能薄发
2007-3-18 14:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
同意楼上的,加油了,也给自己加油!
2007-3-18 16:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我真是佩服老兄了~你以后的成就是不可估量的
2007-3-18 18:58
0
游客
登录 | 注册 方可回帖
返回
//