来源:安全中国
用程序编号的偶数位和注册号码的奇数位组成一个十进制数,再乘以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 |