首页
社区
课程
招聘
[旧帖] [求助]关于顶尖酒店管理软件 0.00雪花
发表于: 2010-6-23 11:37 2934

[旧帖] [求助]关于顶尖酒店管理软件 0.00雪花

2010-6-23 11:37
2934
各位老师好!
我是初接触破解滴,学了3年C语言,3个月汇编,来到看雪论坛,看了许多贴,破解第一个软件时感觉很简单,用会软件就可以了。但随着时间推移,发现自己连门都没入

上周就开始研究顶尖酒店管理这款软件了,这个网上有很多破解版,但是都是骗人的,输入注册码后依然有使用次数限制。于是就想尝试一下破解,用languagelq和peid查看发现没有加壳,接着使用W32Dasm-v9查看,发现字符串是乱码,用OllyDBG_1.10和eXeScope查看exe和dll文件想找出有利的信息,可由于水平太低,弄的自己满头雾水,只能死马当活马医,使用WinHex把自己认为可疑的代码,逐一改了改,结果还是不行。无赖只得到论坛求助各位高人,指点一二,关于此软件的一些破解思路。给点提示!谢谢
(注:本人破解此软件,没有任何商业目的。)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (23)
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
软件下载地址呢
2010-6-23 15:39
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
本软件采用powerbuilder编译,给出一个思路:Powerbuilder采用伪码解释执行,所以通过OD会很累,应该顺着伪码解释的路子往下走。由于是解释执行,所以其源码非常容易获取,算法也很容易就找到了,注册机也就。。。。。由于作者仍在商业应用,考虑到其本身权益,破解过程略。
2010-6-23 18:19
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
上个截图,序列号部分隐藏!
上传的附件:
2010-6-23 18:28
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
酒店管理软件是用PB写的,写一个比你破解还要简单吧,我做过专门做酒店软件的灏捷的二年后勤,感觉服务和人脉比技术重要得多
2010-6-26 03:03
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看不懂,为什么我得显示vc呢。
上传的附件:
2010-6-26 08:02
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
软件检测只是一个参考,在OD中实际运行时,你会看到程序主要通过pb*.dll来执行,而这几个DLL都是PB的运行库。由于PB的解释特性,实际上用户代码都在*.pdb文件中,这时候就可以考虑反编译了。实际上,本程序的正版注册只是作者设计的陷阱,伪注册而已。伪注册代码如下:
if ((((((((upper(parent.sle_2.text) = "DVCHEN") or (upper(parent.sle_2.text) = "DVCHEN[OCN]")) or (upper(parent.sle_2.text) = "DVCHEN[D4S]")) or (upper(parent.sle_2.text) = "CHINADFORCE")) or (upper(parent.sle_2.text) = "CHINAOCN")) or (parent.sle_2.text = "5CCLUB")) or (parent.sle_2.text = "樱园阁酒店")) or (upper(parent.sle_2.text) = "5CCLUB")) then
        messagebox("提示","注册成功!!!")
        return
end if

ls_hotel_name = parent.sle_2.text

if parent.sle_1.text = convert10to16(f_get_py(ls_hotel_name)) then
        messagebox("信息","注册成功,感谢您购买顶尖软件")
else
        messagebox("信息","你输入的注册号码不正确")
