另外一种解法 (1千字)
用WKTtElockDumper脱壳。知道是VB6 native编译的程序。尝试目前所知的vb反编译工具,皆无效。
用我自己开发的解析工具识别,得到如下信息:
FrmReg ----“注册”窗体
TxtBooC ----控件textbox,显示机器码
TxtSN ----控件textbox,输入注册码
猜测作者在设计时就设定属性TxtSN.Enabled=False。如果这样的话,我们将之改为TxtSN.Enabled=true就可以输入注册码。
会delphi编程的人都知道,delphi编译的程序中,界面的描述与代码的执行是分离的。而VB中也是同样情况。我们需要定位TxtSn的属性设置,并验证我们的猜想。
用ultraedit打开脱壳的程序。搜索“TxtSN”,共2处。一处可被排除。另一处为:
Offset 59B0H ** ** ** ** ** ** ** ** ** ** ** ** ** ** 07 05
59C0H 00 54 78 74 53 4E 00 02 02 C0 C0 C0 00 04 28 05
59D0H EE 02 75 12 77 01 08 00 12 01 00 2E 01 86 00 00
59E0H 90 01 28 9A 01 00 04 CB CE CC E5 FF 03 67 00 00
07 FrmReg中第7个控件
05 00 54 78 74 53 4E 00 BSTR类型字符串,表示某个控件.name="TxtSN"
02 说明name为"TxtSN"的控件系textbox
02 C0 C0 C0 00 BACKCOLOUR=00C0C0C0H
04 28 05 LEFT =0528H
EE 02 TOP =02EEH
75 12 WIDTH =1275H
77 01 HEIGHT=0177H
08 00 ENABLED=FALSE 关键
......
现在验证了我们的想法,作者直接将TxtSN.enabled设置为false,所以将之改为enabled=true,即 08 00变为08 01,保存后再执行,OK。
