首页
社区
课程
招聘
[求助]如何在程序中补汇编代码,让程序修改自身的代码(火热讨论中......)
发表于: 2006-5-8 12:09 10458

[求助]如何在程序中补汇编代码,让程序修改自身的代码(火热讨论中......)

2006-5-8 12:09
10458
收藏
免费 0
支持
分享
最新回复 (48)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
26
如果call LoadLibrary之后eax返回0,肯定是指向DllName的名字有误(大小写没有区分或扩展名没有加上)。

to 误入楼台,你找到jnz xxxxxxxx的地址,只需mov [exx],9090...
jnz的指令有多长,就写多少个90。
2006-5-8 14:46
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
27
我刚看了一下,好像进入CALL LOADLIBRARYA时对EDI寄存器的值也会用到,
在进入CALL LOADLIBRARYA之前对几个寄存器EAX EBX等有没有要求
2006-5-8 14:52
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
28
最初由 njzzzzzz 发布
我刚看了一下,好像进入CALL LOADLIBRARYA时对EDI寄存器的值也会用到,
在进入CALL LOADLIBRARYA之前对几个寄存器EAX EBX等有没有要求

没有。
2006-5-8 14:57
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
29
好奇怪呀,我的代码没有错呀,晕
2006-5-8 14:59
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
30
哦,请问下,他是临时修改代码还是永久修改文件代码
2006-5-8 15:02
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
31
临时修改。。
2006-5-8 15:11
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
32
肯定是你的代码写错了,我这我这里测试了一下,是可以正常修改的。call LoadLibrary返回0,只有以下几个可能:
Dll文件名大小写有误
只有Dll文件名而没有扩展名
Dll文件名没有以NULL结束。
Dll文件不在Windows系统目录或程序目录中(在其它目录必须加上路径)
2006-5-8 15:15
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
33
多谢指点,我再试试,如还是不行,还要再麻烦大侠了
2006-5-8 15:31
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
34
呵呵,大侠不敢称,只是我正好用过这个方法而已。
2006-5-8 15:40
0
雪    币: 257
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
35
应该不用去LoadLibrary了。
LZ说程序本身就把那个DLL载了,不需要再去加载了吧,搜索模块名字好了,是那个DLL的话,就修改可改写属性
2006-5-8 16:13
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
36
我试了还是不行,可以是程序本身不让改的原因吧
2006-5-8 16:22
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
37
最初由 ViperDodge 发布
应该不用去LoadLibrary了。
LZ说程序本身就把那个DLL载了,不需要再去加载了吧,搜索模块名字好了,是那个DLL的话,就修改可改写属性

用LoadLibrary比较方便,什么都省了,不用去搜索模块名,也不用理会程序有没有加载或有没有重定位。

to njzzzzzz 你说的那个加有壳的Dll不让修改也是有道理的,因为现在有些壳就是不让你修改的。
2006-5-8 16:30
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
38
呵呵,多谢大侠指点,可能还要再麻烦你,
2006-5-8 16:39
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
39
呵,有问题就在论坛上问好了,如果我会了,一般我都会回答的,若是我不会的,你加我的QQ也没用。
2006-5-8 16:47
0
雪    币: 236
活跃值: (35)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
40
多谢大侠 回答 我的菜鸟问题~~
2006-5-8 18:00
0
雪    币: 236
活跃值: (35)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
41
问题 可以解决了 心理好舒服!
2006-5-8 18:00
0
雪    币: 257
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
42
恩, 学到一点了
2006-5-8 18:08
0
雪    币: 236
活跃值: (35)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
43
用 LoadLibraryA 和LoadLibrary 是不是一样效果还是要求不同呢!?
2006-5-9 15:43
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
44
不是吧,这两个一个函数吧
2006-5-9 16:10
0
雪    币: 236
活跃值: (35)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
45
那我这个代码有错没
pushad
push 43xxxxx  ;Rshidi.dll
call LoadLibraryA
add eax,12f7c
MOV dword ptr [eax],90909090
mov dword ptr [eax],9090
popad
jmp xxxxx
每次到 call LoadLibraryA  就报错不知道为什么?

还有就是 程序是 A.exe调用 Abc.dll ;而 Abc.dll调用 X.dll这样的程序 我要改的是 在 A.exe里写代码 改X.dll的执行内容! 这样是不是不行呢?
2006-5-9 16:18
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
46
最初由 误入楼台 发布
那我这个代码有错没
pushad
push 43xxxxx ;Rshidi.dll
call LoadLibraryA
add eax,12f7c
........

应该没有错。不过下面两句得改一改。
pushad
push 43xxxxx  ;Rshidi.dll
call LoadLibraryA
add eax,12f7c
MOV dword ptr [eax],90909090
add eax,4
mov word ptr [eax],9090

popad
jmp xxxxx
2006-5-9 18:06
0
雪    币: 236
活跃值: (35)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
47
每次到 call LoadLibraryA  就报错不知道为什么?

还有就是 程序是 A.exe调用 Abc.dll ;而 Abc.dll调用 X.dll这样的程序 我要改的是 在 A.exe里写代码 改X.dll的执行内容! 这样是不是不行呢?
难道用上面的代码不行吗?
2006-5-11 12:14
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
48
最初由 误入楼台 发布
每次到 call LoadLibraryA 就报错不知道为什么?

还有就是 程序是 A.exe调用 Abc.dll ;而 Abc.dll调用 X.dll这样的程序 我要改的是 在 A.exe里写代码 改X.dll的执行内容! 这样是不是不行呢?
难道用上面的代码不行吗?

不明白为什么你调用LoadLibraryA为什么会报错。
一般来说,A.exe调用abc.dll,而abc.dll又调用x.dll这样的程序,应该也可以在A.exe里写代码改x.dll的执行内容,因为dll都统一加载到A.exe的进程空间里了(不过我也没测试过,不敢保存上面的话100%有效,呵呵
2006-5-11 12:53
0
雪    币: 236
活跃值: (35)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
49
谢谢了 我自己再找找原因吧!
2006-5-11 13:17
0
游客
登录 | 注册 方可回帖
返回
//