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

[發問] delphi 遊戲技能問題

janin0115 發表於 2010-12-16 19:38:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |
請問大大們 我有在另外一地方有發問 比較晚出來我 重新發一次
原碼
  ReadProcessMemory(ProcessID, Pointer($A5BFB0+$1C),@ft, 4, tt);   //讀取一級基址
  ReadProcessMemory(ProcessID, Pointer(ft+$20), @ft, 4, tt);   //人物基址
  ReadProcessMemory(ProcessID, Pointer($45F550++$101C), @jnfirst, 4, tt); //技能基址
  ReadProcessMemory(ProcessID, Pointer(jnfirst +$1020), @jnnum, 4, tt);  //技能總數
  ReadProcessMemory(ProcessID, Pointer(jnfirst +$8), @jnID, 4, tt);  //技能ID
  ReadProcessMemory(ProcessID, Pointer(jnfirst +$10), @jnSJ, 4, tt);  //技能冷卻時間
  ReadProcessMemory(ProcessID, Pointer(jnfirst +$14), @jnJG, 4, tt);  //技能施放間隔
  ReadProcessMemory(ProcessID, Pointer(jnfirst +$18), @jnZT, 4, tt);  //技能狀態
  ReadProcessMemory(ProcessID, Pointer(jnfirst +$C), @ujnname, 4, tt);  //技能名稱
  ReadProcessMemory(ProcessID, Pointer(ujnname+$0),@Ajnname,SizeOf(Ajnname),tt);
請問 要怎麼 顯示在combobox 上 請大大教導
感恩 要怎麼寫技能 還有武俠偏移是$0嗎 那其他偏移是什麼
收藏收藏 分享分享 讚 幹 分享分享 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-16 19:58:28
COMBOBOX27.Items.Add(WORKMAN_NAME)
你要去遍歷技能+$0是第一個技能名
回覆

使用道具 舉報

janin0115 當前離線
UID
1472623
熱心
200 值
嘉獎
0 次
違規
0 次
在線時間
269 小時
經驗
120 點
積分
927
精華
0
最後登錄
2015-10-26
閱讀權限
30
註冊時間
2010-5-31
論壇幣
318 幣
聯合幣
3 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 4Rank: 4
janin0115 2010-12-16 21:19:12
請問大大 我編譯技能完
if checkbox7.Checked and (jnSJ=0) then ;
    SendMessageW (Ghwnd,WM_KEYDOWN ,nkey11,0);
是這樣執行技能嗎 還是我的偏移有錯 因為我執行 沒反應
ReadProcessMemory(ProcessID, Pointer($A5BFB0+$1C),@ft, 4, tt);   //讀取一級基址
  ReadProcessMemory(ProcessID, Pointer(ft+$20), @ft, 4, tt);   //人物基址
  ReadProcessMemory(ProcessID, Pointer($45F550++$101C), @jnfirst, 4, tt); //技能基址
  ReadProcessMemory(ProcessID, Pointer(jnfirst +$1020), @jnnum, 4, tt);  //技能總數
  ReadProcessMemory(ProcessID, Pointer(jnfirst +$8), @jnID, 4, tt);  //技能ID
  ReadProcessMemory(ProcessID, Pointer(jnfirst +$10), @jnSJ, 4, tt);  //技能冷卻時間
  ReadProcessMemory(ProcessID, Pointer(jnfirst +$14), @jnJG, 4, tt);  //技能施放間隔
  ReadProcessMemory(ProcessID, Pointer(jnfirst +$18), @jnZT, 4, tt);  //技能狀態
  ReadProcessMemory(ProcessID, Pointer(jnfirst +$C), @ujnname, 4, tt);  //技能名稱
  ReadProcessMemory(ProcessID, Pointer(ujnname+$0),@Ajnname,36,tt);
回覆

使用道具 舉報

janin0115 當前離線
UID
1472623
熱心
200 值
嘉獎
0 次
違規
0 次
在線時間
269 小時
經驗
120 點
積分
927
精華
0
最後登錄
2015-10-26
閱讀權限
30
註冊時間
2010-5-31
論壇幣
318 幣
聯合幣
3 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 4Rank: 4
janin0115 2010-12-16 21:50:06
我好像用到按鍵CALL了 請問大大怎麼直接發CALL 技能
回覆

使用道具 舉報

RAINTCK 當前離線
UID
1569638
熱心
259 值
嘉獎
0 次
違規
0 次
在線時間
321 小時
經驗
158 點
積分
4295
精華
0
最後登錄
2018-10-27
閱讀權限
50
註冊時間
2010-10-21
論壇幣
3504 幣
聯合幣
47 枚
幸運鑽
6 顆
招待卷
2000 點
查看詳細資料
Rank: 6Rank: 6
5
RAINTCK 2010-12-16 21:52:39
CALL技能要送封包你去爬文!!
我懶所以我寫都是卡鍵沒動call
回覆

使用道具 舉報

janin0115 當前離線
UID
1472623
熱心
200 值
嘉獎
0 次
違規
0 次
在線時間
269 小時
經驗
120 點
積分
927
精華
0
最後登錄
2015-10-26
閱讀權限
30
註冊時間
2010-5-31
論壇幣
318 幣
聯合幣
3 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 4Rank: 4
6
janin0115 2010-12-18 11:57:31
請問大大們 可以給我一個 可以發一個 可以call技能的碼嗎? 下面碼 我都試不出來 還是哪裡有錯 請提點一下 謝謝 感恩
pushad
    mov ecx,DWORD PTR [$A5BFB0]
    push -1
    push 0
    mov edx,DWORD PTR [ecx+$1c]
    push 0
    push 102       我是用收尋的102 不知道是不是獸王錘 也不確定正不正確  //////技能ID
    mov ecx,DWORD PTR [edx+$20]
    call 45F550 <== 這裡是放技能call嗎
回覆

使用道具 舉報

efun 當前離線
UID
226745
熱心
683 值
嘉獎
6 次
違規
0 次
在線時間
1229 小時
經驗
812 點
積分
472147
精華
6
最後登錄
2021-5-1
閱讀權限
70
註冊時間
2007-2-19
論壇幣
469294 幣
聯合幣
59 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 5Rank: 5Rank: 5
7
efun 2010-12-19 14:24:27
type
  /// ///////////////////////////////////定義參數及其指針
  PParams = ^TParams;

  TParams = packed record
    Param1: DWORD;
    Param2: DWORD;
    Param3: single;
    Param4: single;
    Param5: single;
    Param6: byte;
  end;

procedure UseSkill(Skill_ID: cardinal);



procedure UseSkillCall(aPParams: PParams); Stdcall;
/// 技能call
var
  address: Pointer;
  P1: DWORD;
begin
  address := Pointer(SkillCall);
  P1 := aPParams^.Param1;
  asm
    pushad
    mov ecx,DWORD PTR [W2I_BASE_Call]
    push -1
    push 0
    mov edx,DWORD PTR [ecx+$1c]
    push 0
    push P1
    mov ecx,DWORD PTR [edx+$20]
    call address
    popad
  end;
end;

procedure TForm1.UseSkill(Skill_ID: cardinal);
var
  aParams: TParams;
  aParamsSize: DWORD;
begin
  aParams.Param1 := Skill_ID;
  aParamsSize := SizeOf(aParams);
  InjectFunc(@UseSkillCall, @aParams, aParamsSize);
end;


W2I_BASE_Call = $A5B90C;

嗯,其實我也是抄來的,該份原碼有板友之前發過∼
回覆

使用道具 舉報

