黃易群俠傳M脫機外掛應用程式黃易神行
4778
6

[發問] 請各位大大幫我看一下,走路call那裡有問題,每次執行都會當掉

MOULI33 發表於 2010-12-10 08:19:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |
以下是源碼,不知那裡有問題,只要在程式中執行 walkto(x,y.z) 這個程序就會當掉。
謝謝!
這源碼是在網路上找到的,謝謝提供這源碼的大大!

const  
  W2i_Base_ADDR=$A5BFB0;
  W2I_BASE_Call=$A5B90C;
  W2I_SEND_PACK_CALL=$60E310;
  W2I_Walk_Call1=$469F00;
  W2I_Walk_Call2=$46E090;
  W2I_Walk_Call3=$46A340;
procedure WalkCall(aPParams:PParams); Stdcall;
var
  Address1:pointer;
  Address2:pointer;
  Address3:pointer;
  x,y,z:Single;
  r_POSITION1:Integer;
begin
  Address1:=Pointer(W2I_Walk_Call1);
  Address2:=pointer(W2I_Walk_Call2);
  Address3:=pointer(W2I_Walk_Call3);
  x:=aPParams^.Param3;
  y:=aPParams^.Param4;
  z:=aPParams^.Param5;
  asm
    pushad
      mov eax, dword ptr [W2I_BASE_ADDR]
      mov eax, dword ptr [eax+$1C]
      mov esi, dword ptr [eax+$20]
      mov ecx, dword ptr [esi+$dd4]  //Bcc+8=BD4     dd4 fec
      push 1
      call Address1
      mov edi, eax
      lea eax, dword ptr [esp+$18]
      push eax
      push 0   //r_POSITION1   //0地面 1空中
      mov ecx, edi
      call Address2
      mov ecx, dword ptr [esi+$dd4]  //Bcc+8=BD4    dd4 fec
      push 0
      push 1
      push edi
      push 1
      call    Address3
      mov eax, dword ptr [W2I_BASE_ADDR]
      mov eax, dword ptr [eax+$1C]
      mov eax, dword ptr [eax+$20]
      mov eax, dword ptr [eax+$dd4]  //Bcc+8=BD4  dd4 fec
      mov eax, dword ptr [eax+$30]
      mov ecx, dword ptr [eax+4]
      mov eax, x
      mov dword ptr[ecx+$20], eax
      mov eax, z
      mov dword ptr[ecx+$24], eax
      mov eax, y
      mov dword ptr[ecx+$28], eax
    popad
  end;
     
end;
procedure TForm1.WalkTo(x, y, z: single);
var
  aParams : TParams;
  aParamsSize: DWORD;
begin
  aParams.Param3:=x;
  aParams.Param4:=y;
  aParams.Param5:=z;
  aParamsSize:=SizeOf(aParams);
  if hCurrentHandle<>0 then
  begin
    injectfunc(@WalkCall, @aParams, aParamsSize);
  end;
end;
收藏收藏 分享分享 讚 幹 分享分享 FB分享
回覆

使用道具 舉報


RAINTCK 當前離線
UID
1569638
熱心
259 值
嘉獎
0 次
違規
0 次
在線時間
321 小時
經驗
158 點
積分
4295
精華
0
最後登錄
2018-10-27
閱讀權限
50
註冊時間
2010-10-21
論壇幣
3504 幣
聯合幣
47 枚
幸運鑽
6 顆
招待卷
2000 點
查看詳細資料
Rank: 6Rank: 6
RAINTCK 2010-12-10 10:01:30
請問大大BCC+8=BD4 怎會變DD4  注解FEC又是甚麼意思YCT62B
回覆

使用道具 舉報

jinnrose 當前離線
UID
896933
熱心
49 值
嘉獎
0 次
違規
0 次
在線時間
79 小時
經驗
39 點
積分
167
精華
0
最後登錄
2015-7-6
閱讀權限
20
註冊時間
2008-6-19
論壇幣
8171 幣
聯合幣
9 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
jinnrose 2010-12-10 10:25:25
這個Call 我試過了.只要把 DD4 改成 FF4就可以正常運作囉!YCT50B

那個注解可能是版本一直更新,所留下的
回覆

使用道具 舉報

sccot 當前離線
UID
848392
熱心
316 值
嘉獎
0 次
違規
0 次
在線時間
124 小時
經驗
246 點
積分
246
精華
0
最後登錄
2011-4-13
閱讀權限
25
註冊時間
2008-5-5
論壇幣
3187 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 3
sccot 2010-12-12 00:34:48
這源碼還可以用?

希望能自己寫外掛看看!

謝謝!
回覆

使用道具 舉報

MOULI33 當前離線
UID
1279460
熱心
59 值
嘉獎
0 次
違規
0 次
在線時間
72 小時
經驗
58 點
積分
58
精華
0
最後登錄
2014-6-23
閱讀權限
20
註冊時間
2009-7-29
論壇幣
6361 幣
聯合幣
1 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
5
MOULI33 2010-12-16 02:45:13
j 大我把dd4改成ff4後,是可以走了,但他不會走到我要的定點,要如何讓他走到定點一直想不通,能在指點一下嗎?
我的源碼如下,
    //定點座標
    tfix_ax:=strtofloat(Rzedit1.text);
   tfix_ay:=strtofloat(Rzedit2.text);
   tfix_az:=strtofloat(RZedit3.text);

   tDist_x:=((tfix_ax-400)*10);
   tDist_y:=((tfix_ay-500)*10);
   tDist_z:=(tfix_az*10);

   walkto(tDist_x,tDist_y,tDist_z);
回覆

使用道具 舉報

