首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

关于网络游戏外挂,VB调用Call解决思路

2012-01-23 
关于网络游戏外挂,VB调用CallSub CallAsmRun(x As Single, y As Single, z As Single, fly As Long) 走路

关于网络游戏外挂,VB调用Call
Sub CallAsmRun(x As Single, y As Single, z As Single, fly As Long) '走路
Dim asm As New clsASM
Const Address1 = &H45E2F0
Const Address2 = &H461D60
Const Address3 = &H45E6F0
With asm
  .Pushad '!PUSHAD
  .SUB_ESP &HC '!SUB ESP,&HC
  .Mov_EAX_DWORD_Ptr World2_Asm '!MOV EAX, DWORD PTR DS:[%W2i_Base]
  .Mov_EAX_DWORD_Ptr_EAX_Add &H1C '!MOV EAX, DWORD PTR DS:[EAX+&H1C]
  .Mov_ESI_DWORD_Ptr_EAX_Add &H20 '!MOV ESI, DWORD PTR DS:[EAX+&H20]
  .Mov_ECX_DWORD_Ptr_ESI_Add &HB74 '!MOV ECX, DWORD PTR DS:[ESI+&HB74]
  .Push 1 '!PUSH 1
  .Mov_EDX Address1 '!MOV EDX,&H45E9B0
  .Call_EDX '!CALL EDX
  .Mov_EDI_EAX '!MOV EDI, EAX
  .Mov_EAX Float2Int(x) '!MOV EAX,x
  .Mov_DWORD_Ptr_ESP_EAX '!MOV [ESP],EAX
  .Mov_EAX Float2Int(z) '!MOV EAX,z
  .Mov_DWORD_Ptr_ESP_ADD_EAX &H4 '!MOV [ESP+4],EAX
  .Mov_EAX Float2Int(y) '!MOV EAX,y
  .Mov_DWORD_Ptr_ESP_ADD_EAX &H8 '!MOV [ESP+8],EAX
  .Push_ESP '!PUSH ESP
  .Push fly '!PUSH fly
  .Mov_ECX_EDI '!MOV ECX, EDI
  .Mov_EDX Address2 '!MOV EDX,&H462410
  .Call_EDX '!CALL EDX
  .Push 0 '!PUSH 0
  .Push 1 '!PUSH 1
  .Push_EDI '!PUSH EDI
  .Mov_ECX_DWORD_Ptr_ESI_Add &HB74 '!MOV ECX, DWORD PTR DS:[ESI+&HB74]
  .Push 1 '!PUSH 1
  .Mov_EDX Address3 '!MOV EDX,&H45EDB0
  .Call_EDX '!CALL EDX
  .Mov_EAX_DWORD_Ptr World2_Asm '!MOV EAX, DWORD PTR DS:[%W2i_Base]
  .Mov_EAX_DWORD_Ptr_EAX_Add &H1C '!MOV EAX, DWORD PTR DS:[EAX+&H1C]

  .Mov_EBX_ESP '!MOV EBX,ESP
  .Mov_EAX_DWORD_Ptr_EBX '!MOV EAX, DWORD PTR [EBX]
  .Mov_DWORD_Ptr_ECX_ADD_EAX &H20 '!MOV [ECX+&H20], EAX
  .Mov_EAX_DWORD_Ptr_EBX_Add &H4 '!MOV EAX, DWORD PTR [EBX+4]
  .Mov_DWORD_Ptr_ECX_ADD_EAX &H24 '!MOV [ECX+&H24], EAX
  .Mov_EAX_DWORD_Ptr_EBX_Add &H8 '!MOV EAX, DWORD PTR [EBX+8]
  .Mov_DWORD_Ptr_ECX_ADD_EAX &H28 '!MOV [ECX+&H28], EAX
  .Add_ESP &HC '!ADD ESP,&HC
  .Popad '!POPAD
  .ret
End With
asm.inject hProcId
asm.Run_ASM hProcId, 0
asm.free hProcId, 0
End Sub 

上面是所谓vb调用call的代码
vb调用call就是调用游戏内部函数吗?
原理是什么哪?

[解决办法]
你完全没有概念。

这个牵涉到汇编、x86体系结构、操作系统、存储器管理等等。简单地说就是在内存里面写入一段可执行代码,然后让处理器执行。
[解决办法]
内嵌汇编的一种方法,必须有汇编原理知识和vb函数编译知识,知道vb源码编译后函数使用的栈、寄存器等规则。
[解决办法]
很明显这个程序虽然是用VB写的,但其实是用汇编写的。并且这个汇编类被封装了,就是这个call开头定义的clsASM,这个类里边把汇编指令都封装了,然后在这个call函数里就如同用汇编语言一样的写了这些程序。这些程序vb的程序员很难读懂,你最好还是问汇编的程序员吧。
[解决办法]
就是call函数

热点排行