我来这里10几天了,刚刚注册一个账号 :)
贴篇拙文:
XX Flash移花接木1.8
我是新手,各位高手不要笑.
在一个论坛看到这个软件的注册机,拿来用以后发现注册并不管用,保存的时候还是出现随机保存的对话框,所以决定看看怎么回事.
PESCAN检查,没有加壳,这个软件一看就是DELPHI/BCB写的,直接用DEDE打开,发现有3个保存的函数:
Saveas1Click
Saveas2Click
Saveas3Click
其中Saveas2Click去CALL Saveas1Click,所以实际上只有两个保存.在Saveas1Click里能找到"未注册版,随机保存"这样的字符串.
Saveas3Click里没有任何提示.我以为作者是根据注册情况来决定保存动作调用哪个函数,马上用ResHacker把对应的Saveas1Click,Saveas2Click全部改为Saveas3Click.SAVE后打开,发现菜单有乱码,这个程序字符串是用UNICODE表示的,可能RESHACKER对UNICODE支持不好?后来我就用UE自己手动改onClick指向,改这个花了不少时间.最后试保存,是没有任何提示了,以为大功告成,但是再看看保存后的结果,马上就知道错了....
看来这个版本注不注册都不能正常使用,真正的注册应该是交钱以后作者才把完全版发过来吧?
再想想,还有希望,毕竟没有把功能注释掉,只是随机保存而已,那么跳过随机函数不就可以了吗?
用DEDE找到随机函数如下:
* Reference to: System.Randomize;
|
004A165F E85816F6FF call 00402CBC
* Reference to control Tform1.ListBox1 : TListBox
|
004A1664 8B83F0020000 mov eax, [ebx+$02F0]
004A166A 8B10 mov edx, [eax]
* Possible reference to virtual method TListBox.OFFS_00C4
|
004A166C FF92C4000000 call dword ptr [edx+$00C4] //<----- 这个是取ListBox.Items.Count
* Reference to: System.Proc_004033C0
|
004A1672 E8491DF6FF call 004033C0 { 这个就是产生随机数的地方 }
004A1677 8BF0 mov esi, eax
004A1679 46 inc esi
在OD里做测试,把取Listbox.items.count改成ListBox.ItemIndex:
004A166C FF92C8000000 call dword ptr [edx+$00C8]
就是取当前选择的LISTBOX项.
然后把随机数用NOP注释掉:
004A1672 E8491DF6FF call 004033C0
这样一改就可以正确保存了.下面的SHOWMESSAGE提示也是直接把CALL改成NOP
这个软件的注册码是用明码比较的,比较好找,这里就不写了.
apojie
2004/06/23
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课