免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 软件破解 > 浅谈魔兽争霸 DotA外挂制作(10)

浅谈魔兽争霸 DotA外挂制作(10)

时间:2011-11-08 13:29来源:未知 整理:寂涯网络 点击:


;添加AddNative Hook的过程

AddNativeHooks proc
 push_offset_RLC T("(Hunit;R)V")
 lea edx, RLC(T("SetUnitX"))
 lea ecx, RLC(JNSetUnitXHook)
 GameCall PAddNative
 push_offset_RLC T("(IRR)Hitem;")
 lea edx, RLC(T("CreateItem"))
 lea ecx, RLC(JNCreateItemHook)
 GameCall PAddNative
 ret
AddNativeHooks endp
;异常处理函数,处理DRx产生的异常
BreakpointHandler proc uses esi ebx pExceptionRecord:DWORD, pFrame:DWORD,
pContext:DWORD, pDispatcherContext:DWORD
 GetBase
 mov esi, pExceptionRecord
 mov eax, (EXCEPTION_RECORD ptr [esi]).ExceptionCode
 .if eax != EXCEPTION_SINGLE_STEP

  mov eax, ExceptionContinueSearch
  ret
 .endif
 mov eax, (EXCEPTION_RECORD ptr [esi]).ExceptionAddress
 sub eax, RLC(hGameDll)
 add eax, GameOriginalBase
 mov edx, pContext
 .if eax == PInitNatives

 lea eax, RLC(PInitNativesHook)
  mov (CONTEXT ptr [edx]).regEip, eax
 .elseif eax == JNCreateUnit
  lea eax, RLC(JNCreateUnitHook)
  mov (CONTEXT ptr [edx]).regEip, eax
 .endif
xor eax, eax
 ret
BreakpointHandler endp
END START
6.Loader
;这个很简单了,就不做注释了
.386
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
include kernel32.inc

include masm32.inc
includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
include macro.asm
GetProcessIdByName proto :DWORD
.data
 bCode db 0C00h dup(0) ;为上文的代码预留的空间,编译后通过别的程序写入
 bCodeEnd dd 0
.data?
 buffer db MAX_PATH dup(?)
  hProc dd ?
  dwPid dd ?
 pMem dd ?
.CODE
START:
 invoke GetModuleHandle, offset CTEXT("ntdll.dll")
 invoke GetProcAddress, eax, offset CTEXT("RtlAdjustPrivilege")  
 push offset buffer ; old enable
 push 0 ; current thread ?
 push 1 ; enable ?
push 14h ; 14h = SE_DEBUG_PRIVILEGE
 call eax
 .while 1
  invoke GetProcessIdByName, offset CTEXT("war3.exe")

  .break .if eax
   invoke Sleep, 500
 .endw
 mov esi, eax
  invoke OpenProcess, PROCESS_CREATE_THREAD OR PROCESS_VM_OPERATION OR
PROCESS_VM_WRITE, NULL, esi
 mov hProc, eax
  invoke VirtualAllocEx, eax, NULL, 1000h, MEM_COMMIT,
PAGE_EXECUTE_READWRITE
  mov pMem, eax
  invoke WriteProcessMemory, hProc, pMem, offset bCode, offset bCodeEnd -
offset bCode, offset buffer
 invoke GetModuleHandle, CTEXT("kernel32.dll")
 invoke GetProcAddress, eax, CTEXT("GetProcAddress")
  invoke CreateRemoteThread,  hProc, NULL, NULL,  pMem, eax, NULL, offset
buffer
  invoke MessageBox, 0, offset CTEXT("Loaded!"), offset CTEXT("Proton's Dota
Cheater"), MB_ICONINFORMATION
 invoke ExitProcess,0

GetProcessIdByName proc uses esi ebx lpProcessName:DWORD
LOCAL pe:PROCESSENTRY32
 invoke CreateToolhelp32Snapshot, TH32CS_SNAPPROCESS, NULL
 mov esi, eax
 mov eax, sizeof PROCESSENTRY32
 mov pe.dwSize, eax
 lea ebx, pe
 invoke Process32First, esi, ebx
 assume ebx: ptr PROCESSENTRY32
 .while TRUE
  invoke Process32Next, esi, ebx
  .break .if eax == 0
   invoke CompareString, LOCALE_USER_DEFAULT, NORM_IGNORECASE,
lpProcessName,
-1, addr [ebx].szExeFile, -1
  .if eax == 2
   mov eax, [ebx].th32ProcessID
   ret
  .endif

 .endw
 xor eax, eax
 ret
 assume ebx: nothing
GetProcessIdByName endp
end START

实际使用
 
在 Windows 7(6.1.7600)、魔兽争霸1.24e、浩方电竞平台5.6.0.311上测试成功,并
且在多次使用后账号积分没有变Lv-10。

弱点
 
尽管写的很隐蔽,但是弱点不是一点没有。首先就是DRx寄存器的使用,这东西是亮点也是
最大的硬伤——除了壳、调试器和一些邪恶的程序就没再有什么东西使用这个了。

本页地址 http://www.jybase.net/ruanjianpojie/20111109592.html

百度搜索更多

谷歌搜索更多

顶一下
(4)
100%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com