冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 924|回覆: 4
打印 上一主題 下一主題

[求助/徵求] 技能注入call求助

[複製鏈接]

42

主題

0

好友

84

積分

新手上路

Rank: 1

UID
290224
帖子
381
主題
42
精華
0
積分
84
楓幣
266
威望
75
存款
0
贊助金額
0
推廣
0
GP
50
閱讀權限
10
性別
保密
在線時間
178 小時
註冊時間
2020-9-13
最後登入
2023-8-31
跳轉到指定樓層
1
發表於 2021-11-8 01:22:59 |只看該作者 |倒序瀏覽
上個版本有位大大新發布了一個新的技能注入的方法,但注入之後是普攻,所以我嘗試去分析他
其中有一段
call 0311ECC0
mov ebx,[eax+04]
mov ecx,[04386E60]
lea eax,[esp-0C]
push 01
push 00
push 00
push 00
push eax
push [skillid]
mov [esp-0C],00000000
push ebx
call 00A11BC0
.....省略
我認為是從這段遊戲的源碼改寫的
call 0311ECC0
cmp dword ptr [ebp-0C],00
mov eax,[eax+04]
mov [ebp-08],eax
........省略
mov ecx,[04386E60]
lea eax,[ebp-04]
push 01
push 00
push 00
push 00
push eax
mov eax,[ebp+08]
mov [ebp-04],00000000
push [eax]
push [ebp-08]
call 00A11BC0
......省略
我在想是否是技能id沒寫進去
TwMs 222.2
  • Label1:
  • mov dword ptr [edi+00016660],技能代碼
  • //------------------------------------
  • mov ecx,[03DCF220]
  • lea eax,[temp+10]
  • push 01
  • push 00
  • push 00
  • push 00
  • push eax
  • push [edi+00016660]
  • mov [temp+10],00000000
  • push [temp+08]
  • call 0084ECF0
結合以前版上的歷史數據,我嘗試修改
mov eax,[skillid]
mov dword ptr [edi+000130E4],eax
push [edi+000130E4]
發現還是普攻,那麼就不是id沒push進去的問題。
我試著將原有的寫法,改為我認為應該是遊戲調用的寫法,但遊戲一下閃退了。
花了一段時間,我嘗試去辨認,push進去的其它值
lea eax,[esp-0C]
push 01
push 00
push 00
push 00
push eax
push [skillid]
mov [esp-0C],00000000
push ebx   // 我认为是正确的
call 00A11BC0
那麼問題應該是在[esp-0C]這裡
我想求助的是,我是否是往正確的方向上走,注入之後普攻的問題是否是[esp-0C],注入之後是普攻的問題是什麼導致的?



已有 1 人評分楓幣 骰子 GP 收起 理由
v168 + 1 + 1 + 1 我很認同!

總評分: 楓幣 + 1  骰子 + 1  GP + 1   查看全部評分

收藏收藏1 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1骰子
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$

94

主題

2

好友

374

積分

中級會員

Rank: 3Rank: 3

UID
287787
帖子
219
主題
94
精華
0
積分
374
楓幣
2879
威望
349
存款
0
贊助金額
0
推廣
6
GP
101
閱讀權限
30
在線時間
509 小時
註冊時間
2020-8-5
最後登入
2024-5-5

2020中秋節紀念勳章 2021端午節紀念勳章 Apple勳章 2023端午節紀念勳章

2
發表於 2021-11-8 09:00:44 |只看該作者
本帖最後由 麗麗 於 2021-11-8 09:02 編輯

