前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PBKILLER的搜索

经典首饰进销存管理系统 v3.5 我跟PB第一次 - 看雪安全论坛 看雪安全论坛 > Windows > 『软件调试逆向』 经典首饰进销存管理系统 v3.5 我跟PB第一次 用户名 记住 密 码 忘记密码? KSSD 注册账号 搜索论坛 日历事件 论坛帮助 --> 『软件调试逆向』 [综合性论坛]本版讨论的主题包括:调试逆向、系统底层、商业保护、虚拟机保护、.NET平台等安全相关的话题。 转到页面... 该主题: "经典首饰进销存管理系统 v3.5 我跟PB第一次" 因在一定的时间里没有任何回复而自动关闭。如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。 主题工具 显示模式 上一列 下一列 killl 中级会员 资 料: 注册日期: Sep 2004 帖子: 378 精华: 10 现金: 212 Kx 资产: 212 Kx--> 致谢数: 0 获感谢文章数:0获会员感谢数:0 1 2005-10-02, 10:40:01 经典首饰进销存管理系统 v3.5 我跟PB第一次 经典首饰进销存管理系统 v3.5 我跟PB第一次 【破文标题】经典首饰进销存管理系统 v3.5 我跟PB第一次 【软件名称】经典首饰进销存管理系统 v3.5 【软件介绍】首饰零售企业与普通零售企业有着很多的不同之处,一般的进销存管理软件很难适应首饰零售企业的业务需求。经典首饰进销存 管理系统就是针对首饰零售行业的特点而开发的一套首饰零售企业专用的行业管理软件,其丰富而实用的功能能很好得满足首饰零售企业的管 理需求。 【软件地址】http://www.topjewelsoft.com/download.asp 【破文作者】KiLlL[DFCG][FCG] 【破解时间】2005-10-01 10:01 【破解声明】国庆节快乐!我跟PB第一次亲密接触! 仅限技术交流! 【破解过程】 总是听大牛说PB,不小心碰到了一个PB的程序,软件主页上已经是4.0了,隐藏了部分注册模块,所以我分析一下3.5应该也无所谓了吧。 其实一开始不知道是PB程序,peid得知是Microsoft Visual C++ 5.0 [Overlay]程序,od跟了一下,发现总在一个PBVM90.DLL里面,原来这个 就是pb程序呀,好了,找个工具,PBKILLER试试了。 打开main.pbd文件,发现了w_realreg窗口里面对应的注册按钮事件: gs_serial = trim(parent.sle_1.text) + trim(parent.sle_2.text) + trim(parent.sle_4.text) + trim(parent.sle_5.text) if f_regisok(gs_serial,gs_workmode) then update GINFO_PARM SET KHSER =' ' using sqlca; /* SQL Parameters List 0-> :gs_serial */ if sqlca.sqlcode < 0 then rollback using sqlca; messagebox("提示","注册失败!") return end if commit using sqlca; messagebox("恭喜","您已注册成功!") w_main.title = gs_sysname + "(已授权)" w_main.uo_1.uf_setkh(gs_companyname) else messagebox("提示","错误的注册码!") parent.sle_1.setfocus() return end if close(parent) return 原来是调用一个函数:f_regisok(gs_serial,gs_workmode),其中的gs_serial就是显示的机器码,如何来的那? 查看这个窗口的open事件: gs_hardid = getdiskser() gs_hardid = trim(gs_hardid) if isnull(gs_hardid) or gs_hardid = "" then gs_hardid = string(abs(getcpuid())) end if gs_hardid = upper(gs_hardid) sle_3.text = f_getproductid(gs_hardid) return 原来是取diskser,就是硬盘的序列号,如果失败就取cpuid,然后经过一个函数运算,就是f_getproductid(gs_hardid)。 要写注册机,需要知道两个函数,第一个是f_getproductid(gs_hardid),第二个是f_regisok。但是这个窗口里面没有。打开其他的文件看看 。 我找呀找,找呀找,终于找到了。 在share.pbd里面发现了这两个函数:先看第一个,f_getproductid() integer li_len integer i string ls_char string ls_temp li_len = len(computerid) ls_temp = "" for i = 1 to li_len ls_char = mid(computerid,i,1) choose case ls_char case "1" ls_temp = ls_temp + "F" continue case "2" ls_temp = ls_temp + "A" continue case "3" ls_temp = ls_temp + "Q" continue case "4" ls_temp = ls_temp + "G" continue case "5" ls_temp = ls_temp + "P" continue case "6" ls_temp = ls_temp + "H" continue case "7" ls_temp = ls_temp + "D" continue case "8" ls_temp = ls_temp + "B" continue case "9" ls_temp = ls_temp + "R" continue case "0" ls_temp = ls_temp + "8" continue case "A" ls_temp = ls_temp + "N" continue case "B" ls_temp = ls_temp + "4" continue case "C" ls_temp = ls_temp + "S" continue case "D" ls_temp = ls_temp + "I" continue case "E" ls_temp = ls_temp + "T" continue case "F" ls_temp = ls_temp + "O" continue case "G" ls_temp = ls_temp + "3" continue case "H" ls_temp = ls_temp + "C" continue case "I" ls_temp = ls_temp + "U" continue case "J" ls_temp = ls_temp + "M" continue case "K" ls_temp = ls_temp + "9" continue case "L" ls_temp = ls_temp + "E" continue case "M" ls_temp = ls_temp + "5" continue case "N" ls_temp = ls_temp + "J" continue case "O" ls_temp = ls_temp + "V" continue case "P" ls_temp = ls_temp + "1" continue case "Q" ls_temp = ls_temp + "W" continue case "R" ls_temp = ls_temp + "6" continue case "S" ls_temp = ls_temp + "K" continue case "T" ls_temp = ls_temp + "X" continue case "U" ls_temp = ls_temp + "2" continue case "V" ls_temp = ls_temp + "7" continue case "W" ls_temp = ls_temp + "Y" continue case "X" ls_temp = ls_temp + "0" continue case "Y" ls_temp = ls_temp + "Z" continue case "Z" ls_temp = ls_temp + "L" end choose next li_len = len(ls_temp) ls_temp = left(ls_temp,2) + "-" + mid(ls_temp,3,2) + "-" + right(ls_temp,li_len - 4) return ls_temp 很简单,就是做了置换,写注册机的时候去掉“-”,然后相反置换就可以了。 再来看第二个函数:f_getserial(realid,wordmode) string realid string ls_cn boolean lb_return = false realid = f_getrealid(gs_hardid) ls_cn = f_getserial(realid,workmode) lb_return = cn = ls_cn return lb_return 函数很简单,就是用机器码通过函数f_getserial计算出真正的注册码,然后跟你输入的注册码cn相比较。这里计算注册码用了2个函数, f_getrealid和f_getserial。 首先看f_getrealid函数。 string ls_return string ls_order integer li_len ls_return = vvalue li_len = len(vvalue) if li_len < 16 then ls_order = f_chartoorder(vvalue) ls_return = ls_return + left(ls_order,16 - li_len) end if return ls_return 里面又用到了这个函数: integer li_len integer i string rvalue string ls_char rvalue = "" li_len = len(vvalue) for i = 1 to li_len ls_char = mid(vvalue,i,1) rvalue = rvalue + string(asc(ls_char)) next return rvalue 看完这两个函数,明白了,如果机器码小于16位,就用他们的ascii补全。再来看第二个计算注册码的函数f_getserial。 string ls_return string ls_char integer x integer y integer z integer value ls_return = "" if workmode = "single" then ls_char = mid(vvalue,5,1) x = asc(ls_char) ls_char = mid(vvalue,3,1) y = asc(ls_char) ls_char = mid(vvalue,12,1) z = asc(ls_char) value = mod(abs(x * y + z - 20),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,11,1) x = asc(ls_char) ls_char = mid(vvalue,14,1) y = asc(ls_char) ls_char = mid(vvalue,3,1) z = asc(ls_char) value = mod(abs(x * y + z - 28),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,7,1) x = asc(ls_char) ls_char = mid(vvalue,13,1) y = asc(ls_char) ls_char = mid(vvalue,11,1) z = asc(ls_char) value = mod(abs(x * y + z - 31),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,15,1) x = asc(ls_char) ls_char = mid(vvalue,4,1) y = asc(ls_char) ls_char = mid(vvalue,3,1) z = asc(ls_char) value = mod(abs(x * y + z - 22),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,6,1) x = asc(ls_char) ls_char = mid(vvalue,15,1) y = asc(ls_char) ls_char = mid(vvalue,16,1) z = asc(ls_char) value = mod(abs(x * y + z - 37),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,4,1) x = asc(ls_char) ls_char = mid(vvalue,9,1) y = asc(ls_char) ls_char = mid(vvalue,12,1) z = asc(ls_char) value = mod(abs(x * y + z - 25),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,1,1) x = asc(ls_char) ls_char = mid(vvalue,2,1) y = asc(ls_char) ls_char = mid(vvalue,4,1) z = asc(ls_char) value = mod(abs(x * y + z - 7),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,2,1) x = asc(ls_char) ls_char = mid(vvalue,14,1) y = asc(ls_char) ls_char = mid(vvalue,8,1) z = asc(ls_char) value = mod(abs(x * y + z - 24),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,13,1) x = asc(ls_char) ls_char = mid(vvalue,1,1) y = asc(ls_char) ls_char = mid(vvalue,2,1) z = asc(ls_char) value = mod(abs(x * y + z - 16),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,9,1) x = asc(ls_char) ls_char = mid(vvalue,8,1) y = asc(ls_char) ls_char = mid(vvalue,1,1) z = asc(ls_char) value = mod(abs(x * y + z - 18),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,3,1) x = asc(ls_char) ls_char = mid(vvalue,4,1) y = asc(ls_char) ls_char = mid(vvalue,7,1) z = asc(ls_char) value = mod(abs(x * y + z - 4),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,2,1) x = asc(ls_char) ls_char = mid(vvalue,16,1) y = asc(ls_char) ls_char = mid(vvalue,1,1) z = asc(ls_char) value = mod(abs(x * y + z - 19),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,13,1) x = asc(ls_char) ls_char = mid(vvalue,16,1) y = asc(ls_char) ls_char = mid(vvalue,10,1) z = asc(ls_char) value = mod(abs(x * y + z - 39),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,2,1) x = asc(ls_char) ls_char = mid(vvalue,7,1) y = asc(ls_char) ls_char = mid(vvalue,3,1) z = asc(ls_char) value = mod(abs(x * y + z - 12),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,6,1) x = asc(ls_char) ls_char = mid(vvalue,8,1) y = asc(ls_char) ls_char = mid(vvalue,1,1) z = asc(ls_char) value = mod(abs(x * y + z - 15),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,10,1) x = asc(ls_char) ls_char = mid(vvalue,11,1) y = asc(ls_char) ls_char = mid(vvalue,5,1) z = asc(ls_char) value = mod(abs(x * y + z - 26),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,11,1) x = asc(ls_char) ls_char = mid(vvalue,9,1) y = asc(ls_char) ls_char = mid(vvalue,14,1) z = asc(ls_char) value = mod(abs(x * y + z - 34),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,2,1) x = asc(ls_char) ls_char = mid(vvalue,16,1) y = asc(ls_char) ls_char = mid(vvalue,9,1) z = asc(ls_char) value = mod(abs(x * y + z - 27),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,6,1) x = asc(ls_char) ls_char = mid(vvalue,7,1) y = asc(ls_char) ls_char = mid(vvalue,10,1) z = asc(ls_char) value = mod(abs(x * y + z - 23),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,10,1) x = asc(ls_char) ls_char = mid(vvalue,2,1) y = asc(ls_char) ls_char = mid(vvalue,1,1) z = asc(ls_char) value = mod(abs(x * y + z - 13),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) else ls_char = mid(vvalue,5,1) x = asc(ls_char) ls_char = mid(vvalue,12,1) y = asc(ls_char) ls_char = mid(vvalue,3,1) z = asc(ls_char) value = mod(abs(x * y + z - 20),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if ls_return = ls_return + char(value) ls_char = mid(vvalue,3,1) x = asc(ls_char) ls_char = mid(vvalue,14,1) y = asc(ls_char) ls_char = mid(vvalue,11,1) z = asc(ls_char) value = mod(abs(x * y + z - 28),100) if value > 90 then value = value - 9 else if value > 57 and value < 65 then value = value + 7 else if value > 37 and value < 48 then value = value + 10 else if value > 27 and value < 38 then value = value + 20 else if value > 17 and value < 28 then value = value + 30 else if value > 7 and value < 18 then value = value + 40 else if value < 8 then value = value + 50 end if end if end if end if end if end if end if [公告]如果你觉得有人语言挑衅,请点每帖右上角的“举报”按钮! killl 查看公开信息 查找 killl 发表的帖子 查找 killl 发表的所有主题 查看 killl 发表的精华帖 添加到书签 Digg del.icio.us StumbleUpon Google 百度搜藏 QQ 书签 雅虎收藏 该主题: "经典首饰进销存管理系统 v3.5 我跟PB第一次" 因在一定的时间里没有任何回复而自动关闭。如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。 &laquo; 上一主题 | 下一主题 &raquo; 主题工具 显示可打印版本 显示模式 切换到平板模式 切换到混合模式 树形模式 发帖规则 您不可以发表主题 您不可以回复帖子 您不可以上传附件 您不可以编辑自己的帖子 论坛论坛启用 vB 代码 论坛启用 表情图标 论坛启用 [IMG] 代码 论坛规则 论坛跳转 --> 用户控制面板 悄悄话 收藏夹 会员在线状态 搜索论坛 论坛首页 初学者园地 『求助问答』 『经典问答』 『资料导航』 Windows 『软件调试逆向』 『编程技术』 『C32Asm』 『MDebug』 『安全工具开发』 『加壳与脱壳』 『CrackMe&ReverseMe』 移动平台 『Android 开发』 『Android 安全』 『iOS安全』 『Windows Phone安全』 信息安全 『密码学』 学术会议版 『WEB安全』 『漏洞分析』 『云计算安全』 『外文翻译』 『资源下载』 职场风云 『招聘专区』 『职业生涯』 『15PB培训专区』 论坛生活 『茶余饭后』 『安全资讯』 『论坛活动』 6)PEDIY Crackme竞赛2009 7)看雪十周年专版 8)腾讯公司2010软件安全竞赛 9)2011 Exploit Me竞赛 安全图书 『图书项目版』 《加密与解密(第三版)》 《C++反汇编与逆向分析技术揭秘》 《Android软件安全与逆向分析》 『图书出版商』 『电子工业出版社』 『机械工业出版社』 站务管理 『论坛版务』 所有时间均为北京时间, 现在的时间是 11:07:37. -- VBB3 -- Wap -- 大字体 -- English -- 简体中文 -- 繁體中文 联系我们 - 看雪学院 - 文字模式 - 返回顶端 &copy;2000-2014 看雪学院(PEdiy.com) |关于我们 | 知道创宇提供带宽资源 | 微信公众帐号:ikanxue 手机客户端: