傲月游居 发表于 2006-12-2 20:25:48

算法分析:劳烦研究过PB程序的朋友帮忙继续补充啊

这个软件主程序用C++编写 ,主程序运行调用PB编与文件!软件运行有NAG+注册码,跟踪后,发现调用的这个文件为PB编写,
用PBKILL分析,得到如下代码.我标注了一部份代码的作用,哪位兄弟有空,帮忙把注册机算法的内容单独给提出来,回一下贴啊!!
global type w_cwxtzc from window                                 //注册窗口
end type
type st_33 from statictext within w_cwxtzc
end type
type st_6 from statictext within w_cwxtzc
end type
type st_7 from statictext within w_cwxtzc
end type
type st_4 from statictext within w_cwxtzc
end type
type cb_exit from commandbutton within w_cwxtzc
end type
type cb_try from commandbutton within w_cwxtzc
end type
type cb_reg from commandbutton within w_cwxtzc
end type
type st_3 from statictext within w_cwxtzc
end type
type sle_3 from singlelineedit within w_cwxtzc
end type
type st_2 from statictext within w_cwxtzc
end type
type st_5 from statictext within w_cwxtzc
end type
type sle_1 from singlelineedit within w_cwxtzc
end type
type st_1 from statictext within w_cwxtzc
end type
type gb_1 from groupbox within w_cwxtzc
end type
type gb_4 from groupbox within w_cwxtzc
end type
end forward



global type w_cwxtzc from window
integer x = 617
integer y = 500
integer width = 2254
integer height = 1012
boolean titlebar = true
string title = "======系列管理软件注册"
windowtype windowtype
long backcolor = 80269524
st_33 st_33
st_6 st_6
st_7 st_7
st_4 st_4
cb_exit cb_exit
cb_try cb_try
cb_reg cb_reg
st_3 st_3
sle_3 sle_3
st_2 st_2
st_5 st_5
sle_1 sle_1
st_1 st_1
gb_1 gb_1
gb_4 gb_4
end type
global w_cwxtzc w_cwxtzc
//                                                                  三个过程,分别调用MKDLL6.DLL,暂时理解为提取注册码用
type prototypes
function ulong mk_9xhdserial () library "mkdll6.dll" alias for "mk_9xhdserial"
function ulong mk_nt2000hdsector () library "mkdll6.dll" alias for "mk_nt2000hdsector"
function ulong mk_9xiderw (integer funcx)library "mkdll6.dll" alias for "mk_9xIDERW"
end prototypes
forward prototypes
public function string get_serial (integer getfunc_n)       //定义get_serial存储过程,定义getfunc_n为长整型
end prototypes

//-----------------------第一部份,GET-SERIAL过程----------------------
public function string get_serial (integer getfunc_n);ulong dve_2                  //定义get_serial存储过程。
ulong my_getdiskv
ulong my_getdiskexv
ulong my_diskv
string my_diskv_st
string st1
string st2
string st3
string st4
string st5
string st6
string vl_1
boolean b2 = false                                  //b2为假值
environment en1


getenvironment(en1)
b2 = true
my_getdiskv = 0
my_getdiskexv = 0                                    //B2为真,my_getdiskv=0,my_getdiskexv=0

if en1.ostype = windows! then                     //暂时理解为当B2为真时,
        b2 = true
        dve_2 = mk_9xiderw(1)                              //windows!时,dve_2=mk_9xiderw(1)
else
        b2 = false                                           //b2为假时,dve_2=mk_nt2000hdsector()
        dve_2 = mk_nt2000hdsector()
end if

if dve_2 = 255 or dve_2 = 0 then                         //dve_2等于255或者0时,dve_2返回值为000000
        return "000000"
end if

my_getdiskexv = -1 - dve_2                              
st1 = string(my_getdiskexv)                           //st1等于my_getdiskexv=-1-dve_2
st2 = right(st1,8)                                     //st2等于st1r 右8位
st3 = mid(st1,1,7)                              //st3等于ST1                     ****************
my_diskv = long(st2) + long(st3)            //my_siskv等于ST2加ST3                           

if my_diskv < 100000 then
        my_diskv_st = "000000"
        return "000000"
else                                                                                           //计算MY_SISKV_ST值,
        my_diskv_st = string(my_diskv)
end if