是的,我这边游戏没更新,只能给你个老版本的 更新下就可以用了
这个是根据yutsaihsieh大佬 222版本发的那个写的,hook点是随便找了个游戏中会运行到的api
  1. // TwMS v237.1 ICS SkillInjection

  2. [ENABLE]
  3. Alloc(SkillInjection_ICS_ForwardTable,1024)
  4. Alloc(temp,128)
  5. RegisterSymbol(SkillInjectionSW)
  6. Alloc(SkillInjectionSW,4)
  7. RegisterSymbol(SkillInjectionDelay)
  8. Alloc(SkillInjectionDelay,4)
  9. RegisterSymbol(Skill_Injection_ID_List)
  10. Alloc(Skill_Injection_ID_List,64)
  11. RegisterSymbol(LastSkillID)
  12. Alloc(LastSkillID,4)
  13. Alloc(Timer,4)
  14. Alloc(Count,4)
  15. RegisterSymbol(Count)
  16. Alloc(Skill_Injection_ID_Counter,4)
  17. RegisterSymbol(Skill_Injection_ID_Counter)
  18. Label(InitSkillInjection)
  19. Label(SkillInjection_ICS)
  20. Label(Chk_Status)
  21. Label(SkillInjection)
  22. Label(L1)
  23. Label(SkillInjectionExit)


  24. //--------------------------------------------------------------------------------//
  25. Skill_Injection_ID_List:
  26. //dd skillid below

  27. dd 01E84BF6        // 32001014 死神
  28. dd 01E9CEAA        // 32100010 死神契約I
  29. dd 01E9F5C1        // 32110017 死神契約II
  30. dd 01EA1CD3        // 32120019 死神契約III

  31. dd 00 //end of list
  32. //--------------------------------------------------------------------------------//

  33. SkillInjectionDelay:
  34. DD 28

  35. SkillInjectionSW:
  36. DD 1

  37. Timer:
  38. DD 0

  39. Skill_Injection_ID_Counter:
  40. DD 0

  41. temp:
  42. DD 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

  43. SkillInjection_ICS_ForwardTable:
  44. cmp [esp],01A8A868
  45. jne USER32.ScreenToClient
  46. cmp [SkillInjectionSW],01
  47. jne USER32.ScreenToClient
  48. mov [esp],SkillInjection_ICS
  49. jmp USER32.ScreenToClient

  50. InitSkillInjection:
  51. cmp dword ptr [eax],0
  52. je SkillInjectionExit
  53. add eax,4
  54. inc [Skill_Injection_ID_Counter]
  55. jmp InitSkillInjection

  56. SkillInjection_ICS:
  57. pushad
  58. mov eax,Skill_Injection_ID_List
  59. cmp [Skill_Injection_ID_Counter],0
  60. je InitSkillInjection


  61. //------------------------------------//
  62. Chk_Status:
  63. mov eax,[041F8D30]
  64. test eax,eax
  65. je SkillInjectionExit
  66. mov eax,[050C3978]
  67. mov [LastSkillID],eax
  68. mov eax,[050BD6A0]
  69. cmp [eax+4],2
  70. jg SkillInjectionExit
  71. mov eax,[050BCAD0]
  72. mov eax,[eax+14]
  73. mov eax,[eax+000191D8+40]
  74. cmp eax,1
  75. jl SkillInjectionExit
  76. call 02E11170
  77. mov edx,eax
  78. sub edx,[Timer]
  79. cmp edx,[SkillInjectionDelay]
  80. jl SkillInjectionExit
  81. mov [Timer],eax
  82. mov ecx,[Skill_Injection_ID_Counter]
  83. mov [Count],ecx
  84. jmp SkillInjection
  85. //------------------------------------//


  86. SkillInjection:
  87. mov dword ptr [temp+08],00000000
  88. mov dword ptr [temp+10],00000000
  89. //------------------------------------
  90. mov edi,[041F8D30]
  91. mov ecx,[041F8A3C]
  92. lea eax,[temp]
  93. push eax
  94. call 03044850
  95. cmp dword ptr [temp+04],00
  96. mov eax,[eax+04]
  97. mov [temp+08],eax
  98. je L1
  99. push 00
  100. lea ecx,[temp]
  101. call 00492F70
  102. mov [temp+04],00000000
  103. //------------------------------------
  104. L1:
  105. mov ecx,[Count]
  106. dec ecx
  107. mov ecx,[Skill_Injection_ID_List+ecx*4]
  108. mov dword ptr [edi+00012368],ecx
  109. //------------------------------------
  110. mov ecx,[041F8A38]
  111. lea eax,[temp+10]
  112. push 01
  113. push 00
  114. push 00
  115. push 00
  116. push eax
  117. push [edi+00012368]
  118. mov [temp+10],00000000
  119. push [temp+08]
  120. call 009F1E50
  121. //------------------------------------
  122. push 00
  123. push 00
  124. push 00
  125. push 00
  126. push 00
  127. push 00
  128. push 01
  129. push 00
  130. push 00
  131. push 00
  132. push 00
  133. push 00
  134. push 00
  135. push 00
  136. push 00
  137. push 00
  138. push 00
  139. push 00
  140. push eax
  141. push [temp+10]
  142. mov ecx,edi
  143. call 02C4D840
  144. mov [edi+00012368],00000000
  145. dec [Count]
  146. cmp [Count],0
  147. jne SkillInjection
  148. //------------------------------------

  149. SkillInjectionExit:
  150. popad
  151. jmp 01A8A868

  152. 050BF274:
  153. DD SkillInjection_ICS_ForwardTable

  154. [DISABLE]
  155. 050BF274:
  156. DD USER32.ScreenToClient
