首页
社区
课程
招聘
[旧帖] 一个pbd文件中找到这样一部分下一部我该如何做? 0.00雪花
发表于: 2006-12-25 23:59 7720

[旧帖] 一个pbd文件中找到这样一部分下一部我该如何做? 0.00雪花

2006-12-25 23:59
7720
一个pbd文件中找到这样一部分下一部我该如何做?

string ls_yuan
string ls_now
string ls_ypxlh
string ls_ypjbh
string ls_gsmc
string ls_str
integer li_work
integer li_zclx

parent.dw_1.accepttext()

if text = "重新注册" then
        parent.dw_1.enabled = true
        parent.st_fg.visible = false
        parent.st_zcxx.visible = false
        parent.st_gsmc.visible = false
        parent.st_zcm.visible = false
        parent.cb_zc.text = "注册"
        parent.cb_close.text = "取消"
        parent.cb_print.visible = true
else
        ls_gsmc = nvll(parent.dw_1.getitemstring(1,"gsmc"),"")
        ls_ypxlh = nvll(parent.dw_1.getitemstring(1,"zc_mach"),"")
        ls_ypjbh = nvll(parent.dw_1.getitemstring(1,"zc_xlh"),"")
        ls_now = nvll(parent.dw_1.getitemstring(1,"zc_code"),"")

        if ls_gsmc = "" then
                messagebox("提示","请输入公司信息!")
                parent.dw_1.setcolumn("gsmc")
                parent.dw_1.setfocus()
                return
        end if

        if ls_now = "" then
                messagebox("提示","请输入注册号!")
                parent.dw_1.setcolumn("zc_code")
                parent.dw_1.setfocus()
                return
        end if

        li_work = integer(mid(ls_now,4,1) + mid(ls_now,len(ls_now) - 2,1))

        if mod(integer(mid(ls_now,5,1)),2) = 1 then
                li_zclx = 9877
        else
                li_zclx = 1233
        end if

        ls_yuan = left(parent.lu_system.uf_check_zc(ls_gsmc,ls_ypxlh,ls_ypjbh,li_work,li_zclx),4) + mid(parent.lu_system.uf_check_zc(ls_gsmc,ls_ypxlh,ls_ypjbh,li_work,li_zclx),6,100)

        if ls_yuan = left(ls_now,4) + mid(ls_now,6,100) then

                if parent.dw_1.update() = 1 then
                        delete from sys_login  using sqlca_sys;

                        if f_show_sqlca_sys_error() < 0 then
                                return
                        end if

                        commit using sqlca_sys;
                else
                        rollback using sqlca_sys;
                        messagebox("提示","注册失败!")
                        return
                end if

                if parent.is_is_zc = "1" or parent.is_is_zc = "begin" then
                else
                        update jxc_sys_zt_info set con_m =33 where id =1  using sqlca;

                        if f_show_sqlca_error() < 0 then
                                return -1
                        end if

                        commit using sqlca;
                end if

                messagebox("提示","注册成功!")
                close(parent)
        else
                messagebox("提示","注册失败!")
                rollback using sqlca_sys;
                halt
        end if

end if

return

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
分析PB类程序时,应该仔细,怕记不住,就找张纸,把所有按钮和控件的标题标清楚,一个一个的对一下,
按着上面的代码分析一下,

你其实已经把重要的东西分析出来了。
别人之所以不回答你,是因为你贴出来的东西,别人不可能给你细扣那些控件名字是什么,指的是什么,最清楚这些的就是你自己。

PB的函数其实不复杂的,遇到哪个不明白的,到网上搜一下,很多提示的。
我也是这么走过来的。
2006-12-30 01:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
很感谢你的回答其实对着你的这篇
<<对于PB开发的程序破解!附pb函数大全>>及看雪精华中的<<PB小助手 v3.1 - PB简单算法逆运算>>
我细看了很久
   新手一个不懂任何语言但还却有点任性
因此也遇到很多问题
先不管任何的运算问题以我的水平看到的东西
ls_gsmc  公司名称
ls_ypxlh  机器码
ls_ypjbh  序列号
li_work ,li_zclx  注册码变形而来

li_work = integer(mid(ls_now,4,1) + mid(ls_now,len(ls_now) - 2,1)

if mod(integer(mid(ls_now,5,1)),2) = 1 then
                li_zclx = 9877
        else
                li_zclx = 1233

但是这样的句子
ls_gsmc = nvll(parent.dw_1.getitemstring(1,"gsmc"),"")
ls_ypxlh = nvll(parent.dw_1.getitemstring(1,"zc_mach"),"")
ls_ypjbh = nvll(parent.dw_1.getitemstring(1,"zc_xlh"),"")
ls_now = nvll(parent.dw_1.getitemstring(1,"zc_code"),"")

在你上传的pb函数大全中我没找到nvll函数(网上也有搜索)在该pbd文件中我也没找到  这个如何解决?是我搜索欠缺还是pbd文件漏找了(如果是漏找有什么方便的方法或者规律找?)

left(parent.lu_system.uf_check_zc(ls_gsmc,ls_ypxlh,ls_ypjbh,li_work,li_zclx),4) + mid(parent.lu_system.uf_check_zc(ls_gsmc,ls_ypxlh,ls_ypjbh,li_work,li_zclx),6,100) = left(ls_now,4) + mid(ls_now,6,100)
则注册成功

找到uf_check_zc函数
uf_check_zc (string as_gsmc,string as_ypxlh,string as_ypjbh,integer ai_work,integer ai_zclx)  returns string
这时就又遇到一个问题数学中的f(x)即将变量x代入表达式中,
即将uf_check_zc中的as_gsmc,as_ypxlh,as_ypjbh,ai_work,ai_zclx代替(不知道这样理解是否错误)
uf_check_zc (string as_gsmc,string as_ypxlh,string as_ypjbh,integer ai_work,integer ai_zclx)  returns string

long ll_len
long ll_i
string ls_gsmc
string ls_ypxlh
string ls_ypjbh
string ls_work_lx
string ls_str_bz_1
string ls_str_bz_2
string ls_str_bz_3
string ls_str_bz_4
string ls_str_bz_5
string ls_single
long ll_zclx
string ls_lx
string ls_work_sw
string ls_work_gw
string ls_zcm

ls_gsmc = uf_zc_get_gsmc(as_gsmc)
ls_ypxlh = uf_zc_get_ypxlh(as_ypxlh)
ls_ypjbh = uf_zc_get_ypjbh(as_ypjbh)
ls_work_lx = uf_zc_get_work_lx(ai_work,ai_zclx)
ll_len = len(ls_gsmc)
按我开先的理解则这个uf_check_zc()里面又出现了ls_gsmc,ls_ypxlh,ls_ypjbh,li_work,li_zclx而这些不是已知的吗
也许这个问题跟破解这软件关系不大。但这因该是语言的基础问题对自己学习东西肯定有很大的帮助,希望有人能赐教一下

for ll_i = 1 to ll_len
        ls_single = right(string(integer(mid(ls_gsmc,ll_i,1)) + integer(mid(ls_ypxlh,ll_i,1))),1)
        ls_str_bz_1 = ls_str_bz_1 + ls_single
next

ll_len = len(ls_str_bz_1)

for ll_i = 1 to ll_len
        ls_single = right(string(integer(mid(ls_str_bz_1,ll_i,1)) + integer(mid(ls_ypjbh,ll_i,1))),1)
        ls_str_bz_2 = ls_str_bz_2 + ls_single
next

ll_len = len(ls_str_bz_2)

for ll_i = ll_len to 1 step -1
        ls_single = right(string(integer(mid(ls_str_bz_2,ll_i,1)) + integer(mid(ls_work_lx,ll_i,1))),1)
        ls_str_bz_3 = ls_str_bz_3 + ls_single
next

ll_len = len(ls_str_bz_3)

for ll_i = 1 to ll_len step 3
        ls_str_bz_4 = ls_str_bz_4 + mid(ls_str_bz_3,ll_i,1)
next

ll_zclx = rand(10)

if ai_zclx = 9877 then

        if mod(ll_zclx,2) = 0 then
                ll_zclx = ll_zclx + 1
        end if

        ls_lx = right(string(ll_zclx),1)
else

        if ai_zclx = 1233 then

                if mod(ll_zclx,2) = 1 then
                        ll_zclx = ll_zclx + 1
                end if

                ls_lx = right(string(ll_zclx),1)
        end if

end if

ls_work_sw = left(string(ai_work,"00"),1)
ls_work_gw = right(string(ai_work,"00"),1)
ls_zcm = left(ls_str_bz_4,3) + ls_work_sw + ls_lx + mid(ls_str_bz_4,4,len(ls_str_bz_4) - 5) + ls_work_gw + right(ls_str_bz_4,2)
return ls_zcm

不管那多先把里面未知的函数再找出来
uf_zc_get_gsmc
uf_zc_get_gsmc (string as_gsmc)  returns string
long ll_len
long ll_i
string ls_str
string ls_qt
string ls_str_l
string ls_single
string ls_str_bz_1
string ls_str_bz_2
string ls_str_bz_3

ls_str_bz_1 = f_get_str_asc(mid(as_gsmc,6,8))
ls_str = left(ls_str_bz_1,3)
ls_str_bz_2 = right(ls_str_bz_1,len(ls_str_bz_1) - 3) + ls_str
ls_qt = f_get_str_asc("3.1415926")
ll_len = len(ls_qt)

for ll_i = 1 to ll_len
        ls_single = string(integer(mid(ls_qt,ll_i,1)) + integer(mid(ls_str_bz_2,ll_i,1)))
        ls_str_l = ls_str_l + ls_single
next

ls_str_bz_3 = ls_str_l + left(ls_str_bz_2,len(ls_str_bz_2) - ll_len)
return ls_str_bz_3

在这里又看到了新的函数f_get_str_asc感觉好复杂,大约象这么复杂的东西不该是我新手该研究的
f_get_str_asc (string as_str)  returns string
long ll_len
long ll_i
long ll_gs
string ls_asc
string ls_str_single
string ls_asc_b

ll_len = len(as_str)

for ll_i = 1 to ll_len
        ls_str_single = mid(as_str,ll_i,1)
        ls_asc = ls_asc + string(asc(ls_str_single))
next

ll_len = len(ls_asc)

for ll_i = 1 to ll_len
        ls_str_single = right(string(long(mid(ls_asc,ll_i,1)) + ll_i),1)
        ls_asc_b = ls_asc_b + ls_str_single
next

return ls_asc_b
看了后我这么理解:这个公司名称到底是怎么得到的啊,到这里就不再出现未知的东西了。难道是电脑自己算出来的?都不用自己输入?先不管了,我能做的就是把所有跟注册相关的东西先找出来。
再来到这个 uf_zc_get_ypxlh
uf_zc_get_ypjbh (string as_ypjph)  returns string
long ll_len
long ll_i
string ls_str
string ls_qt
string ls_str_l
string ls_single
string ls_str_bz_1
string ls_str_bz_2
string ls_str_bz_3

ls_str_bz_1 = as_ypjph
ls_str = left(ls_str_bz_1,1)
ls_str_bz_2 = right(ls_str_bz_1,len(ls_str_bz_1) - 1) + ls_str
ls_qt = f_get_str_asc("2.777653")
ll_len = len(ls_qt)

for ll_i = 1 to ll_len
        ls_single = string(integer(mid(ls_qt,ll_i,1)) + integer(mid(ls_str_bz_2,ll_i,1)))
        ls_str_l = ls_str_l + ls_single
next

ls_str_bz_3 = ls_str_l + left(ls_str_bz_2,len(ls_str_bz_2) - ll_len)
return ls_str_bz_3
这个里面也出现了f_get_str_asc()

再来uf_zc_get_ypxlh (string as_ypxlh)  returns string
long ll_len
long ll_i
string ls_str
string ls_qt
string ls_str_l
string ls_single
string ls_str_bz_1
string ls_str_bz_2
string ls_str_bz_3

ls_str_bz_1 = as_ypxlh
ls_str = left(ls_str_bz_1,5)
ls_str_bz_2 = right(ls_str_bz_1,len(ls_str_bz_1) - 5) + ls_str
ls_qt = f_get_str_asc("1.349873")
ll_len = len(ls_qt)

for ll_i = 1 to ll_len
        ls_single = string(integer(mid(ls_qt,ll_i,1)) + integer(mid(ls_str_bz_2,ll_i,1)))
        ls_str_l = ls_str_l + ls_single
next

ls_str_bz_3 = ls_str_l + left(ls_str_bz_2,len(ls_str_bz_2) - ll_len)
return ls_str_bz_3

跟上面一个很相似,只有这个f_get_str_asc()内的参数不同

再来uf_zc_get_work_lx
uf_zc_get_work_lx (integer ai_work,integer ai_zclx)  returns string

long ll_len
long ll_i
long ll_work
long ll_zclx
string ls_str
string ls_qt
string ls_str_l
string ls_single
string ls_str_bz_1
string ls_str_bz_2
string ls_str_bz_3

ll_work = ai_work * 79
ll_zclx = (ai_zclx * 39) * ll_work

if ai_zclx = 9876 then
        ls_str_bz_1 = string(ll_work) + string(ll_zclx)
else
        ls_str_bz_1 = string(ll_zclx) + string(ll_work)
end if

ls_str_bz_2 = string(truncate(long(ls_str_bz_1) * 7749333,0))
ls_str_bz_3 = f_get_str_asc(ls_str_bz_2)
return ls_str_bz_3

同样出现了f_get_str_asc  看来这个函数真的很重要
  看来基本上我能找出来的跟算法相关的东西都出来了,不过心里仍然是在犯嘀咕。凭这些可以逆运算出注册码来吗?再请赐教,如果能。我就开始学习下一步了,如果不能请指教一下还需要些什么?
顺便加一个该pbd文件的下载连接再次说声谢谢http://58.60.9.138/cgi-bin/dl?05624FC4715704061B19EA9176313B408637827FA6BBF20D1396208AD7EA31951EB9B6C6A860C2B088F153C9FBBE1057EAA94D4B4E76F7C6A1F532A0B6647E4333529353BC9C61703309EBBA77A35093C76D6948EC7920A035F41/system.pbd
2007-1-6 18:07
0
游客
登录 | 注册 方可回帖
返回
//