首页
社区
课程
招聘
请各位给个思路
发表于: 2006-2-13 17:42 3617

请各位给个思路

2006-2-13 17:42
3617
一个delphi写的程序,有一个窗体是最前端显示的,影响汉字的输入很不方便,想破解掉

脱壳+dede后,找了1天,终于找到了

* Reference to method xxxxx.ShowModal()
|
0077963E   FF92E8000000           call    dword ptr [edx+$00E8]
00779644   EB0A                   jmp     00779650

我对delphi不熟悉,google了一下,发现ShowModal()是元凶,如果改成show()就OK了,在软件里搜索,只到了一处有show的

* Reference to : yyyyyFieldsForm.FormShow()
|
00557D11   E836010000             call    00557E4C

可是我把FF92E8000000换成E836E8000000,运行到那里的时候会出现一个错误,
错误提示是:External exception 1000001D.
换成E836010000也不行
请高手指点我如何能破解掉这段代码,谢谢

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
搞了1天半,收工了,今天下载的delphi 6企业版,用dede研究了半天,发现ShowModal()和show是不一样的,ShowModal()只是一个函数(事件、方法)call一下就行,而show是比较困难的,delphi里需要这样调用:Forms.TCustomForm.Show(TCustomForm);,要调用TCustomForm里的Show(TCustomForm)

简单说一下吧

* Reference to: Forms.TApplication.CreateForm(TApplication;TComponentClass;void;void);
|
007795DC   E8A38BCFFF             call    00472184

………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………

* Possible reference to virtual method TGlobalVar_007A90F4.OFFS_00E8
|
0077963E   FF92E8000000           call    dword ptr [edx+$00E8]    改成E82D56CFFF90(需要一个90占位)

00779644   EB0A                   jmp     00779650

* Possible String Reference to: 'xxxxxxxxxxxx!'
|
00779646   B880967700             mov     eax, $00779680

修改思路,从Unit1.pas中找到

* Reference to: Forms.TCustomForm.Show(TCustomForm);
|
00779B18   E85351CFFF             call    0046EC70

这是一个 show Form.xxxx的地方,可以看出是call    0046EC70

用计算器算机器码,算了几次都不对,干脆用OllyICE找到地址0077963E,双击,输入call    0046EC70发现机器码变成了E82D56CFFF,后面加一个90,用UltraEdit写进去就OK了!

在delphi论坛上看到有人讨论ShowModal()和show的区别,他们只是说到窗口是否最前端显示,更深的区别被我挖掘到了。

从这个软件里学到了很多delphi的知道,破解水平没有提高
2006-2-14 13:45
0
游客
登录 | 注册 方可回帖
返回
//