找到技能数组

   1、更新打坐CALL地址;新地址$00452E20

  2、找出F1-F8技能 数组+偏移

       a、先用CE找到数组相对基址:

       b、回溯找到 基址+偏移

       c、推导出公式

  为什么要找这个数组?

     因为在按F1-F8调用技能时,会访问这个数组里存放的技能对象(物品对象),这将是找到(物品使用,技能,普攻)之类功能CALL的突破口。

 

 dd 051FF1E8

48D581:eax=[esi+0c]

4c8aB1:[ecx+0C]

553CAA: dd   [[ebx+eax*4+908]+0c]+4*0

基址:553BC0:

dd   [[[[[95AD3C]+1c]+24]+1*4+908]+0c]+4*0 //0表示数组下标F1-F8

dd  [[[[[95AD3C]+1c]+24]+1*4+8FC]+0c]+4*0  //1-9,0


 1、F1-F8使用CALL

 2、内存断点

 3、条件断点

  这一章 分析的数据是非常重要的,分析完后,基本能写个像样的外挂了

 作业

 技能栏 1-9与0 功能CALL的使用 

//54F52A:CALL 0048D590

//54F537:CALL DWORD PTR DS:[EDX+8]

 

 dd   [[[[[95AD3C]+1c]+24]+1*4+908]+0c]+4*0 //0表示数组下标 F1-F8

 dd  [[[[[95AD3C]+1c]+24]+1*4+8FC]+0c]+4*0  //1-9,0

 

窗口过程:444710

 窗口过程上,设置消息断点: WM_KEYDOWN

 42C4DF jnz 改 jmp

 

 54F52F: 取出 技能对象

function F1_F8(index:integer=1):boolean;

begin

 index:=(index-1)*4;

asm

mov ecx,$95ad3c

mov ecx,[ecx]

add ecx,$1c

mov ecx,[ecx]

add ecx ,$24

mov ecx,[ecx]

add ecx,4

add ecx,$908

mov ecx,[ecx]

add ecx,$0c

mov ecx,[ecx]

add ecx,index

mov ecx,[ecx]

mov edx,[ecx]

mov edx,[edx+$8]

call edx

end;

end;

 


/

function F1():boolean; stdcall;


begin
  //数组的偏移
asm
mov ecx,$95ad3c
mov ecx,[ecx]
add ecx,$1c
mov ecx,[ecx]
add ecx ,$24
mov ecx,[ecx]
add ecx,$4
add ecx,$908
mov ecx,[ecx]
add ecx,$0c
mov ecx,[ecx]
add ecx,0     //F1-F8 的相对偏移
mov ecx,[ecx]
mov edx,[ecx]   //获取类函数列表地址
mov edx,[edx+$8]  //取出偏移8处的类函数地址
call edx 
end;
result:=true;
end;


///

procedure TForm1.Button3Click(Sender: TObject);
var
  h:HWND;
  tid,hProcess:Thandle;
  Calladdr:Pointer;
  writeByte:DWORD;


begin
    h:=findwindow(nil,'Element Client');
    windows.GetWindowThreadProcessId(h,tid);
    hProcess:=windows.OpenProcess(windows.PROCESS_ALL_ACCESS,false,tid);
    //在游戏进程里分配内存空间
    Calladdr:=VirtualAllocEx(hProcess,nil,windows.MAX_PATH*8,windows.MEM_COMMIT OR windows.MEM_RESERVE,windows.PAGE_EXECUTE_READWRITE);
    //在游戏内存空间里写入代码
    WriteProcessMemory(hProcess,@Calladdr,@F1,MAX_PATH*8,writeByte);
    //调用远程代码


    CreateRemoteThread(hProcess,nil,0,Calladdr,nil,0,writeByte);
    VirtualFreeEx(hProcess,nil,windows.MAX_PATH,windows.MEM_COMMIT OR windows.MEM_RESERVE);
end; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蚂蚁_CrkRes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值