janin0115 當前離線
UID
1472623
熱心
200 值
嘉獎
0 次
違規
0 次
在線時間
269 小時
經驗
120 點
積分
927
精華
0
最後登錄
2015-10-26
閱讀權限
30
註冊時間
2010-5-31
論壇幣
318 幣
聯合幣
3 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 4Rank: 4
8
janin0115 2010-12-19 18:22:44
感謝e大分享 但是我還是call不出技能 請大大幫我看一下 哪裡有問題?
procedure TForm1.Button4Click(Sender: TObject);
begin
ReadProcessMemory(ProcessID, Pointer($A5BFB0+$1C),@ft, 4, tt);   //讀取一級基址
       ReadProcessMemory(ProcessID, Pointer(ft+$20), @ft, 4, tt);   //人物基址
        READPROCESSMEMORY(ProcessID, Pointer(ft+$618),@UnName,4, tt); // 人物ID偏移
           ReadProcessMemory(ProcessID, pointer(UnName),@ASName,SizeOf(ASName), tt);//讀取人物名稱
       ReadProcessMemory(ProcessID, Pointer($45F550++$101C), @jnfirst, 4, tt); //技能基址
       ReadProcessMemory(ProcessID, Pointer(jnfirst +$1020), @jnnum, 4, tt);  //技能總數
       ReadProcessMemory(ProcessID, Pointer(jnfirst +$8), @jnID, 4, tt);  //技能ID
       ReadProcessMemory(ProcessID, Pointer(jnfirst +$10), @jnSJ, 4, tt);  //技能冷卻時間
       ReadProcessMemory(ProcessID, Pointer(jnfirst +$14), @jnJG, 4, tt);  //技能施放間隔
       ReadProcessMemory(ProcessID, Pointer(jnfirst +$18), @jnZT, 4, tt);  //技能狀態
       ReadProcessMemory(ProcessID, Pointer(jnfirst +$C), @ujnname, 4, tt);  //技能名稱
end;      // ---- 技能 CALL
procedure MyCall1(aPParams: PParams); Stdcall;
var
  Address: pointer;
  P1: DWORD;
begin
  Address:=Pointer($45F550);
  P1:=aPParams^.Param1;          // ---- 技能ID號
asm
    pushad
    mov ecx,DWORD PTR [$A5B90C]
    push -1
    push 0
    mov edx,DWORD PTR [ecx+$1c]
    push 0
    push 102<===請問大大 技能id 是不是這樣寫
    mov ecx,DWORD PTR [edx+$20]
    call address
    popad

  end;
end;
procedure InjectFunc(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, ParamAdd, Param, ParamSize, lpNumberOfBytes);
    // ---- 建立遠端執行緒
    hThread := CreateRemoteThread(processid, nil, 0, ThreadAdd, ParamAdd, 0, lpNumberOfBytes);
    // ---- 等待執行緒結束
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);
  end;
end;
// ---- 呼叫CALL 技能
procedure TForm1.UseSkill(Skill_ID: cardinal);
var
  aParams: TParams;
   aParamsSize: DWORD;
begin
  aParams.Param1 := Skill_ID;
  aParamsSize := SizeOf(aParams);
  if ghwnd<>0 then
  begin
    injectfunc(@MyCall1, @aParams,aParamsSize);
  end;
end;
回覆

使用道具 舉報

efun 當前離線
UID
226745
熱心
683 值
嘉獎
6 次
違規
0 次
在線時間
1229 小時
經驗
812 點
積分
472147
精華
6
最後登錄
2021-5-1
閱讀權限
70
註冊時間
2007-2-19
論壇幣
469294 幣
聯合幣
59 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 5Rank: 5Rank: 5
9
efun 2010-12-20 01:29:13
好混亂0.0

人物基址+101C 才是 技能基址
知道技能基址,要用 for i=0 to 技能個數-1 來列舉所有技能
而這也只是用來讀出技能編號、名稱和冷卻時間等等,

技能call是一個程序
以上列方式來說,調用的方法是 UseSkill(102);
這樣就可以自動使用編號102的技能

例如:
  if 選中目標編號>0 then    //假如有選中目標
     UseSkill( StrToInt( Edit1.Text ) );  //就使用 編輯框1內文的技能編號
回覆

使用道具 舉報

dece 當前離線
UID
833464
熱心
745 值
嘉獎
1 次
違規
0 次
在線時間
1268 小時
經驗
790 點
積分
170276
精華
0
最後登錄
2014-3-12
閱讀權限
55
註冊時間
2008-4-21
論壇幣
167368 幣
聯合幣
2 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 5Rank: 5Rank: 5
10
dece 2010-12-20 14:51:20
    mov ecx,DWORD PTR [W2I_BASE_Call]
    mov edx,DWORD PTR [ecx+$1c]
    mov ecx,DWORD PTR [edx+$20]
efun 發表於 2010-12-18 19:24


這三行可以精簡變成
    mov ecx,DWORD PTR [W2I_ROLE_BASE_ADDR]
回覆

使用道具 舉報

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

123下一頁

手機版 | Archiver | 外掛聯合國

GMT+8, 2024-11-24 14:40 , Processed in 0.048569 second(s), 17 queries , Memcache On.

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

回頂部
第二步?
第三步?