能力值:
( LV9,RANK:610 )
|
-
-
2 楼
看了3遍 不懂楼主是个什么意思
我非常希望楼主能从广义上提一个问题
eg. dll怎样注入到目标进程? 等等
ps.我肤浅了。。。觉得我说的不对 大家使劲拍砖!
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不是DLL注入的问题。类似于HOOK API。 我想HOOK这段代码。好得知
0053BB1A - 8b 91 88 00 00 00 - mov edx,[ecx+00000088]
- mov eax,[ebp-0000208c]
mov ecx,[eax+00000088]
我用CE改成 MOV EDX,[ECX+0000888]
从这段改起。改成
jmp 7fff000
////////////
7ff0000 mov edx,[ecx+000888]
mov [72fff00],edx //这里的72fff000是我用CE分配的一个内存地址
jmp 0053BB1A+6
我想用DELPHI 来注入我的过程。
比如
0053BB1A - 8b 91 88 00 00 00 - mov edx,[ecx+00000088]
这个。我注入成 jmp 我自己的函数
我在自己的函数里面读出edx并返回到跳转后的下一行。
|
能力值:
(RANK:410 )
|
-
-
4 楼
// 大概就像下面那样格式就行了。
function myadd:Integer;
asm
mov edx,[ecx+$000888]
mov [Memory],edx
mov eax,$0053BB1A+6
jmp eax
end;
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
我试试。谢谢小虾。等我试过后再向你请教。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
function myfun:integer;
asm
mov edx,[ecx+$000888]
jmp eax
end;
procedure TForm1.sButton1Click(Sender: TObject);
begin
pbyte($0053BB1A)^:=$E9;
pint($0053BB1A+1)^:=integer(@myfun);
end;
我这样写。得出来
0053BB1A- e9 64 f7 4c 0b - jmp 0b98e220
0B98E220 - 00 00 - add [eax],al
0B98E222 - 00 ff - add bh,bh
但是里面的反汇编代码不对额。
是不是我哪里搞错了?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
var jmpcode:byte;
writeStart:integer;
ret:cardinal;
begin
jmpcode:=$E9;
WriteProcessMemory( GetCurrentProcess , pointer($0053BB1A), @jmpcode,1,ret);
WriteProcessMemory( GetCurrentProcess , pointer($0053BB1A+1), @myfun,4,ret);
我后来又改成这样。地址也变了。但是od无法访问我跳转的地址。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
小虾哥,请帮我再指点下。谢谢啦。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
可以BAIDU一下 DELPHI和C的代码很多的
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
Twrt.jmp_code:= $eb;
Twrt.jmpaddr:=integer(@isSelfAddr);
Twrt.retcode:=$90;
sedit1.Text:=inttohex(integer(@isSelfAddr),4);
WriteProcessMemory( GetCurrentProcess , pointer($00578c12), @Twrt.jmp_code,1,ret);
WriteProcessMemory( GetCurrentProcess , pointer($00578c12+1), @Twrt.jmpaddr,4,ret);
WriteProcessMemory( GetCurrentProcess , pointer($00578c12+1), @Twrt.nopcode,1,ret);
关键是我自己函数的地址。写到内存中的和我在sedit里面读出来的不一样。好像第二个写入内存只写了一个字节。这是为什么?
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
我写入的地址是三字节的。我用CE改。会把下面的字节也改掉。为什么这个就不行呢。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
谁来帮帮我啊。我学了二天了。还是没搞定。
|
能力值:
(RANK:410 )
|
-
-
13 楼
jmp的偏移地址不能直接这样改,必须进行计算才能得到,计算公式是:你的函数地址-要修改的地址-jmp指令长度(短跳是2,长跳是5)=jmp跳转的偏移指令。
|
能力值:
( LV3,RANK:20 )
|
-
-
14 楼
delphi我不会,呵呵,我只会C
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
完全路过 不懂呵呵
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
已经搞定了。谢谢小虾.
|
|
|