vb软件破解手记

一次偶然的机会,遇到一个用vb开发的一个游戏外挂,服务器已经关闭,无法使用了,让我帮忙破解,黑吃黑,嘿嘿,有趣。

软件本身加壳,有服务器验证,验证内容加密。在破解的时候,软件一启动就报无法连接服务器,接着退出,还好之前有人把服务器和它通信的全部数据sniffer了一把。

第一步:脱壳,用esp定律,很快就找到oep,dump,修复IAT,脱壳完毕,没什么异样之处。

第二步:用ida pro扫,得到了一堆很难看懂的代码,感觉ida本身对vb程序支持的不好,在网上找到vb.idc文件,运行后,很多vb6runtime里面的函数全部都显现出来了,但代码太大,字符信息太少,一时找不到下手的地方。

第三步:用od动态跟踪,报错弹出消息窗的时候,f12,查堆栈,很快找到程序退出点,向上找到关键点,改掉之后,程序不退了,但也无法工作了。

第四步:找到vb decompiler pro 5.0(cracked),用它分析代码,好懂很多,但很多地方明显有错,造成逻辑混乱,无法阅读,不过好在每个模块的入口提示的很准,每个按钮事件的入口给出的函数名可读性很强,利用它的指引用od动态暴力修改外挂逻辑,让它在无服务器下进入工作状态,发现总是莫名其妙的进入死循环状态,看来服务器的交互必不可少

第五步:写一个简单的http服务器,当客户端发来认证请求的时候,简单的将以前抓包得到的数据发回,修改host文件,把服务器重定向到自己的服务器地址,下载vb decompiler lite 7,利用里面丰富的函数参数提示结合od动态跟踪,分析整个认证过程,发现它的通信用的密码是利用随机函数RandomNext生成的,为了稳定重现,nop掉它,并将初始值给定成抓包时的密码。发现客户端有多次请求,前几次顺利进行,界面有了可惜的改观,但最后还是报告连接服务器失败,看来客户端的确是通过服务器认证包动态获得关键数据,并在这些获取后客户端逻辑才能正常工作,同时简单的模拟服务器认证行不同,必须要得到数据包解密算法。

第六步:利用现有的抓包数据,对解密函数做单步跟踪,呵呵,很辛苦,vb的变量往往前面两个双字节是属性,第三个是一个指针,指针指向另一个地址,而文本又是用unicode保存,网络数据又是单字节的,要随时切换,看起来也比较费劲,好在咬牙坚持下来,几个小时后,完全搞明白它的算法了。

第六步:解密原有所有认证用的数据包,重写http服务器,用未做任何改动的外挂,再动态加密解密后的这些认证包,并发回客户端,客户端又恢复了生机。

 

呵呵,很多问题看似简单,其实做起来很麻烦,而看似做不了的事情,下功夫去做,也是能做出来的。(仅限于软件行业)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
反编译工具(VB Decompiler Pro):是一款针对使用Visual Basic 5.0/6.0开发的程序的反编译器。反编译工具(VB Decompiler Pro)可以被编译成伪代码p-code或native code模式。由于伪代码是由高级指令组成, 因此是很有可能反编译成源代码的(当然, 变量名,函数名等等是无法反编译的).反编译工具(VB Decompiler Pro)可以恢复众多伪代码指令,但要反编译成源代码还是有很多工作需要完成, 反编译器将帮助您更轻松的分析程序算法以及部分恢复源代码。 如果一个程序被编译成native code, 从机器码恢复源代码是几乎不可能的. 但即便是这种情形下VB Decompiler还是可以帮助你分析程序. VB Decompiler包含了一个强大的支持包含MMX和SSE的Pentium Pro指令集的反编译器. 它还包含一个代码分析器, 用于搜索所有API调用,汇编代码中的字符串引用并将结果修改为相应的注释。 加入一个程序被编译成.net汇编,反编译器将恢复所有的托管代码的数据表和模块,并且使用IL反汇编器反汇编所有的方法,函数以及事件。反编译并不需要.NET Framework并且支持所有的32位Windows操作系统。 VB Decompiler也将反编译文件中的所有的图形界面窗体以及控件。出于技术需要,反编译器可能显示所有控件的编译地址。 对于加壳VB程序,首先需要脱壳后才能正常反编译。 总而言之, VB Decompiler是一款出色的程序分析工具. 尤其是当您不慎丢失源代码并且需要部分恢复原工程的时候。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值