PB文件OD无法直接更改
用PB工具可以看到代码 有测试帐号两个一个支持20次使用一次支持5次使用后边是的注册看不懂PB的代码方式 哪位大神安装有PB试试能否生成注册机string ls_code
string ls_hdcode
long ll_limit
if ((isnull(as_regcode)) or (len(as_regcode) = 0)) then
il_return = 0
else
if as_sysno = "99" and ((as_name = "xxxxxx有限公司") or (as_name = profilestring("user.ini","chyb","madein",""))) then
if as_regcode = "00000000" then
il_usercount = 20 等于某代码+公司名称+注册码0000000 得到20次试用
il_return = 5
goto label_0
end if
if as_regcode = "11111111" then
il_usercount = 5 等于某代码+公司名称+1111111 得到5次试用
il_return = 4
goto label_0
end if
end if
ls_hdcode = createhdcode()
ls_code = createregcode(as_name,as_sysno,ai_usertype,ls_hdcode)
if ls_code <> readcode(as_regcode,1) then
il_return = 2
else
ll_limit = uf_xor(of_hextodec(mid(as_regcode,23,1)),of_hextodec(mid(as_regcode,17,1)))
ll_limit = uf_xor(ll_limit,of_hextodec(mid(as_regcode,29,1)))
ll_limit = uf_xor(ll_limit,of_hextodec(mid(as_regcode,11,1)))
ll_limit = uf_xor(ll_limit,of_hextodec(mid(as_regcode,10,1)))
if right(of_dectohex4(ll_limit),2) <> mid(as_regcode,5,1) + right(as_regcode,1) then
il_return = 2
else
il_usercount = long(readcode(as_regcode,3))
ll_limit = uf_xor(of_hextodec(mid(as_regcode,19,1)),of_hextodec(mid(as_regcode,2,1)))
ll_limit = uf_xor(ll_limit,of_hextodec(mid(as_regcode,24,1)))
if right(of_dectohex4(ll_limit),1) <> mid(as_regcode,10,1) then
il_return = 2
else
ll_limit = long(readcode(as_regcode,2))
if ll_limit <= 4000 then
if ll_limit <= abs(al_cishu) then
il_return = 3
goto label_0
end if
if ll_limit <= abs(al_cishu) + 10 then
il_return = abs(al_cishu) - ll_limit
goto label_0
end if
end if
il_return = 1
end if
end if
end if
end if 代码里缺少函数,生成不了注册机 这段代码看起来像是某个软件的授权检测代码,大致流程如下:
首先判断输入参数是否为空或长度为0。如果是,则将返回值设置为0,表示无法进行授权检测。
如果不是上述情况,接下来根据as_sysno和as_name的值以及as_regcode(注册码)的值进行授权检测。
如果as_sysno等于"99"并且(as_name等于"xxxxxx有限公司"或者user.ini文件中chyb配置区块的madein键的值为空字符串),则会进入一个特殊的授权检测分支。如果as_regcode等于"00000000",则说明使用了某个固定的注册码,就给予20次试用授权;如果as_regcode等于"11111111",则给予5次试用授权。
如果不符合上述特殊情况,则接下来会调用createregcode函数生成一个注册码ls_code,并与输入的as_regcode进行比较。如果不相等,则说明注册码无效,返回值设为2。
如果注册码有效,则根据注册码中的各个字段计算出一个时间限制值ll_limit,并判断该值是否与注册码中的校验位一致,如果不一致,则说明注册码无效,返回值设为2。
如果时间限制值校验通过,则读取注册码中记录的已授权用户数量il_usercount,并与另一个时间限制值进行比较。如果已授权用户数量大于等于该时间限制值,则说明软件已经超过了授权范围,返回值设为3 软件pbd文件里面应该有createregcode和其他函数的写法 yang0318 发表于 2023-4-27 16:16
这段代码看起来像是某个软件的授权检测代码,大致流程如下:
首先判断输入参数是否为空或长度为0。如果 ...
是的 有这个软件下载地址
https://wwtp.lanzoul.com/i2WNV0u38n0f
对createregcode和ENCRYPTS函数下断 没用断不下来
vl_cst_encryptor io_encryptor
integer i
string ls_code
io_encryptor = create vl_cst_encryptor
if isnull(as_sysno) then
as_sysno = ""
end if
ls_code = encrypts(as_name,as_sysno + string(ai_type) + right(of_dectohex4(len(as_name)),1),as_hdcode)
return ls_code
170077000 发表于 2023-4-27 18:29
是的 有这个软件下载地址
https://wwtp.lanzoul.com/i2WNV0u38n0f
根据这段代码的流程,我猜测createregcode的实现细节应该是在调用了ENCRYPTS函数之后得到的加密结果,并将其返回。
而这段代码中,所谓的ENCRYPTS函数可能是自定义的一个加密函数,并且它的具体实现细节并没有在这段代码中给出,因此你断下来是看不到具体实现的。
如果需要进一步了解createregcode和ENCRYPTS函数的实现细节,建议找到这两个函数的完整代码并进行仔细阅读分析。 ls_hdcode = createhdcode()//生成校验码
//ls_sysno = trim(sle_sysno.text)//单位号
//ls_name = trim(sle_name.text)//单位名称
//ls_source = trim(sle_scode.text)//校验码
//ls_regcode = trim(sle_code.text)//注册码
ls_code = encrypts(as_name,as_sysno + string(ai_type) + right(of_dectohex4(len(as_name)),1),as_hdcode)//生成注册码
其中createhdcode、encrypts、of_dectohex4等函数都在pbd文件里找到,抠出来用
ppszxc 发表于 2023-4-29 12:19
ls_hdcode = createhdcode()//生成校验码
//ls_sysno = trim(sle_sysno.text)//单位号
//ls_name = trim( ...
PBD下没找到是哪一个我看到的是在qsn_reginfo.dll 里
页:
[1]