choose case getfunc_n                                    调用GETFUNC_N存储过程,其返回值为2时,与9时,
        case 2
                my_diskv_st = left(string(mod(long(left(my_diskv_st,6)) * 367 + long(right(my_diskv_st,6)) * 389,100000000)),6)
        case 9
                my_diskv_st = reverse(my_diskv_st)
                st1 = mid(my_diskv_st,1,4)                 //ST1等于MY_DISKV-ST的第一位至第四位     用户号
                st2 = mid(my_diskv_st,3,4)                 //ST2等于MY_DISKV-ST的第三位至第四位      注册码
                st3 = mid(my_diskv_st,6,3)                                 //ST3等于MY_DISKV-ST的六位返回第三位
                st4 = mid(my_diskv_st,5,4)                                  //ST4等于MY_DISKV-ST的第五位返回到第四位
                st5 = mid(my_diskv_st,4,3)                                  // ST5等于MY_DISKV-ST的第四位返回到第三位    机器号
                my_diskv = (integer(st1) + integer(st2) + 331) * 89            //
                my_diskv = my_diskv + integer(st3) * 13                     //
                my_diskv = my_diskv + integer(st4) + integer(st5) * 3                //
                my_diskv_st = string(my_diskv)                                     //
end choose

return my_diskv_st
end function
//-------------------------------------第一部份-----------

on w_cwxtzc.create
st_33 = create st_33
st_6 = create st_6
st_7 = create st_7
st_4 = create st_4
cb_exit = create cb_exit
cb_try = create cb_try
cb_reg = create cb_reg
st_3 = create st_3
sle_3 = create sle_3
st_2 = create st_2
st_5 = create st_5
sle_1 = create sle_1
st_1 = create st_1
gb_1 = create gb_1
gb_4 = create gb_4
control[] = {st_33,st_6,st_7,st_4,cb_exit,cb_try,cb_reg,st_3,sle_3,st_2,st_5,sle_1,st_1,gb_1,gb_4}
end on

on w_cwxtzc.destroy
destroy(st_33)
destroy(st_6)
destroy(st_7)
destroy(st_4)
destroy(cb_exit)
destroy(cb_try)
destroy(cb_reg)
destroy(st_3)
destroy(sle_3)
destroy(st_2)
destroy(st_5)
destroy(sle_1)
destroy(st_1)
destroy(gb_1)
destroy(gb_4)
end on

event open;string my_getid
string s_bbh
string ls_zcm
user_object uo_1


uf_win_center(this)
title = left(global_software_name,8) + "软件注册"
my_getid = get_serial(1)
select isnull ( n3 , '' ) from flash_pictureusing sqlca_local;
/* SQL Parameters List
0-> :s_bbh
*/

if show_sql_local_error() < 0 then
        return
end if

sle_1.text = s_bbh

if not match(my_getid,"00000") then
        st_3.text = my_getid
else
        st_3.text = "注册失败!"
end if

sle_3.setfocus()
gb_1.text = global_software_name
ls_zcm = lower(profilestring("Licence.ini","Product","zcm",""))
sle_3.text = ls_zcm
return
end event

event key;string my_getid
user_object uo_1



choose case true
        case key = keyenter!
                cb_try.triggerevent(clicked!)
        case key = keyf4!
                cb_reg.triggerevent(clicked!)
end choose

if key = keyf8! and keyflags = 3 then
        uo_1 = create user_object
        my_getid = uo_1.get_number(1)
        destroy(uo_1)

        if not match(my_getid,"00000") then
                st_3.text = "I" + "D" + my_getid
        else
                st_3.text = "I" + "D"
        end if

end if

return
end event

type st_33 from statictext within w_cwxtzc
integer x = 96
integer y = 544
integer width = 1829
integer height = 60
integer textsize = -9
integer weight = 400
fontcharset fontcharset
fontpitch fontpitch
string facename = "宋体"
long backcolor = 67108864
string text = "软件注册咨询电话:445545445454"
boolean focusrectangle = false
end type


type st_6 from statictext within w_cwxtzc
integer x = 96
integer y = 628
integer width = 914
integer height = 60
integer textsize = -9
integer weight = 400
fontcharset fontcharset
fontpitch fontpitch
string facename = "宋体"
long backcolor = 67108864
string text = "版权所有:***********公司"
boolean focusrectangle = false
end type


