郁金香汇编逆向与外挂(63)
2015-05-17 15:11
134 查看
1、用程序控制扫雷程序的菜单。
工具:Visual Studio 2008
MFC控件:
控件程序:
初级
2、读取基址
MFC控件
文本框关联一个loog变量m_editBase
读取基址API函数:
ReadProcessMemory
BOOL WINAPI ReadProcessMemory(
__in HANDLE hProcess, //进程句柄
__in LPCVOID lpBaseAddress,
__out LPVOID lpBuffer,
__in SIZE_T nSize,
__out SIZE_T* lpNumberOfBytesRead
);
获取进程句柄:
OpenProcess
HANDLE WINAPI OpenProcess(
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in DWORD dwProcessId//进程ID
);
获取进程ID:
GetWindowThreadProcessId
DWORD GetWindowThreadProcessId(
HWND hWnd,//窗口句柄
LPDWORD lpdwProcessId
);
工具:Visual Studio 2008
MFC控件:
控件程序:
初级
void CtestcallBaseDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 HWND h = ::FindWindow(L"扫雷",NULL); if(h==0) { ::MessageBox(0,L"游戏未打开",0,MB_OK); return; } ::SendMessage(h,WM_COMMAND,0x209,0); }高级
void CtestcallBaseDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 HWND h = ::FindWindow(L"扫雷",NULL); if(h==0) { ::MessageBox(0,L"游戏未打开",0,MB_OK); return; } ::SendMessage(h,WM_COMMAND,0x20A,0); }
2、读取基址
MFC控件
文本框关联一个loog变量m_editBase
读取基址API函数:
ReadProcessMemory
BOOL WINAPI ReadProcessMemory(
__in HANDLE hProcess, //进程句柄
__in LPCVOID lpBaseAddress,
__out LPVOID lpBuffer,
__in SIZE_T nSize,
__out SIZE_T* lpNumberOfBytesRead
);
获取进程句柄:
OpenProcess
HANDLE WINAPI OpenProcess(
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in DWORD dwProcessId//进程ID
);
获取进程ID:
GetWindowThreadProcessId
DWORD GetWindowThreadProcessId(
HWND hWnd,//窗口句柄
LPDWORD lpdwProcessId
);
void CtestcallBaseDlg::OnBnClickedButton4() { // TODO: 在此添加控件通知处理程序代码 HWND h = ::FindWindow(L"扫雷",NULL); if(h==0) { ::MessageBox(0,L"游戏未打开",0,MB_OK); return; } //1005194 DWORD pid; GetWindowThreadProcessId(h,&pid); //PROCESS_ALL_ACCESS ///////////////////// OpenProcess生效函数: TOKEN_PRIVILEGES tkp; HANDLE hToken; OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken); LookupPrivilegeValue(NULL, SE_DEBUG_NAME,&tkp.Privileges[0].Luid); //获得本地机唯一的标识 tkp.PrivilegeCount = 1; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES) NULL, 0); //调整获得的权限 ////////////////////////////////////////// HANDLE hp=OpenProcess(PROCESS_ALL_ACCESS ,false,pid); if(hp==NULL) { ::MessageBox(0,L"打开进程出错",0,MB_OK); return; } ReadProcessMemory(hp,(LPCVOID)0x1005194 , &m_editBase,4,&pid); UpdateData(false); }
相关文章推荐
- 郁金香汇编逆向与外挂(60)
- 郁金香汇编逆向与外挂(61、62)
- 郁金香反汇编逆向与外挂(66)
- 郁金香反汇编逆向与外挂(67)
- 郁金香反汇编逆向与外挂(68)
- 郁金香反汇编逆向与外挂(71)
- 郁金香反汇编逆向与外挂(64、65)
- 郁金香2013网授汇编逆向与外挂 [ 91课,全 ]
- 游戏引擎逆向培训开篇第一节:反汇编学习C++总纲
- Android逆向分析基础-ARM 汇编语言基础
- 第6章 ARM 汇编基础与逆向 第一节
- 【逆向工具】IDA使用5-( string、图形化与视图的切换、图形化显示反汇编地址、自动注释、标签使用)
- 自制反汇编逆向分析工具 迭代第三版本
- 怎样对Cocoa程序编写逆向工程程序(外挂/补丁)
- 早些年用纯汇编写的一个自用的《征途》外挂(五)-- 贴完了
- 反汇编逆向实例_unoin语句反汇编
- 逆向知识第八讲,if语句在汇编中表达的方式
- 汇编-逆向
- 逆向知识十三讲,汇编中数组的表现形式,以及还原数组
- android逆向学习,笔记(四)ARM汇编基础