end if
因此,你的注册名只要是:DVCHEN、DVCHEN[OCN]等等内置的名称,哪怕没有注册码也能显示注册成功。如果不是内置名称,那么其伪注册码为注册中文名的汉语拼音的第一个字母(大写)的ASCII码,例如中国大酒店,那么注册码就是ZGDJD的ASCII码。但是,这只是伪注册,注册成功只是假象,哄你开心而已。由于PB的解释执行特性,作者在反破解方面做了大量的工作,可以说能想的都想了:门卡注册、身份证注册、代理商OEM注册均采用了不同的掩码转换,不过程序的脆弱性也非常致命,由于影响原作者的利益,我就不写下去了,各位可以自行发挥,另外程序验证正版的方式是硬盘序列号的转换,不过作者做了巧妙的设置,以便用户即使换电脑也不受影响,呵呵,挺有趣的!
2010-6-28 09:34
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
首先谢谢各位的热心帮助!根据楼上的提示本人用PBKILLER查看了PDB文件,在Public_env.pdb里的w_zhuce里找到到了,楼上所说的伪注册代码,收获不少,在此表示感谢!但是对于破解依旧头绪全无!在之后的Events里发现这样的代码“cb_2 = create cb_2
cb_1 = create cb_1
sle_2 = create sle_2
st_3 = create st_3
st_5 = create st_5
st_4 = create st_4
sle_1 = create sle_1
control[] = {cb_2,cb_1,sle_2,st_3,st_5,st_4,sle_1}”我没有学过PB,不知道是不是这里,给我感觉这里应该是给数组赋值!算法还是没什么发现!看来的学习一下PB才可以哦。继续努力。
2010-7-11 21:18
0
雪    币: 173
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不用看了,官网上下载的是试用版,也就是一个伪注册的东西,即使注册成功也没有用,手上有正式版的,但是经过了混淆之类的,使用PBKill2.5看到一大堆花指令,需要原版的可以联系我
2010-7-12 23:23
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我不需要原版,我只是想破解,去学习!谢谢。
2010-7-13 11:37
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
楼上的朋友说这样段是伪代码:
IF (((((((upper(PARENT.sle_2.text) = "DVCHEN" OR upper(PARENT.sle_2.text) = "DVCHEN[OCN]") OR upper(PARENT.sle_2.text) = "DVCHEN[D4S]") OR upper(PARENT.sle_2.text) = "CHINADFORCE") OR upper(PARENT.sle_2.text) = "CHINAOCN") OR PARENT.sle_2.text = "5CCLUB") OR PARENT.sle_2.text = "樱园阁酒店") OR upper(PARENT.sle_2.text) = "5CCLUB") THEN
messagebox("提示","注册成功!!!")
RETURN
END IF

那么我想这段应该是真的了。好像通过”convert10to16(f_get_py(ls_hotel_name)) “转换了一下。没学过PB。猜测而已!不知道我的想法对不对!如果对的,那么convert10to16的作用是不是把10进制的转为16进制的!个人感觉f_get_py可能是个函数哦。用来加密信息的!请各位多多指教!下一步该如何处理!

ls_hotel_name = PARENT.sle_2.text
IF PARENT.sle_1.text = convert10to16(f_get_py(ls_hotel_name)) THEN messagebox("信息","注册成功,感谢您购买顶尖软件")
ELSE
messagebox("信息","你输入的注册号码不正确")
END IF
RETURN
2010-7-13 15:14
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
convert10to16(f_get_py(ls_hotel_name)) --------这个的作用就是算出注册中文名的汉语拼音的第一个字母(大写)的ASCII码,例如中国大酒店,那么注册码就是ZGDJD的ASCII码,然后用16进制制表示,不过,遗憾的告诉你,这个也是伪注册,呵呵!再透露一点信息吧:OEM分为三级:普通、高级和VIP级,使用OEM权限可以修改程序的资源,例如启动画面、软件名称等等。普通OEM ID是100,高级是5018,VIP是5088。数据库密码也透露出来:用户名:dba,密码:dj,剩下的自己摸索吧!门卡接口、身份证接口等都是通过转码实现的,例如:1对应于5,2对应于6等等,从而实现伪加密!
2010-7-23 13:21
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
有段时间不上来。终于看到大侠的回复了。非常感谢!这段时间工作太忙。今天抽了点时间看了一下PB语言学习了一下PB9.0的使用。感觉还不错。调试起来蛮方便的!
对于convert10to16(f_get_py(ls_hotel_name))这个函数我今天用PB做了个计算器。呵呵还不错。但是不知道怎么回事函数老是调用不了,没办法直接在单击事件里写代码!呵呵!接着想写个加密计算器。也就是这个函数“//Public function f_get_py (string hz) returns string  ”但是不知道“GOTO LABEL_KENSHU_237”这条语句的作用!一会再好好研究一下源码。找找这个代码!
大侠不亏是大侠哦。数据库密码都找出来了。请问能否告诉我是怎么做到呢?OME这一块我一直没想过!感谢你的提醒。俺再好好看看。学习学习!
对了在程序里看到很多“goto label_74”不知道那个label是个什么。在那里哦。
呵呵……那个OME信息我也看到了,在W_OME的cb_1里面!
凌晨2点。终于打开了数据库,并把数据导入到SQL里了。PB不熟悉,还是SQL好用!呵呵。发现在use_pass表中居然还记录了cpu_id。不明白这里的注册为什么是整型?好像数据库中没有什么有用的信息哦。还的从源代码入手!
2010-8-13 20:57
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
凌晨三点了!顶不住了,发现源码中有好几个f_get_py 函数。不知道那个才是加密注册信息函数!明天再看看吧!感谢各位的关心与支持。没有基础,没有老师,学这个东西真是太难了!是坚持还是放弃……

