首页
社区
课程
招聘
[旧帖] [原创]一个新手艰苦的三年破解pb之旅 0.00雪花
发表于: 2016-2-28 14:24 4024

[旧帖] [原创]一个新手艰苦的三年破解pb之旅 0.00雪花

2016-2-28 14:24
4024
第一次发帖,不懂的请大神指点哈
本人四年前花了5k软妹币购买了某公司的进销存软件,

当时用起来很舒服,从来也没想过有一天回去破解它
后来因为种种原因需要升级,软件公司有要求给升级费2k
此时,我就已经有了破解它的念头,网上阅读了大量的书籍,都是软件用的是加密狗,易锁的,据说很难破解,因为当时什么都不知道,无从下手,找了淘宝的人想破解,可是淘宝的人说只卖断,意思就是要几万,然后给我做个注册机,我就想,万一别人的注册机制换了,那我不是傻了吗?
所以我就没有选择淘宝破解
无奈之下,就放弃了破解,掏了钱用了几个月后,因为业务拓展需要加一个前台,我曹,软件公司,又要钱,数据库也在我们这里,服务器自己电脑里面,我注册的钱给你了,我升级你要钱,我加一个前台你还要钱,太贪了,前前后后给了好几万了。
这次下定决心破解这个软件。
楼下放破解的辛酸路程

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
打开文件目录

全是pb什么什么的,开始搞不懂,于是百度,查
说的也不懂,又陷入迷茫
然后又一次软件出问题了,显示,odbc 啥 sysbase 啥  asa  不能链接,我马上掏出手机拍了下来
然后就去百度,原来软件用的是sybase的powerbuilder写的一个软件,用的asa数据库
,然后我就开始学习asa,下载了,powerbuilkder,asa等等一系列教程,软件,
学了那么久,发现没啥用,软件写成了一个服务器,就像狗咬刺猬,无从下口
又陷入迷茫。
上传的附件:
2016-2-28 14:32
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
从开始用软件到知道软件是pb写的,两年时间,请原谅一个什么都不会的菜鸟,
再后来,我已经用excel的时候发现介绍access小型关系数据库的文章,很好奇,于是就开始学习,access,这个其实不难,几天就会了,然后就是写一个用access的软件,于是又百度,找到了vb,vb写了一个勉勉强强的垃圾程序,期间收获了不少东西,然后突然看到一篇文章,说sybase对比vb的,asa刚好在里面,瞬间把我吸引住了,看完后,我有下载了,pb9.0
因为我用是这个软件有一个文件叫pbvm90.dll我估计是9.0版本的
下载下来后慢慢学,发现比vb难一点,不好掌握,写一个登录的窗口就写了好久,之后就是连接数据库,刚合适就有一个asa的数据库选项,我马上找到我软件后台服务器的data文件,找到一个leader.db的文件,连接在我乱写的数据库里面,发现秘密不对,于是又百度,找到一个破解asa数据库密码的办法,http://blog.csdn.net/lijianhe043/article/details/7178574
然后就无意间翻到了看雪论坛,于是就顺便注册了一个账号,发现了好多文章,http://bbs.pediy.com/showthread.php?t=65646还有
大神KILILhttp://bbs.pediy.com/printthread.php?t=17308
学到了很多东西,,,下面我来说下我的破解过程,,到目前为止还没有破解完成,希望大家能给点思路,指导指导
2016-2-28 14:43
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
打开pbkill

里面大部分代码都是变量,没啥意思,
然后打开同路径下的share.dll
有意思多了,getrealid,getrealid,getproductid等关键函数都出来了,
然后发现少了一个最关键的计算注册码的,
这是正版注册码
全是乱码。看不懂
然后发现,注册文件通过导入即可注册和加点,那肯定在数据库内部有一个函数是解密的,于是找数据库的表,这个表里有一段乱码
清空乱码后,数据库不显示授权点数
添加后数据库显示授权点数,于是我想这个可能就 是关键,都是没有解密过程不知道怎么做的,于是又找
在储存进程里找到了了
然后找到
getrealid getxkzh 等

create function DBA.getxkzh(in vvalue char(16))
returns char(50)
deterministic
begin
  declare xhzk char(50);
  declare ls_char char(1);
  declare x integer;
  declare y integer;
  declare z integer;
  declare v integer;
  set xhzk='';
  set ls_char=substring(vvalue,8,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,3,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,10,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-20),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,15,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,1,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,3,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-28),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,7,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,15,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,8,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-31),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,10,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,14,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,3,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-22),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,7,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,11,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,16,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-37),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,14,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,9,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,1,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-25),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,11,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,2,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,6,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-7),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,2,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,6,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,10,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-24),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,3,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,1,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,12,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-16),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,9,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,7,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,1,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-18),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,13,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,4,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,7,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-4),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,2,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,14,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,1,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-19),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,13,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,15,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,9,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-39),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,12,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,1,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,2,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-12),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,16,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,8,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,11,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-15),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,3,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,11,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,7,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-26),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,11,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,2,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,14,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-34),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,2,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,11,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,7,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-27),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,6,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,7,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,16,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-23),100);
  set xhzk=xhzk+ordertochar(v);
  set ls_char=substring(vvalue,12,1);
  set X=ASCII(ls_char);
  set ls_char=substring(vvalue,2,1);
  set Y=ASCII(ls_char);
  set ls_char=substring(vvalue,11,1);
  set Z=ASCII(ls_char);
  set v=mod(abs(X*Y+Z-13),100);
  set xhzk=xhzk+ordertochar(v);
  return xhzk
end

有用到了另外一个函数 ordertochar(),在上面找到了该函数

create function DBA.chartoorder(in id char(20))
returns char(50)
deterministic
begin
  declare rvalue char(50);
  declare li_len integer;
  declare i integer;
  declare ls_char char(1);
  set rvalue='';
  set li_len=datalength(id);
  set i=1;
  while i <= li_len loop
    set ls_char=substring(id,i,1);
    set rvalue=rvalue+trim(str(ASCII(ls_char)));
    set i=i+1
  end loop;
  return rvalue
end

到这里我就没办法了,至于计算机器码和产品序列号,加密狗,软件会自动生成,
我现在就想问一下,这个两个函数怎么用,可以把注册文件内容翻译出来,
上传的附件:
2016-2-28 15:08
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
请各位大神帮帮忙支支招,
2016-2-28 15:10
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
安卓apk脱壳工具还有呀?
2016-2-28 15:51
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
大神都要晚上上线吗
2016-2-28 16:51
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢楼主的分享。。。
2016-2-28 18:10
0
雪    币: 80
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
进销存也来了啊
2016-2-29 10:37
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
高手,学习了
2016-2-29 11:22
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
好经验,值得分享。
2016-3-3 14:48
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
软件公司就是这样的 你要加点什么肯定要钱
2016-10-8 22:03
0
雪    币: 11
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
没有买卖就没有桑害,楼主现在破解成功了吗,可以去众测板块发布注明酬劳
2016-10-9 08:44
0
雪    币: 241
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我现也遇到类似的问题。
2016-12-2 23:07
0
雪    币: 3334
活跃值: (109)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
闹了半天,是求破的,我是来看原创技术文章的啊,喂,手动滑稽
2016-12-6 15:07
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
17
OD动态调试,直接改为无限制版
2016-12-6 15:20
0
游客
登录 | 注册 方可回帖
返回
//