武林外传点击选怪call

来源:互联网 发布:linux cst时间 编辑:程序博客网 时间:2024/05/16 22:17
#include "stdafx.h"  #include <atlstr.h>  #pragma data_seg(".Share")    HWND g_hMainWnd=NULL;//主窗口句柄;    HHOOK hhkHook=NULL; //鼠标钩子句柄;    HINSTANCE hInstDll=NULL;//本dll实例句柄;   DWORD g_dwHookPid=-1;//要HOOK的进程的PID  BOOL g_bIsFirstLoad=TRUE;//判断是否是第一次加载本dll  DWORD callTemp[6]={0,0,0,0,0,0<span style="color:#ff0000;">};//这个空间是全局的,不然的话点击选怪完毕后 会有别的代码来修改这里为0 所以会提示某个内存地址不可读取的错误 就是因为你的这个数组如果是局部的 随着注入结束 也结束 空间不存在//注意:点击选怪call ce搜到的存储怪物id的内存地址 查看修改此地址的代码 完后od转到此地址 ctrl+f9 看到的call基本就是点击选怪call 但是参数两个 一个是用来存储怪物id等信息的内存地址  一个就是存放着点击后怪物id等信息(但是这个地址处的数据一直在变动 只有当点击的时候 才会被别的call或什么地方 经过计算点击的鼠标位置和怪物的位置 最后算出点到的怪物的怪物id等信息 完后存放到临时的那个地址处 你ce查看哪里修改了这个地址的代码  会发现怎么也找不到 只能搜到一堆call 和一群混淆视线的mov之类的无用指令  如果要自动运行  就必须先知道要攻击的怪物的ID等信息  所以你找哪里把怪物id存放到那个地址里 不是白费功夫吗 ) 
 
#pragma data_seg()    #pragma comment(linker, "/section:.Share,rws")  BOOL APIENTRY DllMain( HMODULE hModule,                       DWORD  ul_reason_for_call,                       LPVOID lpReserved ){switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:{hInstDll=GetModuleHandle(0);//这行不能少  g_bIsFirstLoad = FALSE;  MessageBox(NULL,L"注入成功",L"信息",MB_ICONINFORMATION); callTemp[4] = 0x34;callTemp[5] = 0x80003214;//怪物idcallTemp[3] =(DWORD) &callTemp[5] ;__asm{ mov ecx,0x16C2B068;//用来存储怪物id等信息的内存地址 lea eax,callTemp; //必须lea 不能直接mov          push eax; mov edx,0x0046DE60;//鼠标点击 的选怪call 必须先传给edx 再call edx          call edx;    }break;}case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;}return TRUE;}

0 0
原创粉丝点击