在看雪的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期)