吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 19833|回复: 27
收起左侧

[原创] 利用TRW2000和W32DASM破解16 Bit NE FORMAT可执行程序

  [复制链接]
Pnmker 发表于 2015-5-17 23:03
本帖最后由 Pnmker 于 2015-5-28 19:05 编辑

       最近朋友给了一个五子棋的游戏让帮忙破解,把悔棋需要注册码给破掉。因他说程序比较老,不能在现在的64位系统上运行,故而询问他得知是90年代的。一听到是这个年代,我一阵暗喜,想那个时候程序应该加壳的意识不强,即便有应该也不会多么强的壳,OD几下子应该就可以搞定了。
       不过,没想到当程序拿到手之后OD加载运行直接提示不是有效的PE格式,无视继续调试时搜索字符串无论是ASCII还是UNICODE都无法搜出悔棋时提示的字符串。使用ResHacker查看资源也有类似的提示。如果是这样的话,,麻烦就有点大了,OD可能就无法进行破解了,因为C/C++方面我所熟悉的破解工具就只有OD而已。
       后来,在家中经过多方面的工具查找验证原来这个五子棋程序是16位NE 格式的可执行程序。呵呵,这下我可大开了眼界,原来除了PE格式之外还有一种叫做New Executable格式的可执行程序,只好恶补了一下这方面的历史知识。不过这对破解帮助不大,我还是不知道该用什么工具去破解。
      于是去论坛里问大牛,大牛们回复说用windbg、softice或者TRW2000。windbg和softice曾经安装感受过,当时是感觉它们都过于复杂了,现在更是心里一点怵怕的感觉。至于TRW2000则完全没有用过,我自信自己是一个接触新东西很快的人,对它就没有什么怕的。
大牛们说TRW2000要在win9x系统下使用,临时下系统装系统,(当然是在虚拟机环境下),经过验证win98运行有点问题,win95则完全正常!
       好了,至此废话说了一大堆,主要是想把整个的破解过程写下来,也算是日后自己反悟的一个历程,当然同时也希望对各位痴迷于破解的道友有所帮助。下面正式进入破解话题。


       首先,明确一下破解目标,就是把下图中的关于注册码的弹窗去掉,并能够正常实现悔棋。
                                          0.JPG

       第一步,当然是开TRW2000载入五子棋的程序,然后出现经典的TRW2000调试界面,如下:
                                          1.jpg

     果断下断点bpx messagebox,返回五子棋界面运行程序,结果并没有达到预期的弹窗出现时中断的效果。
                                       

2

2

看来,注册码提示窗口还不是经典的MessageBox弹窗,那会是怎么弹出来的呢?这下我又蒙了,TRW2000这是我第一次用,更深入的功能暂时不会,一时之下就不知道该如何是好了。这时我的第一个想法就是,如果能像IDA一样把程序整个反汇编出来该多好,静态分析是我最擅长的,说不定可以通过阅读汇编代码找到一个窍门。马上上网查找16位程序的静态分析工具,呵呵,下面该W32DSM出场了。
       W32DSM中打开五子棋程序,进行反汇编如下:
                                       

3

3

嗯,效果不错,反汇编的额外注释也比较丰富,读起来也比较轻松,大致浏览代码发现其中有几处出现call USER.DIALOGBOX :
                                        4.jpg

好吧,就在此函数下断,马上在TRW2000中输入bpx dialogbox回车,运行程序进行悔棋,哈哈,成功中断!!!
                                        5.jpg

然后,马上执行PMOUDLE命令返回五子棋模块WMAKE5所在的领空,发现紧接着call USER.DIALOGBOX下一条指令的偏移值IP0BED。下面又轮到W32DSM出场了
                                        6.jpg

切换到W32DSM,查找到偏移值为0BED的那一条指令,然后仔细阅读这条指令前后的代码可以得出以下结论:
                                     7.jpg

切换回TRW2000,在0C250C3E0C550DEE0E59处下断:
                                     8.jpg

切换到五子棋程序,进行悔棋操作,哈哈,程序又成功中断在了0DEE处,这下就可以找到程序判断注册码是否有效的代码段了!
                                    9.jpg

再切换到W32DASM中转到0DEE处,仔细阅读前后的代码,可知偏移0DD6处的je 0DEA
代码即是跳转到弹出注册码无效提示执行的关键指令,只要修改此处不进行跳转即可!
                                     10.jpg

现在,关键指令行已经找到,现在只要对其进行修改就OK了,W32DASM的强大之处就在于此,它不仅可以静态反汇编,也可以调试32位程序(可惜的是不支持16),而且还可以对指令进行修改!
由于je0DEA指令对应的机器码为2字节,因此只需要两个nop即可,但对应16位的nop我不确定,而且恰好其上一行的指令or ax,ax也是2字节又不影响后续指令的执行,因此暂时就用or ax,ax来替换je 0DEA吧。
                                     11.jpg

替换为之后点击“应用”就大功告成了!用W32DASM打开应用之后生成的破解后的程序Wmake5_bak.exe,转到0DD6处查看,嗯,修改成功!去运行程序操作一下看吧,哈哈,悔棋再也没有那个讨厌的弹窗了,而且也可以正常悔棋了!!!!
                                     12.jpg

欢迎大家拍砖!

五子棋程序下载链接: http://pan.baidu.com/s/1qWysrcK 密码: p9p5

免费评分

参与人数 10热心值 +10 收起 理由
610100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
seven06886088 + 1 我很赞同!
297044530 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
刘宏伟大人丶 + 1 已答复!
xiaolei0517 + 1 我很赞同!
Tortoise + 1 谢谢@Thanks!
马斯维尔 + 1 我很赞同!
零點風暴 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
这只猪 + 1 好古老的东西。。。
smile1110 + 1 大开眼界

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

蚯蚓翔龙 发表于 2015-5-17 23:31
又一个不错的分享贴哦,记得160个CM的第12个就是NE格式的,OD没办法调试,IDA应该猜可以调试(不过我不懂)
TRW可能用得上了,你这个程序似乎还算简单,那个对于那个CM来说只能静态反汇编,虽然结果也是没什么好结果,虽然代码在IDA里面就十几行...
头像被屏蔽
king8222 发表于 2015-5-17 23:48 来自手机
beta 发表于 2015-5-18 08:55 来自手机
Hmily 发表于 2015-5-22 22:24
16位程序的破解分析太少了,感谢Pnmker分享,加精鼓励!
vigers 发表于 2015-5-22 22:50
16位的都能破解,很费心思{:1_931:}
ningzhonghui 发表于 2015-5-22 23:53 来自手机
从没碰到过,学习来了
Jacve 发表于 2015-5-23 10:43
接触到的16位程序都没到16个
山顶的一棵草 发表于 2015-5-23 12:17
我想玩五子棋
carloslau 发表于 2015-5-23 12:36
不错,很详细,谢谢。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-21 20:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表