type st_7 from statictext within w_cwxtzc
integer width = 2222
integer height = 192
integer textsize = -16
integer weight = 700
fontcharset fontcharset
fontpitch fontpitch
fontfamily fontfamily
string facename = "Arial"
long textcolor = 128
long backcolor = 16777215
alignment alignment
boolean focusrectangle = false
end type


type st_4 from statictext within w_cwxtzc
integer x = 187
integer y = 48
integer width = 1851
integer height = 128
boolean bringtotop = true
integer textsize = -18
integer weight = 700
fontcharset fontcharset
fontpitch fontpitch
fontfamily fontfamily
string facename = "Arial"
long textcolor = 128
long backcolor = 16777215
string text = "软件未注册,将运行于试用版状态!"
alignment alignment
boolean focusrectangle = false
end type


type cb_exit from commandbutton within w_cwxtzc
integer x = 1842
integer y = 764
integer width = 343
integer height = 96
integer taborder = 70
integer textsize = -9
integer weight = 400
fontcharset fontcharset
fontpitch fontpitch
string facename = "宋体"
string text = "退出 ESC"
boolean cancel = true
end type


event clicked;halt
return
end event

type cb_try from commandbutton within w_cwxtzc
integer x = 1285
integer y = 764
integer width = 462
integer height = 96
integer taborder = 60
integer textsize = -9
integer weight = 400
fontcharset fontcharset
fontpitch fontpitch
string facename = "宋体"
string text = "软件试用 Enter"
boolean default = true
end type


event clicked;string str


str = nvll(parent.st_3.text,"")

if left(str,2) = "ID" then
        parent.sle_3.triggerevent("key_yj")
        return
end if

close(parent)
return
end event

type cb_reg from commandbutton within w_cwxtzc
integer x = 32
integer y = 764
integer width = 462
integer height = 96
integer taborder = 50
integer textsize = -9
integer weight = 700
fontcharset fontcharset
fontpitch fontpitch
string facename = "宋体"
string text = "软件注册 F4"
end type


event clicked;string inputid_str
string my_getid
string st4
string st5
string st6
string s_sle
string s_bbh_hy
string my_getid1
integer zc_bs
decimal ul1
decimal ul2
decimal ul3
decimal ul21
decimal ul3_tmp
decimal ls_tmp
user_object uo_1
typemakeup km


settypemakeup(km)

if parent.sle_3.text = "" then
        messagebox("提示","请输入注册码!")
        parent.sle_3.setfocus()
        return
end if

zc_bs = 0
parent.sle_1.text
s_sle = mid(s_sle,1,2)
inputid_str = right(trim(parent.sle_1.text),6)
ul1 = dec(inputid_str)
inputid_str = trim(parent.sle_3.text)
ul3 = dec(inputid_str)

if left(s_sle,1) = "3" then

        if right(s_sle,1) <> mid(profilestring(global_base_dir + "Licence.ini","Product","version","35000000"),2,1) then
                messagebox("提示","用户号与所对应的版本不一致,注册失败!",stopsign!)
                halt
                parent.sle_3.setfocus()
                return
        end if

else

        if s_sle <> left(profilestring(global_base_dir + "Licence.ini","Product","version","35000000"),2) then
                messagebox("提示","用户号与所对应的版本不一致,注册失败!",stopsign!)
                halt
                parent.sle_3.setfocus()
                return
        end if

end if

my_getid = parent.get_serial(2)
ul2 = dec(my_getid)
my_getid = parent.get_serial(9)
ul21 = dec(my_getid)
uo_1 = create user_object
my_getid = uo_1.get_number(2)
my_getid1 = uo_1.get_number(9)
destroy(uo_1)
s_bbh_hy = lower(profilestring("Licence.ini","Product","name","yy"))

