| 中级实例教程—之《楚汉棋缘V1.36》 |
|
| 作者:未知 文章来源:网络收集 点击数: 更新时间:2006-3-29 15:58:21
|
| 前言: 跟踪《楚汉棋缘》的算法只不过三个晚上约6、7个小时的时间, 而写出注册机却用了近一个月,大量的时间都花在大数运算库的调 试上,在这篇教程之后,俺将写一篇针对RSA 算法的详细教程。 俺是一个象棋爱好者,曾用ID“臭棋篓子”获得联众“大师” 级称号,但是俺经常会输给一个象棋程序《将族》。《将族》是90 年代初中国象棋程序史上划时代的产品,近十年来一直是俺的最爱, 可惜随着操作系统不断升级,修改《将族》以让它能够继续工作也 越来越困难。于是我一直在寻找一个棋力相当的新产品希望能够代 替它,直到碰到《楚汉棋缘 V1.3x》,看来大陆在象棋算法的研究 上落后台湾几乎有10年之久!
研究对象: 《楚汉棋缘 V1.36》,这里做个声明:俺的教程使用softice 为唯一工具,无脱壳与静态分析必要。
程序特点: 重启验证防爆破,RSA防注册机,Borland C++编译,“Borland 造”的东西(包括BC++、C++ Builder、DELPHI 等)都不能通过下 getwindowtext 之类的断点获得屏幕输入,断点必须下在windows 消息循环上,推荐使用 bpx callwindowproca。程序对用户名及假 码均进行了多次变换,最终的验证是用户名变码与假码变码之间的 验证。
前期工作: 进入注册界面,填入用户名及假码,切入softice,下断点bpx callwindowproca,F5 回到程序,随便动动鼠标即被中断进入Sice, 下s 0 l ffffff "假码", 然后bpm 假码地址,F5回到程序,按下 “注册”按钮,让假码这把“钥匙”带我们去找验证函数! 算法分析: 好了,程序对假码开始进行处理的地方就是我们要进行分析的 验证函数,找到这一函数的入口并记下地址,这样以后可以直接在 这一地址上下断点。 如下所示,这一函数有900 多行代码,还包含了数不清的call, 不过请不要惊慌,如果你仔细看俺的注释,会发现几乎所有的call 俺都是毫不犹豫地用 F10来对付的,对算法的把握完全是通过归纳 总结逐步建立起来的。
:u 430be0 L e81 001B:00430BE0 PUSH EBP 001B:00430BE1 MOV EBP,ESP 001B:00430BE3 ADD ESP,FFFFFE94 001B:00430BE9 PUSH EBX 001B:00430BEA PUSH ESI 001B:00430BEB PUSH EDI 001B:00430BEC MOV [EBP-0094],EDX 001B:00430BF2 MOV DWORD PTR [EBP-0088],004EBB08 001B: [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
|
|
[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:kinda 责任编辑:kinda |
|
上一篇文章: 流光4.5破解手记 下一篇文章: 木马克星5.33.60破解过程 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |