【文章标题】: PB程序小试
【文章作者】: omni
【作者邮箱】: d
【软件名称】: 商业软件
【软件大小】: 21.7M
【下载地址】: 自己搜索
【加壳方式】: 无
【编写语言】: pb
【使用工具】: PEID OD PBKiller WinHex
【操作平台】: xp
【软件介绍】: 国产商业财务软件
【作者声明】: 只做交流,希望有更多的人来学习pb的编译方法
--------------------------------------------------------------------------------
【详细过程】
程序是免费发送,但是有使用单据数量限制,要先完成开发商的任务,才能用到200张凭证,过了200的限制,就必须花钱买
了,而且一次只能注册一个帐套。所以破解思路很明显,去除使用单据限制即可。最后要说的是程序的限制提示出现在凭证
结账模块里面,所以,我直接分析关键模块。
文件主程序查壳achs.exe>>>Microsoft Visual C++ 5.0 [Overlay]
1.OD载入 搜索不到任何可用的文本信息,发现总是在pbvm90.dll里面转,才发现是PB的库,于是只有用PBKiller来分析代
码(是挺方便,就是不能修改文件,呵呵,美中不足)
2.直接分析关键文件acc.pbd,找到其中W3_1PZJZ窗口 ,展开找到按钮事件controls---cb_1---events---clicked()
代码如下:
if pub_pj = "1" and pub_demo = "1" then
if v_row > 100 then
messagebox("提示","每月凭证不能超过100张!")
return
end if
end if
if pub_pj = "2" and pub_demo = "1" then
if v_row > 200 then
messagebox("提示","每月凭证不能超过200张!")
return
end if
end if
if pub_pj = "3" and pub_demo = "1" then
if v_row > 300 then
messagebox("提示","每月凭证不能超过300张!")
return
end if
end if
---------------------------------------------------------------
代码非常清晰,不用多说,下面要做的是修改代码。
1.目前只有WinHex等16进制编辑工具来修改,关键是如何找你要的16进制数.
2.用WinHex编辑后,找字符串“每月凭证不能超过200张”
发现附近没有100,200,300我们要改的数字,但是我反复的看这些字符串前面有“1 每月凭证不能超过100张! ” “2 每月凭证不能超过200张!” “3 每月凭证不能超过300张!”的特征
也刚好对应着 if pub_pj = "1" and pub_demo = "1" then//if pub_pj = "2" and pub_demo = "1" then//if pub_pj = "3" and pub_demo = "1" then
3.直接用WinHex修改对应的16进制数:02 00 31 00 C3 BF D4 C2-----02 00 34 00 C3 BF D4 C2(1改为4)
00 00 06 00 02 00 32 00-----00 00 06 00 02 00 34 00(2改为4)
06 00 02 00 33 00 C3 BF-----06 00 02 00 34 00 C3 BF(2改为4)
4.保存退出,发现,结帐限制已经没有了。
DONE
--------------------------------------------------------------------------------
【经验总结】
目前.Pbd文件修改的方法,只有用16进制修改工具,找关键点的方法,希望大家都说说,自己在调试PB的时候,都用的什么
方法,呵呵,我希望想大家多学学。
本人表达能力不好,别笑话我!!!
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!