複製代碼

點評

ningmeng  多谢麗麗大大,我会根据你这个继续分析之前那个写法,我感觉技能注入的call能单独挪出来,直接调用  發表於 2021-11-8 14:54
回覆

使用道具 舉報

42

主題

0

好友

84

積分

新手上路

Rank: 1

UID
290224
帖子
381
主題
42
精華
0
積分
84
楓幣
266
威望
75
存款
0
贊助金額
0
推廣
0
GP
50
閱讀權限
10
性別
保密
在線時間
178 小時
註冊時間
2020-9-13
最後登入
2023-8-31
3
發表於 2021-11-9 01:45:07 |只看該作者
讓來我試著回答我之前的問題,之前那位大大發的寫法有一點小問題,所以注入之後才會變成普攻。
既然之前的入參是 [esp - 14] , 那麼後面就不應該寫[esp - 0C],而是[esp - 04],並且沒有往edi中放入技能id,導致最後一個call push進去的edi裡面的技能id為0,所以最後打出來是普攻。
收穫還是很多,技能注入不會有一個標準的寫法,它可以hook任何api調用,或者更極端一點可以寫個線程調用,可以控制它的調用頻率或使用技能次數,並不是固定地一秒33次,而可以是更多次。
push 00
push 00
push 00
push 00
push 00
push 00
push ? ?
push 00
push 00
push 00
push ? ?
push? ?
push 01
push 00
push 00
push 00
push 00
push 00
push ecx
push edx
mov ecx,edi
遊戲裡的源碼,問號的地方都是沒有固定值的,可以填一些別的值,也是很有趣的一個地方。


此貼終結

點評

qwas963563  寫個線程調用估計你遊戲就崩了  發表於 2021-11-10 23:04
回覆

使用道具 舉報

42

主題

0

好友

84

積分

新手上路

Rank: 1

UID
290224
帖子
381
主題
42
精華
0
積分
84
楓幣
266
威望
75
存款
0
贊助金額
0
推廣
0
GP
50
閱讀權限
10
性別
保密
在線時間
178 小時
註冊時間
2020-9-13
最後登入
2023-8-31
4
發表於 2021-11-10 22:35:35 |只看該作者
更新一下我的错误,堆栈里保存的第一个出参,和第二个出参的位置间隔是8,所以,在push进call里的时候,两个数字相差8即可,需要保证保存出参的内存的干净,然后将skill放进edi即可
[發帖際遇]: ningmeng 被錢袋砸中進醫院,看病花了 2 楓幣 幸運榜 / 衰神榜
回覆

使用道具 舉報

6

主題

0

好友

17

積分

新手上路

Rank: 1

UID
171516
帖子
39
主題
6
精華
0
積分
17
楓幣
5140
威望
14
存款
0
贊助金額
0
推廣
0
GP
5
閱讀權限
10
性別
保密
在線時間
52 小時
註冊時間
2016-12-3
最後登入
2023-10-19

Android勳章

5
發表於 2021-11-10 22:56:55 |只看該作者
ningmeng 發表於 2021-11-10 22:35
更新一下我的错误,堆栈里保存的第一个出参,和第二个出参的位置间隔是8,所以,在push进call里的时候,两 ...

分析的很詳細,可惜我還是更新不出來
[發帖際遇]: v168 參加私人Party受傷,因而獲得國賠 1 楓幣 幸運榜 / 衰神榜
回覆

使用道具 舉報

您需要登入後才可以回文 登入 | 立即註冊

廣告刊登意見回饋關於我們職位招聘本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-5-5 16:07

回頂部