最后又重新看了一下IBMING的回复,发现“另外程序验证正版的方式是硬盘序列号的转换,不过作者做了巧妙的设置,以便用户即使换电脑也不受影响,呵呵,挺有趣的! ”难道要从这块入手。明天继续努力一把!
2010-8-14 03:09
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
发现如下代码,不知道是否正确
f_center_win(this)
ls_net = profilestring("config.ini","Database","网络","0")

if ls_net = "1" then

        if gs_net_zch = encode(string(gi_zds * gi_zds) + f_get_py(gs_hotelname) + string(gi_zds)) then
                st_2.text = "已通过 " + string(gi_zds) + " 站点网络版正版注册"
        else
                st_2.text = "目前软件还没有进行正版认证"
        end if

这个gi_zds是什么意思。是不是变量。它的取值应该是什么???
2010-8-15 23:53
0
雪    币: 228
活跃值: (3163)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
16
新人路过 随便看看
2010-8-16 01:47
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
不明白哦!原版。难道我们下的都不是原版。还是。
2010-9-4 15:27
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
学习来了!!!!!!!!!!!!!!!!!!!!
2010-9-4 22:06
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
好深奥。。。我是菜鸟   刚刚开始学习破解   哎   努力 努力 努力·
2010-9-4 23:24
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
if len(s_old) > 17 then
        s_old = mid(s_old,1,17)
end if

for li_index = 1 to len(s_old)
        ls_return = mid(s_old,li_index,1)
        ls_return = zhuanbian_jihuoma(ls_return)
        ls_encode = ls_return + ls_encode
next

ls_encode = string(dec(ls_encode) + 272345)

for li_row = 1 to len(ls_encode)
        ls_4 = mid(ls_encode,li_row,1)

        if ls_4 = "4" then
                ls_encode = replace(ls_encode,li_row,1,"6")
        end if

next

return ls_encode
2010-9-5 02:29
0
雪    币: 91
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
完全不懂嘛。。饿
2010-9-5 08:20
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
弄了好久了,还是不行。硬盘序列号。不知道是format产生的逻辑号还是物理逻辑号!加密算法是不是zhuanbianjihuoma?逻辑的话换了硬盘不是用不了啦。不知道怎么弄的。厉害了!那位高人以后有兴趣的话。破解了,还望指教一二,实在是不甘心呀!最后留下E-MAIL,望好心人指教指教。kingtang@vip.qq.com
2010-9-5 16:19
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
ibming分析的很牛
2013-12-28 01:10
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
PB调试不好搞啊。楼主很累
2014-9-15 08:35
0
游客
登录 | 注册 方可回帖
返回
//