首页
社区
课程
招聘
XX Flash移花接木1.8
发表于: 2004-6-23 11:45 4567

XX Flash移花接木1.8

2004-6-23 11:45
4567
我来这里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
收藏
免费 3
支持
分享
最新回复 (3)
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我的汇编很差,有一个问题请教

* Reference to : Tform1.Saveas1Click()
|
004A1AFC   E83BFBFFFF             call    004A163C
004A1B01   C3                     ret

这个CALL后面的值跟机器码是什么关系?
就是从004A163C怎么得到3BFBFFFF?
2004-6-23 11:48
0
雪    币: 237
活跃值: (160)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
最初由 apojie 发布
我的汇编很差,有一个问题请教

* Reference to : Tform1.Saveas1Click()
|
004A1AFC E83BFBFFFF call 004A163C
004A1B01 C3 ret

这个CALL后面的值跟机器码是什么关系?
就是从004A163C怎么得到3BFBFFFF?


004A1AFC+(3BFBFFF高低位要交换)+(5代码长度)=004A163C
也就是说在004A1AFC的地址上,调用地址偏移FFFFB3B的地址,也就是004A1AFC+FFFFFB3B,因为FFFFFB3B是负数,所以地址是往前移动,再加上调用这段代码5个字节,得到最终访问的地址。
2004-6-23 18:06
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢解答.

知道这个关系以后就可以去CALL别的地址了,呵呵
2004-6-23 18:36
0
游客
登录 | 注册 方可回帖
返回
//