jinnrose 當前離線
UID
896933
熱心
49 值
嘉獎
0 次
違規
0 次
在線時間
79 小時
經驗
39 點
積分
167
精華
0
最後登錄
2015-7-6
閱讀權限
20
註冊時間
2008-6-19
論壇幣
8171 幣
聯合幣
9 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
6
jinnrose 2010-12-18 00:30:18
年關到了,每天忙回來人就攤在那裡.像一隻死老狗了,外掛就擺在那裡.沒再動了..
你嗎幫幫忙a.不要指定人回答,這裡有許多的高手,你po了就有人回應了吧,,,,



   tDist_y:=(tfix_ay-550)*10;

   walkto(tDist_x,tDist_y,tDist_z);

1.那個y座標500改為550吧
2.你調用的call你要考慮到參數傳遞的變數名稱啊
walkto(x,y,z);
3.還有完美世界,應該都是先用飛行,到了定點降落,才用走路去修正人物座標到你指定的位置
要用走路到目地,應該是不可能的吧

根據e大的飛白程序
我的解讀
讀取任務背包,得到現在任務或下一個任務
判斷現在是否在飛行狀態
調用飛行CALL
調用飛行to 的call
到達目地,降落
調走路的call
激活npc
...
....
其中還有加上e大,個人的經驗,延時的程序
回覆

使用道具 舉報

janin0115 當前離線
UID
1472623
熱心
200 值
嘉獎
0 次
違規
0 次
在線時間
269 小時
經驗
120 點
積分
927
精華
0
最後登錄
2015-10-26
閱讀權限
30
註冊時間
2010-5-31
論壇幣
318 幣
聯合幣
3 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 4Rank: 4
7
janin0115 2011-1-14 10:40:20
請問大大 我執行出了問題 請大大們幫我看一下 謝謝
type  // ---- 定義參數指針
  PParams2 = ^TParams;
  TParams2 = packed record
  Param3,Param4,Param5: DWORD;
  end;

procedure WalkCall2(aPParams:PParams); Stdcall;
var
  Address1:pointer;
  Address2:pointer;
  Address3:pointer;
  x,y,z:Single;
  r_POSITION1:Integer;
begin
  Address1:=Pointer($469F00);
  Address2:=pointer($46E090);
  Address3:=pointer($46A340);
  x:=aPParams^.Param3;
  y:=aPParams^.Param4;
  z:=aPParams^.Param5;
  asm
    pushad
      mov eax, dword ptr [W2I_BASE_ADDR]
      mov eax, dword ptr [eax+$1C]
      mov esi, dword ptr [eax+$20]
      mov ecx, dword ptr [esi+$ff4]  //Bcc+8=BD4
      push 1
      call Address1
      mov edi, eax
      lea eax, dword ptr [esp+$18]
      push eax
      push 0   //r_POSITION1   //0地面 1空中
      mov ecx, edi
      call Address2
      mov ecx, dword ptr [esi+$dd4]  //Bcc+8=BD4    dd4 fec
      push 0
      push 1
      push edi
      push 1
      call    Address3
      mov eax, dword ptr [W2I_BASE_ADDR]
      mov eax, dword ptr [eax+$1C]
      mov eax, dword ptr [eax+$20]
      mov eax, dword ptr [eax+$ff4]  //Bcc+8=BD4  dd4 fec
      mov eax, dword ptr [eax+$30]
      mov ecx, dword ptr [eax+4]
      mov eax, x
      mov dword ptr[ecx+$20], eax
      mov eax, z
      mov dword ptr[ecx+$24], eax
      mov eax, y
      mov dword ptr[ecx+$28], eax
    popad
  end;

end;

procedure InjectFunc2(Func: Pointer; Param: Pointer; ParamSize: DWORD);
var
  hThread: THandle;
  lpNumberOfBytes: DWORD;

begin
  if processid<>0 then
  begin
    // ---- 寫入函數位址
    WriteProcessMemory(processid, ThreadAdd, Func, 128, lpNumberOfBytes);
    // ----  寫入參數位址
    WriteProcessMemory(processid, ParamAdd2, Param, ParamSize, lpNumberOfBytes);
    // ---- 建立遠端執行緒
    hThread := CreateRemoteThread(processid, nil, 0, ThreadAdd2, ParamAdd2, 0, lpNumberOfBytes);
    // ---- 等待執行緒結束
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);
  end;
end;

procedure TForm1.FormDestroy2(Sender: TObject);
begin
  VirtualFreeEx(processid, ThreadAdd, MemSize, MEM_RELEASE);
  VirtualFreeEx(processid, ParamAdd, 20, MEM_RELEASE);
  CloseHandle(processid);
end;
procedure TForm1.WalkTo(x, y, z: single);
var
  aParams2 : TParams;
  aParamsSize2: DWORD;
begin
  aParams2.Param3:= x;  <===錯誤都在這裡
  aParams2.Param4:= y;
  aParams2.Param5:= z;
  aParamsSize2=SizeOf(aParams2);
  if ghwnd<>0 then
  begin
    injectfunc2(@WalkCall2, @aParams2, aParamsSize2);
  end;
end;
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊


手機版 | Archiver | 外掛聯合國

GMT+8, 2024-6-3 23:18 , Processed in 0.060922 second(s), 19 queries , Memcache On.

版權說明:
  本站不會製作、經銷、代理外掛程式。僅免費提供外掛程式下載前之掃毒及掃木馬等安全檢測驗證,協助會員遠離盜號危險程式。本站所有資料均來自網際網路收集整理,說明文字暨下載連結轉載自原程 式開發站。站上出現之公司名稱、遊戲名稱、程式等,商標及著作權,均歸各公司及程式原創所有,本站程式所有權歸外掛聯合國所有。本程式所有權歸外掛聯合國所有.......

回頂部
第二步?
第三步?