首页
社区
课程
招聘
[求助]关于调试dll的问题
发表于: 2010-7-5 18:25 5584

[求助]关于调试dll的问题

2010-7-5 18:25
5584
我在dll中封装了一个窗体,在窗体的FormCreate事件里加入以下代码:
edt1.MaxLength := 5;
使用dede反编译得到FormCreate事件代码:
0044FA38   BA05000000             mov     edx, $00000005

但是我用od载入我的dll中到0044FA38却是空白区域。在这里请教一下,如何通过反编译的方式改变edt1的MaxLength属性?

下面提供附件希望有高人可以帮我解决下问题。谢谢了
dll.rar

我希望可以通过反汇编的方式来解除dll中FormCreate事件对edt1的输入限制

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
给自己顶一下,有没有关注下啊
2010-7-6 16:30
0
雪    币: 525
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
DLL每次加载的基址是不同的。所以那个地址你是找不到你所要的。
2010-7-6 16:46
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
那请问下如何能够修改这个dll呢?
2010-7-7 16:09
0
雪    币: 260
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
0044E8A0   BA05000000             mov     edx, $00000005

* Reference to control edt1 : TEdit
|
0044E8A5   8B80F8020000           mov     eax, [eax+$02F8]

* Reference to: StdCtrls.TCustomEdit.SetMaxLength(TCustomEdit;Integer);
|
0044E8AB   E8088BFDFF             call    004273B8
0044E8B0   C3                     ret

默认基址为0x400000从而可知相对偏移为0x4E8A0
调试时dll加载基址+0x4e8a0就是对应如上的位置了
改了之后保存
2010-7-7 17:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
应该是动态生成的 吧
2010-7-7 20:00
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
[QUOTE=billh;833029]0044E8A0   BA05000000             mov     edx, $00000005

* Reference to control edt1 : TEdit
|
0044E8A5   8B80F8020000           mov     eax, [ea...[/QUOTE]

那请问下如何在加载dll的时候设置基址呢
2010-7-8 15:19
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
只能发现,不能设置
2010-7-9 10:44
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
还是没明白~呵呵!不过用C32asm打开后地址处的代码到是对的。

od和C32asm为什么得到的不一样呢?
2010-7-9 17:12
0
游客
登录 | 注册 方可回帖
返回
//