choose case s_sle
        case "33"
                ul3_tmp = dec(left(string(dec(ul1 * 449 + ul2 * 739)),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 12
                end if

                ul3_tmp = dec(left(string(dec(ul1 * 719 + ul2 * 211)),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 22
                end if

        case "35"
                ul3_tmp = dec(left(string(ul1 * 617 + ul2 * 373),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 13
                end if

                ul3_tmp = dec(left(string(ul1 * 467 + ul2 * 397),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 23
                end if

        case "36"
                ul3_tmp = dec(left(string(ul1 * 443 + ul2 * 557),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 18
                end if

                ul3_tmp = dec(left(string(ul1 * 673 + ul2 * 181),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 28
                end if

        case "31"
                ul3_tmp = dec(left(string(ul1 * 631 + ul2 * 229),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 14
                end if

                ul3_tmp = dec(left(string(ul1 * 821 + ul2 * 173),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 24
                end if

        case "45"
                ul3_tmp = dec(left(string(ul1 * 547 + ul2 * 823),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 13
                end if

                ul3_tmp = dec(left(string(ul1 * 571 + ul2 * 613),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 23
                end if

        case "43"
                ul3_tmp = dec(left(string(ul1 * 691 + ul2 * 751),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 12
                end if

                ul3_tmp = dec(left(string(ul1 * 233 + ul2 * 947),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 22
                end if

        case "46"
                ul3_tmp = dec(left(string(ul1 * 379 + ul2 * 523),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 18
                end if

                ul3_tmp = dec(left(string(ul1 * 541 + ul2 * 743),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 28
                end if

        case "55"
                ul3_tmp = dec(left(string(ul1 * 599 + ul2 * 251),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 13
                end if

                ul3_tmp = dec(left(string(ul1 * 883 + ul2 * 139),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 23
                end if

        case "53"
                ul3_tmp = dec(left(string(ul1 * 607 + ul2 * 241),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 12
                end if

                ul3_tmp = dec(left(string(ul1 * 859 + ul2 * 151),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 22
                end if

        case "56"
                ul3_tmp = dec(left(string(ul1 * 787 + ul2 * 593),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 18
                end if

                ul3_tmp = dec(left(string(ul1 * 239 + ul2 * 941),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 28
                end if

        case "65"
                ul3_tmp = dec(left(string(ul1 * 487 + ul2 * 431),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 13
                end if

                ul3_tmp = dec(left(string(ul1 * 509 + ul2 * 337),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 23
                end if

        case "63"
                ul3_tmp = dec(left(string(ul1 * 163 + ul2 * 727),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 12
                end if

                ul3_tmp = dec(left(string(ul1 * 911 + ul2 * 179),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 22
                end if

        case "66"
                ul3_tmp = dec(left(string(ul1 * 661 + ul2 * 311),9))

                if ul3 = ul3_tmp then
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 18
                end if

                ul3_tmp = dec(left(string(ul1 * 167 + ul2 * 853),9))

                if ul3 = ul3_tmp then                      //DEC-1
                        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))             
                        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
                        st4 = "a1234567890b"
                        update flash_picture set n9 =' ' , n10 =' ' , n11 =' ' , n12 =0using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
3-> :ul3
*/

                        if show_sql_local_error() < 0 then
                                return
                        end if

                        zc_bs = 28
                end if

end choose

setprofilestring("Licence.ini","Product","zcm",parent.sle_3.text)
close(w_cwxtzc)

choose case zc_bs
        case 0
                messagebox("提示","注册不成功!")
                halt
        case 11
                messagebox("提示","单机财务版注册成功!")
        case 12

                choose case s_bbh_hy
                        case "yy"
                                messagebox("提示","33专业单机版注册成功!")
                        case "fz"
                                messagebox("提示","22专业单机版注册成功!")
                        case "ty"
                                messagebox("提示","11专业单机版注册成功!")
                        case "cs"
                                messagebox("提示","00专业单机版注册成功!")
                end choose

                        case 13

                choose case s_bbh_hy
                        case "yy"
                                messagebox("提示","33企业单机版注册成功!")
                        case "fz"
                                messagebox("提示","22企业单机版注册成功!")
                        case "ty"
                                messagebox("提示","11企业单机版注册成功!")
                        case "cs"
                                messagebox("提示","00企业单机版注册成功!")
                end choose






commit using sqlca_local;
return
end event

type st_3 from statictext within w_cwxtzc
integer x = 293
integer y = 360
integer width = 453
integer height = 84
integer textsize = -9
integer weight = 400
fontcharset fontcharset
fontpitch fontpitch
string facename = "宋体"
long backcolor = 79741120
boolean enabled = false
boolean focusrectangle = false
end type


type sle_3 from singlelineedit within w_cwxtzc
event key pbm_keydown
event key_yj pbm_custom35
integer x = 1682
integer y = 344
integer width = 448
integer height = 84
integer taborder = 10
integer textsize = -9
integer weight = 400
fontcharset fontcharset
fontpitch fontpitch
string facename = "宋体"
long backcolor = 16777215
boolean autohscroll = false
borderstyle borderstyle
end type

event key;string inputid_str
string my_getid
string st4
string st5
string st6
string str
boolean zc_bs = false
user_object uo_1


zc_bs = false

if key = keyescape! then
        halt
        close(parent)
        return
end if

str = left(parent.st_3.text,2)

if key = keyenter! then

        if str <> "ID" then
                parent.cb_reg.triggerevent(clicked!)
        else
                triggerevent("key_yj")
        end if

end if

return
end event

event key_yj;string inputid_str
string my_getid
string st4
string st5
string st6
string str
boolean zc_bs = false
user_object uo_1
typemakeup km

 
settypemakeup(km)
inputid_str = trim(parent.sle_3.text)
uo_1 = create user_object
my_getid = uo_1.get_number(2)
destroy(uo_1)

if inputid_str = my_getid and ( not match(my_getid,"00000")) then
        st5 = string(truncate(dec(my_getid) * 67 - 29027,0))
        st6 = string(truncate(dec(my_getid) * 37 - 38791,0))
        st4 = "a1234567890b"
        update flash_picture set n9 =' ' , n10 =' ' , n11 =' 'using sqlca_local;
/* SQL Parameters List
0-> :st4
1-> :st5
2-> :st6
*/

        if show_sql_local_error() < 0 then
                return
        end if

        zc_bs = true
        commit using sqlca_local;
end if

setprofilestring("Licence.ini","Product","zcm",text)
close(parent)

if zc_bs then
        messagebox("提示","注 册 成 功")
end if

return
end event


type st_2 from statictext within w_cwxtzc
integer x = 1463
integer y = 364
integer width = 238
integer height = 60
integer textsize = -9
integer weight = 400
fontcharset fontcharset
fontpitch fontpitch
string facename = "宋体"
long backcolor = 80269524
boolean enabled = false
string text = "注册码:"
boolean focusrectangle = false
end type


type st_5 from statictext within w_cwxtzc
integer x = 82
integer y = 364
integer width = 229
integer height = 60
integer textsize = -9
integer weight = 400
fontcharset fontcharset
fontpitch fontpitch
string facename = "宋体"
long backcolor = 80269524
boolean enabled = false
string text = "机器号:"
boolean focusrectangle = false
end type


type sle_1 from singlelineedit within w_cwxtzc
integer x = 978
integer y = 344
integer width = 398
integer height = 84
integer taborder = 30
integer textsize = -9
integer weight = 400
fontcharset fontcharset
fontpitch fontpitch
string facename = "宋体"
long backcolor = 16777215
boolean autohscroll = false
borderstyle borderstyle
end type


type st_1 from statictext within w_cwxtzc
integer x = 750
integer y = 364
integer width = 329
integer height = 60
integer textsize = -9
integer weight = 400
fontcharset fontcharset
fontpitch fontpitch
string facename = "宋体"
long backcolor = 80269524
boolean enabled = false
string text = "用户号:"
boolean focusrectangle = false
end type


type gb_1 from groupbox within w_cwxtzc
integer x = 32
integer y = 256
integer width = 2158
integer height = 216
integer taborder = 20
integer textsize = -9
integer weight = 400
fontcharset fontcharset
fontpitch fontpitch
fontfamily fontfamily
string facename = "Arial"
long backcolor = 67108864
end type


type gb_4 from groupbox within w_cwxtzc
integer x = 32
integer y = 476
integer width = 2158
integer height = 244
integer taborder = 40
integer textsize = -9
integer weight = 400
fontcharset fontcharset
fontpitch fontpitch
fontfamily fontfamily
string facename = "Arial"
long backcolor = 67108864
end type

wyh1983 发表于 2006-12-4 19:43:28

好长的一篇啊!!!PBKILL的结作,
不过看不懂具体怎么计算的。

xingbing 发表于 2006-12-4 20:47:37

我用pbkill好像反编译不了这个。不知道是什么原因。

wyh1983 发表于 2006-12-4 22:25:04

有的软件可以,有的不行啊.
!!!!

ww-jack 发表于 2006-12-5 17:36:55

看你的帖子眼晕
帖个软件地址

ruyan 发表于 2007-4-3 18:02:54

这个要参考神猪大侠的文章
页: [1]
查看完整版本: 算法分析:劳烦研究过PB程序的朋友帮忙继续补充啊