[原创]武林外传纯挂机外挂下载(附源码,基址)不断更新!

管理员- 2008-03-27 23:02:01

<p><br/>第一次做外挂,也是最新的1.3.2版,目前可以正常使用,功能不是很强。只是简单的判断喝红喝蓝、自动打怪、自动拾物。因为完美屏蔽了后台按键。所以使用时需要把武林游戏窗口设为活动窗口。也许以后会更新为CALL后台按键吧。正在研究中。</p>
<p>附:武林外传挂部份基址及全部源码,呵呵,不是我小气不把全部基址给完。而是我也没找出:(。给喜欢做小挂的朋友使用及研究。有这方面爱好的朋友希望加QQ一起学习。</p>
<p><strong><font color="#0000ff" size="5">声明:<font size="2">使用外挂造成的封号请不要骂我喔,请三思后再使用。</font></font></strong></p>
<p>武林外传:游戏发布序号170&nbsp; 游戏版本号1.3.2</p>
<p>一级基址:0<font face="Verdana">933ADC</font></p>
<p>人物基址:+24</p>
<p><font face="Verdana">生命值基址+25C</font></p>
<p><font face="Verdana">生命最大值+274</font></p>
<p><font face="Verdana">真气值+260</font></p>
<p><font face="Verdana">真气最大值+278</font></p>
<p><font face="Verdana">人物名称+398</font></p>
<p><strong><font color="#0000ff" size="4">外挂下载地址及源码:</font></strong></p>
<p>&nbsp;</p>
<p><font color="#0000ff" size="6"><strong>下载地址→</strong></font><a href="/5l.rar">5l.rar</a></p>
<p>源码:</p>
<p>模块代码:</p>
<p><font face="Verdana">Option Explicit<br/>'---------------声明函数-----------------------<br/><br/>Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long<br/><br/>Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long<br/><br/>Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long<br/><br/>Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long<br/><br/>Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long<br/><br/>Public Declare Function ReadProcessMemory Lib "kernel32.dll" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByRef lpBuffer As Any, ByVal nSize As Long, ByRef lpNumberOfBytesWritten As Long) As Long<br/><br/>Public Const PROCESS_ALL_ACCESS = &amp;H1F0FFF<br/><br/>Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long<br/>Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long<br/>Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)</font></p>
<p><font face="Verdana"><br/>Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)</font></p>
<p><font face="Verdana">Public Const VK_F1 = &amp;H70<br/>Public Const VK_F2 = &amp;H71<br/>Public Const VK_TAB = &amp;H9<br/>Public Const VK_1 = &amp;H31<br/>Public Const VK_2 = &amp;H32<br/>Public Const VK_3 = &amp;H33<br/></font></p>
<p>窗体代码:</p>
<p><font face="Verdana">Dim hwd As Long<br/>Dim pid As Long<br/>Dim hProcess As Long '存放进程句柄<br/>Dim base As Long&nbsp;&nbsp;&nbsp; '存放人物基地址<br/>Dim hp As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '存储生命值<br/>Dim hpmax As Long&nbsp;&nbsp; '存储生命最大值<br/>Dim mp As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '存储真气值<br/>Dim mpmax As Long&nbsp;&nbsp; '存储真气最大值<br/>Dim gw As Long&nbsp;&nbsp;&nbsp; '存放怪物基地址</font></p>
<p><font face="Verdana">Private Sub Command1_Click()<br/>If Command1.Caption = "开始" Then&nbsp;&nbsp; '按下标签为“开始”的按钮,激活TimerAdd并改变标签为“停止”<br/>&nbsp;&nbsp;&nbsp; TimerAdd.Enabled = True<br/>&nbsp;&nbsp;&nbsp; Timer1.Enabled = True<br/>&nbsp;&nbsp;&nbsp; Command1.Caption = "停止"<br/>ElseIf Command1.Caption = "停止" Then&nbsp;&nbsp; '刚好和上面相反<br/>&nbsp;&nbsp;&nbsp; TimerAdd.Enabled = False<br/>&nbsp;&nbsp;&nbsp; Timer1.Enabled = False<br/>&nbsp;&nbsp;&nbsp; Command1.Caption = "开始"<br/>End If<br/>End Sub</font></p>
<p><font face="Verdana">Private Sub Form_Load()<br/>hwd = FindWindow("QElementClient Window", "Element Client")<br/>If hwd = 0 Then<br/>&nbsp;&nbsp;&nbsp; MsgBox "未启动游戏", vbOKOnly, "提示"<br/>&nbsp;&nbsp;&nbsp; Unload Form1<br/>End If<br/>GetWindowThreadProcessId hwd, pid&nbsp;&nbsp; '获取进程标识符<br/>'将进程标识符做为参数,返回目标进程PID的句柄,得到此句柄后<br/>'即可对目标进行读写操,PROCESS_ALL_ACCESS表示完全控制,权限最大<br/>hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, pid)<br/>If hProcess = 0 Then<br/>&nbsp;&nbsp;&nbsp; MsgBox "不能打开进程", vbOKOnly, "提示"<br/>&nbsp;&nbsp;&nbsp; Unload Form1<br/>End If<br/>CloseHandle hProcess<br/>End Sub</font></p>
<p><font face="Verdana">Private Sub Frame2_DragDrop(Source As Control, X As Single, Y As Single)</font></p>
<p><font face="Verdana">End Sub</font></p>
<p><font face="Verdana">Private Sub Timer1_Timer()</font></p>
<p><font face="Verdana">If gw = 0 Then<br/>&nbsp;keybd_event VK_TAB, 0, 0, 0&nbsp;&nbsp;&nbsp; '按下taB键<br/>keybd_event VK_TAB, 0, 2, 0&nbsp;&nbsp; '按下taB键<br/>&nbsp;Sleep 500<br/>keybd_event VK_1, 0, 0, 0&nbsp;&nbsp;&nbsp; '按下1键<br/>keybd_event VK_1, 0, 2, 0&nbsp;&nbsp;&nbsp; '按下1键<br/>Sleep 500</font></p>
<p><font face="Verdana">keybd_event VK_3, 0, 0, 0&nbsp;&nbsp;&nbsp; '按下3键<br/>keybd_event VK_3, 0, 2, 0&nbsp;&nbsp;&nbsp; '按下3键<br/>&nbsp;Sleep 500<br/>End If</font></p>
<p><font face="Verdana">If gw &lt;&gt; 0 Then<br/>keybd_event VK_1, 0, 0, 0&nbsp;&nbsp;&nbsp; '按下1键<br/>keybd_event VK_1, 0, 2, 0&nbsp;&nbsp;&nbsp; '按下1键<br/>&nbsp;Sleep 500<br/>&nbsp; If Check1.Value = 1 Then '是否使用技能<br/>&nbsp;keybd_event VK_2, 0, 0, 0&nbsp;&nbsp;&nbsp; '按下3键<br/>keybd_event VK_2, 0, 2, 0&nbsp;&nbsp;&nbsp; '按下3键<br/>&nbsp;Sleep 500<br/>&nbsp;End If<br/>End If</font></p>
<p><font face="Verdana">End Sub</font></p>
<p><font face="Verdana">Private Sub TimerAdd_Timer()&nbsp;&nbsp;&nbsp; '加血判断时钟</font></p>
<p><font face="Verdana">If Val(Text1.Text) &gt; hp Then&nbsp;&nbsp;&nbsp;&nbsp; '比较当前血量是否比预定值低,是则按下F1健<br/>keybd_event VK_F1, 0, 0, 0&nbsp;&nbsp;&nbsp; '按下F1键<br/>keybd_event VK_F1, 0, 2, 0&nbsp;&nbsp;&nbsp; '释放F1键</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; Sleep Val(Text2.Text)&nbsp;&nbsp;&nbsp; '延迟text2中的数值<br/>End If<br/>If Val(Text3.Text) &gt; mp Then&nbsp;&nbsp;&nbsp;&nbsp; '比较当前血量是否比预定值低,是则按下F1健<br/>keybd_event VK_F2, 0, 0, 0&nbsp;&nbsp;&nbsp; '按下F21键<br/>keybd_event VK_F2, 0, 2, 0&nbsp;&nbsp;&nbsp; '释放F21键</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; Sleep Val(Text4.Text)&nbsp;&nbsp;&nbsp; '延迟text2中的数值<br/>End If<br/>End Sub</font></p>
<p><font face="Verdana">Private Sub TimerList_Timer() '显示人物信息时钟<br/>Dim name(31) As Byte&nbsp;&nbsp;&nbsp; '存储人物名称<br/>Dim name_temp As Long</font></p>
<p><font face="Verdana">hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)<br/>If hProcess Then<br/>&nbsp;&nbsp;&nbsp; ReadProcessMemory hProcess, ByVal &amp;H933ADC, base, 4, 0&amp;</font></p>
<p><font face="Verdana"><br/>&nbsp;&nbsp;&nbsp; ReadProcessMemory hProcess, ByVal base + &amp;H24, base, 4, 0&amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '得到为人物基地址,方便以后使用<br/>&nbsp;&nbsp;&nbsp; ReadProcessMemory hProcess, ByVal base + &amp;H25C, hp, 4, 0&amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '得到生命值<br/>&nbsp;&nbsp;&nbsp; ReadProcessMemory hProcess, ByVal base + &amp;H274, hpmax, 4, 0&amp;&nbsp;&nbsp;&nbsp; '得到生命最大值<br/>&nbsp;&nbsp;&nbsp; ReadProcessMemory hProcess, ByVal base + &amp;H260, mp, 4, 0&amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '得到真气值<br/>&nbsp;&nbsp;&nbsp; ReadProcessMemory hProcess, ByVal base + &amp;H278, mpmax, 4, 0&amp;&nbsp;&nbsp;&nbsp; '得到真气最大值<br/>&nbsp;&nbsp;&nbsp; ReadProcessMemory hProcess, ByVal base + &amp;H398, name_temp, 4, 0&amp;<br/>&nbsp;&nbsp;&nbsp; ReadProcessMemory hProcess, ByVal name_temp, name(0), 32, 0&amp;&nbsp;&nbsp;&nbsp; '得到人物名称<br/>&nbsp;&nbsp;&nbsp; ReadProcessMemory hProcess, ByVal base + &amp;H7D4, gw, 4, 0&amp;&nbsp;&nbsp;&nbsp; 'GW<br/>&nbsp;&nbsp;&nbsp; CloseHandle hProcess<br/>End If<br/>Frame1.Caption = name&nbsp;&nbsp; '显示人物名称<br/>Label2.Caption = "生命值:" &amp; hp &amp; "/" &amp; hpmax&nbsp; '显示生命值<br/>Label3.Caption = "真气值:" &amp; mp &amp; "/" &amp; mpmax&nbsp; '显示真气值<br/>Label11.Caption = gw<br/>End Sub<br/></font></p>
<p>&nbsp;</p>
[此贴子已经被作者于2008-4-11 1:25:53编辑过]