【文章标题】: 简单分析某PB软件+VB注册机
【文章作者】: playx
【作者邮箱】: playx@km169.net
【作者主页】: http://playx.ys168.com
【作者QQ号】:
【软件名称】: 某代收货款综合管理系统
【软件大小】: 1x m
【下载地址】: http://115.com/file/clftzpso#
【加壳方式】: NO
【保护方式】: 序列号
【编写语言】: PB9.0
【使用工具】: OD,PBDeCompile,shudepb,windows计算器
【操作平台】: winxp-sp3
【软件介绍】: 一款物流企业代收货款软件,PB开发。
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
最近帮朋友分析一个物流类代收款软件,安装后到目录下一看,一大堆PB打头的DLL文件。不用说,肯定就是PB
开发编译的软件。
按照朋友说的步骤,试着运行一下,发现只是序列号保护,一机一码,并且没有加壳。
OD载入试着跟踪一下。
F7跟进来到这里
下了几个断点,跟了一会,虽然能断下,但没有任何结果。众所周知,PB编译的软件和VB、VF类似,都是解释类语言,跟踪调试起来很头大,一直会在DLL中打转,即使找到了关键点,也是在DLL中。
既然是解释执行,如果代码没有混淆的话,应该可以用工具还原,于是就想到了用反编译软件读出源码来分析一下。
先找到一款PBDeCompile,软件不错,但是DEMO版有长度和行数限制,读出的代码关键地方看不到。于是又找了一款shudepb,这个不错,虽然也是DEMO版,但基本没有限制,所有的代码都能读出。
在反编译模块中,使用全局搜索出错提示,找到了两个地方:
可以看出,在模块"w_registration.win"中,"cb_save"就是在注册窗口中,鼠标点击确定的事件。然后接着在
此模块中查找,终于在“fg_crack”这个模块中发现如下代码:
呵呵,有编程经验的朋友已经看懂了吧,对啦,这就是系列号生成和注册码计算的算法!
算法总结:
1、取软件号(由C盘的序列号作简单运算而来)*1741 + 436715 ,结果计作A
2、先从A的第5位开始取至结尾,然后再取A的前4位,结果就是注册码。
用VB 写了个简单的注册机:
--------------------------------------------------------------------------------
【经验总结】
1、PB编译的软件,如果代码被完全反编译,基本无秘密可言。
2、如果要动态调试,需要很大的耐心,一般都会放弃。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2011年12月02日 AM 12:14:52