📄 mod98asmcall.bas
字号:
Attribute VB_Name = "Mod98AsmCall"
Option Explicit
''TAB选怪
Sub CallTabKey()
Dim asm As New clsASM
With asm
.Pushad
.Mov_ECX_DWORD_Ptr FirstAdr
.Mov_ECX_DWORD_Ptr_ECX_Add &H1C
.Mov_ECX_DWORD_Ptr_ECX_Add &H28
.Push 1
.Mov_EAX TabCall
.Call_EAX
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''ID选怪
Sub CallSelectById(GuaiWuID As Long)
Dim asm As New clsASM
With asm
.Pushad
.Push GuaiWuID
.Mov_EAX_DWORD_Ptr FirstAdr
.Mov_ECX_DWORD_Ptr_EAX_Add &H20
.Add_ECX &HD4
.Mov_EAX SelectByIdCall
.Call_EAX
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''无效果普通攻击
Sub CallNormalAttack()
Dim asm As New clsASM
With asm
.Pushad
.Mov_EAX NormalAttackCall
.Call_EAX
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''技能攻击
Sub CallSkillAttack(SkillID As Long)
Dim asm As New clsASM
With asm
.Pushad
.Mov_EAX_DWORD_Ptr FirstAdr
.Mov_EAX_DWORD_Ptr_EAX_Add &H1C
.Mov_EAX_DWORD_Ptr_EAX_Add &H28
.Mov_ECX_EAX
.Push -1
.Push 0
.Push 0
.Mov_EAX SkillID
.Push_EAX
.Mov_EAX SkillAttackCall
.Call_EAX
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''打坐
Sub CallZazen()
Dim asm As New clsASM
With asm
.Pushad
.Mov_EAX ZazenCall
.Call_EAX
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''取消打坐
Sub CallUnZazen()
Dim asm As New clsASM
With asm
.Pushad
.Mov_EAX UnZazenCall
.Call_EAX
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''拾取物品
Sub CallPickItem(GoodsID As Long, GoodsSystemID As Long)
Dim asm As New clsASM
With asm
.Pushad
.Mov_ECX_DWORD_Ptr FirstAdr
.Mov_EDX GoodsID
.Push_EDX
.Mov_ECX_DWORD_Ptr_ECX_Add &H20
.Mov_EAX GoodsSystemID
.Push_EAX
.Add_ECX &HD4
.Mov_EAX PickItemCall
.Call_EAX
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''自动走路
Sub CallGoTO(DesX As Single, DesY As Single)
Dim asm As New clsASM
With asm
.Pushad
.Mov_EAX_DWORD_Ptr FirstAdr
.Mov_EBX_DWORD_Ptr_EAX_Add &H1C
.Mov_EBX_DWORD_Ptr_EBX_Add &H28
.Mov_ECX_DWORD_Ptr_EBX_Add &HF9C
.Push 1
.Mov_EBX EcxGoToCall1
.Call_EBX
.Mov_ESI_EAX
.Lea_EAX_DWORD_Ptr_ESP_Add &H50
.Push_EAX
.Push 0
.Mov_ECX_ESI
.Mov_EBX EcxGoToCall2
.Call_EBX
.Mov_EAX_DWORD_Ptr FirstAdr
.Mov_EBX_DWORD_Ptr_EAX_Add &H1C
.Mov_EBX_DWORD_Ptr_EBX_Add &H28
.Mov_ECX_DWORD_Ptr_EBX_Add &HF9C
.Push 0
.Push 1
.Push_ESI
.Push 1
.Mov_EBX EcxGoToCall3
.Call_EBX
.Mov_EAX_DWORD_Ptr FirstAdr
.Mov_EBX_DWORD_Ptr_EAX_Add &H1C
.Mov_EBX_DWORD_Ptr_EBX_Add &H28
.Mov_EAX_DWORD_Ptr_EBX_Add &HF9C
.Mov_EAX_DWORD_Ptr_EAX_Add &H30
.Mov_EAX_DWORD_Ptr_EAX_Add &H4
.Mov_DWORD_Ptr_EAX_ADD &H20, Float2Int(DesX)
.Mov_DWORD_Ptr_EAX_ADD &H28, Float2Int(DesY)
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''自动寻路
Sub CallRunTO(DesX As Single, DesZ As Single, DesY As Single, DesMapID As Long)
Dim asm As New clsASM
With asm
.Pushad
.Mov_EAX_DWORD_Ptr FirstAdr
.Mov_EAX_DWORD_Ptr_EAX_Add &H1C
.Mov_EAX_DWORD_Ptr_EAX_Add &H8
.Mov_EAX_DWORD_Ptr_EAX_Add &H88
.Push_EAX
.Push DesMapID
.Mov_EAX Float2Int(DesX)
.Mov_DWORD_Ptr_EAX EcxRunToPush
.Mov_EAX Float2Int(DesZ)
.Mov_DWORD_Ptr_EAX EcxRunToPush + &H4
.Mov_EAX Float2Int(DesY)
.Mov_DWORD_Ptr_EAX EcxRunToPush + &H8
.Mov_EAX_DWORD_Ptr FirstAdr
.Mov_EAX_DWORD_Ptr_EAX_Add &H1C
.Mov_EAX_DWORD_Ptr_EAX_Add &H28
.Lea_EAX_DWORD_Ptr_EAX_Add &H3C
.Push EcxRunToPush
.Push_EAX
.Mov_ECX EcxRunToMov
.Mov_EBX EcxRunTo
.Call_EBX
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''打开NPC
Sub CallNPCOpen(NPCID As Long)
Dim asm As New clsASM
With asm
.Pushad
.Mov_EDX_DWORD_Ptr FirstAdr
.Push NPCID
.Mov_ECX_DWORD_Ptr_EDX_Add &H20
.Add_ECX &HD4
.Mov_EAX NPCOpenCall
.Call_EAX
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''关闭NPC
Sub CallNPCClose()
Dim asm As New clsASM
With asm
.Pushad
.Mov_EAX_DWORD_Ptr FirstAdr
.Mov_EAX_DWORD_Ptr_EAX_Add &H1C
.Mov_EAX_DWORD_Ptr_EAX_Add &H4
.Mov_EAX_DWORD_Ptr_EAX_Add &H8
.Mov_ECX_DWORD_Ptr_EAX_Add &H14
.Push NpcCPush
.Mov_EAX NpcCCall
.Call_EAX
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''购买物品
Sub CallBuy(WpID As Long, WpGZ As Long, WpSL As Long)
Dim asm As New clsASM
With asm
.Pushad
.Popad
.SUB_ESP &HC
.Mov_DWORD_Ptr_ESP WpID
.Mov_DWORD_Ptr_ESP_ADD &H4, WpGZ
.Mov_DWORD_Ptr_ESP_ADD &H8, WpSL
.Push_ESP
.Push 1
.Mov_EAX BuyCall
.Call_EAX
.Add_ESP &H8
.Add_ESP &HC
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''出售物品
Sub CallSell(WpID As Long, WpGZ As Long, WpSL As Long)
Dim asm As New clsASM
With asm
.Pushad
.Popad
.SUB_ESP &HC
.Mov_DWORD_Ptr_ESP WpID
.Mov_DWORD_Ptr_ESP_ADD &H4, WpGZ
.Mov_DWORD_Ptr_ESP_ADD &H8, WpSL
.Push_ESP
.Push 1
.Mov_EAX SellCall
.Call_EAX
.Add_ESP &H8
.Add_ESP &HC
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''打开仓库NPC
Sub CallHouseOpen()
Dim asm As New clsASM
With asm
.Pushad
.Push 0 '0仓库 1帮派仓库
.Push HouseOpenPush
.Mov_EAX HouseOpenCall
.Call_EAX
.Add_ESP &H8
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''仓库存物
Sub CallSaveItem(ItemNum As Long, BagGZ As Long, HouseGZ As Long)
Dim asm As New clsASM
With asm
.Pushad
.Push ItemNum
.Push BagGZ
.Push HouseGZ
.Mov_EAX SaveItemCall
.Call_EAX
.Add_ESP &HC '8
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''使用物品
Sub CallUseItem(UseItemID As Long, UseItemPos As Long)
Dim asm As New clsASM
With asm
.Pushad
.Mov_EDX UseItemID 'ID
.Mov_EAX UseItemPos '背包中位置
.Push 1
.Push_EDX
.Push_EAX
.Push 0
.Mov_ESI_DWORD_Ptr FirstAdr
.Mov_ESI_DWORD_Ptr_ESI_Add &H20
.Lea_ECX_DWORD_Ptr_ESI_Add &HD4
.Mov_EAX UseItemCall
.Call_EAX
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''死亡回城
Sub CallDeadBack()
Dim asm As New clsASM
With asm
.Pushad
.Mov_EAX DeadBackCall
.Call_EAX
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''接任务
Sub CallGetTask(DTid As Long, rwid As Long)
Dim asm As New clsASM
With asm
.Pushad
.Push DTid
.Push rwid
.Mov_ECX GTaskCall
.Call_ECX
.Add_ESP &H8
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
End Sub
''发包函数
Sub CallSendPack(PackString As String)
Dim PackCont() As Byte
Dim pAdr As Long
Dim Length As Long, i As Integer
Length = Len(PackString) / 2
ReDim PackCont(Length - 1)
For i = 1 To Length
PackCont(i - 1) = CByte("&H" & Mid(PackString, i * 2 - 1, 2))
Next i
ProcessID = OpenProcess(PROCESS_ALL_ACCESS Or PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, hProcId)
If ProcessID Then
pAdr = VirtualAllocEx(ProcessID, ByVal 0&, UBound(PackCont) + 1, 4096, 4)
WriteProcessMemory ProcessID, ByVal pAdr, PackCont(0), UBound(PackCont) + 1, ByVal 0&
Dim asm As New clsASM
With asm
.Pushad
.Mov_EAX_DWORD_Ptr FirstAdr
.Push UBound(PackCont) + 1
.Push pAdr
.Mov_ECX_DWORD_Ptr_EAX_Add &H20
.Mov_EDX SendPackCall
.Call_EDX
.Popad
.Ret
End With
asm.inJect hProcId
asm.Run_ASM hProcId, 0
asm.Free hProcId, 0
VirtualFreeEx ProcessID, pAdr, 0, &H8000
CloseHandle ProcessID
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -