来源:安全中国
用程序编号的偶数位和注册号码的奇数位组成一个十进制数,再乘以2,用乘
积作为下标去查表(查表用的是函数rtcMidBStr,用bpx rtcMidBStr do "d *(esp+4)"
可以看见表格,即传递给该函数的第一个参数是表格的首地址,
第二个参数是下标)。由于程序编号和注册号码均为8位,故这样总共可以从表中查到4个字节。
再从其它地方得到4个字节(这4个字节是如何得到的尚未完全搞清楚),
总共得到8个字节, 用__vbaStrComp( )将这8个字节和另外的8个字节(这
8个字节是如何得到的也没搞清楚,随程序编号的不同而不同)相比较,
如果相同则注册成功。我曾经修改__vbaStrComp( )的返回值强行注册成功,
但是启动的时候检查通不过,它又生成一个新的程序编号让我再注册。
p-code形式的VB程序也不好patch :-(
生成程序编号好像根据的是如下文件的时间:
c:\windows
c:\program files\xxxxx(乱码,可能是“平安全息万年历”)
注册码似乎放在这里:
c:\windows\benjitzm.txt
