-
-
[旧帖] [求助]请问这段反汇篇代码如何用Dephi表达出来?如下: 0.00雪花
-
发表于: 2010-10-19 13:34 2076
-
已找到最新版武林外传的发送组队邀请CALL,但注入时或者用Dephi表示时却总出错?错误如图所示:
于是按照图上的参数,我写了以下注入代码:
push 1
push 02f9eaf0
mov ecx,03ebe290
call 0043ed20
但注入时没有任何反应。
于是我又转到DEPHI中写了如下代码:
var
i,id:integer;
playBase,pt,curRole,selfBase:PDWORD;//^integer ^Dword;
begin
//dd [[ [[[[95e800+1c]+24]+138]+18] +I*4]+4] //i=0..$300
//dd [[[[[[00a8ff08]+1c]+24]+138]+18]+I*4]
//目的:遍历玩家列表,取出玩家ID
playBase:=Pointer($00a8ff08);
playBase:=Pointer(Dword(playbase^)+$1c);
playBase:=Pointer(Dword(playbase^)+$24);
playBase:=Pointer(Dword(playbase^)+$138);
playBase:=Pointer(Dword(playbase^)+$18);
for i:=0 to $300 do
begin
curRole:=Pointer(playBase^+i*4);
if (curRole=nil) then continue;
if (curRole^=0) then continue;
curRole:=Pointer(curRole^+4);
pt:=Pointer(curRole^+$248);
id:=pt^;
self.Memo1.Lines.Add(intTohex(pt^,8));
//此处dd [[[00a8ff08]+1c]+24]+8e4 写入以上的pt
//selfBase:=Pointer($00a8ff08);
//selfBase:=Pointer(selfBase^+$1c);
//selfBase:=Pointer(selfBase^+$24);
//selfBase:=Pointer(selfBase^+$8e4);
//selfBase^:=pt^;
asm
push 1
push id
mov ecx,$00a8ff08
mov ecx,[ecx]
add ecx,$1c
mov ecx,[ecx]
mov ebx,$0043ED20
call ebx
end;
end;
end;
测试时,上面的ID值是正确的,大家主要看这里:
asm
push 1
push id
mov ecx,$00a8ff08
mov ecx,[ecx]
add ecx,$1c
mov ecx,[ecx]
mov ebx,$0043ED20
call ebx
end;
与图上的相对比,我实在找不到错在哪了,但在DEPHI中执行时,总出对话框报错?兄弟朋友们看看啊,给个思路就行。到底是哪儿出错了呢?
于是按照图上的参数,我写了以下注入代码:
push 1
push 02f9eaf0
mov ecx,03ebe290
call 0043ed20
但注入时没有任何反应。
于是我又转到DEPHI中写了如下代码:
var
i,id:integer;
playBase,pt,curRole,selfBase:PDWORD;//^integer ^Dword;
begin
//dd [[ [[[[95e800+1c]+24]+138]+18] +I*4]+4] //i=0..$300
//dd [[[[[[00a8ff08]+1c]+24]+138]+18]+I*4]
//目的:遍历玩家列表,取出玩家ID
playBase:=Pointer($00a8ff08);
playBase:=Pointer(Dword(playbase^)+$1c);
playBase:=Pointer(Dword(playbase^)+$24);
playBase:=Pointer(Dword(playbase^)+$138);
playBase:=Pointer(Dword(playbase^)+$18);
for i:=0 to $300 do
begin
curRole:=Pointer(playBase^+i*4);
if (curRole=nil) then continue;
if (curRole^=0) then continue;
curRole:=Pointer(curRole^+4);
pt:=Pointer(curRole^+$248);
id:=pt^;
self.Memo1.Lines.Add(intTohex(pt^,8));
//此处dd [[[00a8ff08]+1c]+24]+8e4 写入以上的pt
//selfBase:=Pointer($00a8ff08);
//selfBase:=Pointer(selfBase^+$1c);
//selfBase:=Pointer(selfBase^+$24);
//selfBase:=Pointer(selfBase^+$8e4);
//selfBase^:=pt^;
asm
push 1
push id
mov ecx,$00a8ff08
mov ecx,[ecx]
add ecx,$1c
mov ecx,[ecx]
mov ebx,$0043ED20
call ebx
end;
end;
end;
测试时,上面的ID值是正确的,大家主要看这里:
asm
push 1
push id
mov ecx,$00a8ff08
mov ecx,[ecx]
add ecx,$1c
mov ecx,[ecx]
mov ebx,$0043ED20
call ebx
end;
与图上的相对比,我实在找不到错在哪了,但在DEPHI中执行时,总出对话框报错?兄弟朋友们看看啊,给个思路就行。到底是哪儿出错了呢?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
看原图
赞赏
雪币:
留言: