万捷网络验证学习小记
首先感谢shark恒老师,第一次发帖还请关照。-本来准备分析一个.net来写破文,不料突然发现程序被删除了,无奈之下只好找了一个同学求助的帖子来和大家一起探究学习。
这次以分析两个万捷网络验证的易语言FZ来探究此验证的关键所在。
-首先从程序界面可以看出标准的万捷且由易语言编写
看到同学push窗口爆破个人觉得此方法不错,但是时常会出现无功能,少功能的情况,因为按钮事件判断后常有一些改变的变量在功能窗口有联系
此程序就是一个易语言调用大漠插件(dm.dll)的脚本程序,push窗口会导致无法注册大漠和调用dm.dmsoft的关键代码,综上所述我们采取爆破.
-惯例PEID侦壳,结果为无壳,无壳的网络验证程序犹如不穿铠甲的士兵,这样能更好的分析此验证
-废话不多说【登陆】按钮事件为爆破的关键所在,
-对于易语言的按钮事件在这里不赘述,方法多
-如下图为【登陆】按钮事件头
和众多网络验证一样开始一大堆判断向下寻找关键跳,一般来说判断push 0x52010001以外的窗口即为关键跳
-向下分析到如下图:
可见在判断之后创建了窗口,这里十之八九基本就是关键跳了我们记录下jnz-call以上的二进制:
0F 85 7E 00 00 00 6A 00 6A 00 6A 00 68 01 03 00 80 6A 00 68 D0 07 00 00 68 02 00 00 00
-接下来Nop此跳保存并运行后发现闪退,网络验证惯有的退出伎俩,下断ExitProcess 查看调用堆栈
如下图
-ExitCode=0x0 下处-右键-显示调用,如下图所示很明显的校验退出判断jmp处理
这里的退出暗桩二进制记录下来:
0F 84 0A 00 00 00 6A 00 E8 D2 58 03 00 83 C4 04 8B E5 5D C3
将中间的call用“??”通配符代替
0F 84 0A 00 00 00 6A 00?????? ?? ?? 83 C4 04 8B E5 5D C3
-处理退出后程序爆破成功,点击登陆后360拦截到注册允许(注册大漠组件的行为)这里避免了push所丢失功能问题
-爆破后程序功能界面如下图
-至此逆向工作就完成了,我这里并没有这款游戏,根据程序介绍中后他绑定操作猜想到此脚本调用大漠收费函数
在关键跳以上肯定还有一个dm.reg()函数来插件扣费,否则不能执行绑定游戏窗口的功能,这里就不跟下去了,有空的同学可以自行往上跟几下~
------------------------------------------------------------------------
用上面所述记录的特征码来爆破另外一个同版本万捷秒杀如下图
-当然同样dm.reg()函数没有在跟了,嘿嘿偷个懒。
--------------------------------------------------------------------------
到这里这次的分析就算是结束了,希望可以帮到大家.
这个万捷的版本我也不知道是具体的哪一个版本,下面的特征码大家可以根据对应的万捷做出修改和使用。
登陆按钮事件:
0F 85 7E 00 00 00 6A 00 6A 00 6A 00 68 01 03 00 80 6A 00 68 D0 07 00 00 68 02 00 00 00
退出暗桩:
0F 84 0A 00 00 00 6A 00 ?? ?? ?? ?? ?? 83 C4 04 8B E5 5D C3
感谢各位看官!
万捷验证两枚入:
**** Hidden Message *****
呵呵终于占个沙发了,谢谢,顶起来,不错。 逍遥枷锁 发表于 2015-5-27 00:22
呵呵终于占个沙发了,谢谢,顶起来,不错。
去年经常看到你的贴,我是不倒翁啦,老朋友 学习学习学 膜拜大牛 拿到地板了回家起房子去 不倒翁的帖子我觉得讲的挺详细的,如果再加上大漠插件的扣费详细分析,加个精华也不为过。 感谢分享学习经历 我也来学习学习大神的学习思路 学习学习学 膜拜大牛 特征码给力