OllyDbg笔记-修改Messagebox的标题
目录
基本概念
实例
基本概念
调试逆向分为动态分析和静态分析;
动态分析:使用调试工具加载程序并且运行,随着程序运行调试者可以随时中断目标指令流程。
静态分析:很多不方便的场合运行软件。
OD(OllyDbg):动态调试工具;
IDA Pro:静态调试工具
OD相关的快捷键:
F2 |
下断点,也就是指定断点的地址 |
F3 |
加载一个可执行程序,进行调试分析 |
F4 |
程序执行到光标处 |
F5 |
缩小、还原当前窗口 |
F7 |
单步步入 |
F8 |
单步步过 |
F9 |
直接运行程序,遇到断点处,程序暂停 |
Ctrl+F2 |
重新运行程序到起始处,一般用于重新调试程序 |
Ctrl+F9 |
执行到函数返回处,用于跳出函数实现 |
Alt+F9 |
执行到用户代码处,用于快速跳出系统函数 |
Ctrl+G |
输入十六进制地址,快速定位到该地址处 |
实例
这里不研究远程线程注入,在此直接把基址固定,
设置如下:
使用VS2012编写如下代码:
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;int WINAPI WinMain (HINSTANCE hinstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iCmdShow) {while(1){MessageBoxA(NULL, "World", "Hello", 0);}return 0;
}
这里先使用OD修改标题:
从这里可以看到,在汇编里面,一个函数的参数入栈,刚好是相反的。
原始运行截图如下:
这里直接进入0041CC7C地址就可以了。这里
修改为:
让他跑起来:
这个就是OD的基本做法,下面来写个程序去改!
这里有个知识点,就是有些进程页是只读的,不能修改,可以使用VirtualProtectEx这个函数改变其属性如下,把一个只读的改成可读可写的,但注意最后要改回来
DWORD dwPrev;if(!VirtualProtectEx(hProcess, (LPVOID)(offset - 0x1), 10, PAGE_EXECUTE_READWRITE, &dwPrev)){cout << "VirtualProtectEx failed " << GetLastError() << " " << dwPrev << endl;getchar();return 0;}....
....
....
....if(!VirtualProtectEx(hProcess, (LPVOID)(offset), DWORD(sizeof(title)), dwPrev, &dwPrev)){cout << "VirtualProtectEx failed 2" << GetLastError() << " " << dwPrev << endl;getchar();return 0;}
这样其标题就是空白的了
完整代码如下:
#include <iostream>
#include <windows.h>
#include <string>
#include <Psapi.h>
using namespace std;int main(int argc, int *argv[]){HWND hwnd = FindWindowA(nullptr, "Hello");if(!hwnd){getchar();return 0;}DWORD pid = 0;GetWindowThreadProcessId(hwnd, &pid); //获取进程标识if (pid == 0){cout << "GetWindowThreadProcessId failed" << endl;getchar();return 0;}HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, pid);if(hProcess == NULL){cout << "OpenProcess failed" << endl;getchar();return 0;}DWORD offset = 0x0041CC7C;BYTE value[5] = {0};DWORD dwSize;DWORD title = 0x0;//if(ReadProcessMemory(hProcess, (LPVOID)offset, &value, sizeof(value) / sizeof(value[0]), &dwSize) == 0){// cout << "modify failed" << endl;// cout << value << endl;//}//else{// cout << "read : " << value << endl;//}DWORD dwPrev;if(!VirtualProtectEx(hProcess, (LPVOID)(offset - 0x1), 10, PAGE_EXECUTE_READWRITE, &dwPrev)){cout << "VirtualProtectEx failed " << GetLastError() << " " << dwPrev << endl;getchar();return 0;}if(WriteProcessMemory(hProcess, (LPVOID)offset, &title, DWORD(sizeof(title)), nullptr) == 0){cout << "failed" << endl;cout << GetLastError() << endl;getchar();return 0;}else{cout << "Finished" << endl;cout << value << endl;}if(!VirtualProtectEx(hProcess, (LPVOID)(offset), DWORD(sizeof(title)), dwPrev, &dwPrev)){cout << "VirtualProtectEx failed 2" << GetLastError() << " " << dwPrev << endl;getchar();return 0;}CloseHandle(hProcess);getchar();return 0;
}
项目打包下载地址:
https://github.com/fengfanchen/CAndCPP/tree/master/HackMessageBox
OllyDbg笔记-修改Messagebox的标题相关推荐
- (Winform) 修改MessageBox 位置
(Winform) 修改MessageBox 位置 [DllImport("user32.dll")]static extern IntPtr FindWindow(IntPtr ...
- cadence 批量一次性修改title 页码标题等
1, 在Cadence中,选中dsn,菜单选择edit->browse->titleblock 弹出此框时,一般选择 Use instances 2,弹出的titleblock窗口中,鼠标 ...
- DiscuzX社区怎么修改论坛首页标题和后缀名教程
DiscuzX社区怎么修改论坛首页标题? 登录Discuz站长后台 选择全局菜单栏 点击SEO设置 找到论坛菜单(如下图) 将title标题修改为自己的名称即可 怎么修改.删除站点名称-后缀名? 登录 ...
- discuz 标题字数限制问题修改·最简单明了之方法---快速修改discuz发帖标题限制问题
discuz 标题字数限制问题修改·最简单明了之方法---快速修改discuz发帖标题限制问题 网上有很多百度经验之类发布的内容图片太多看起来很头疼,直接简单明了的方法如下纯文字,假如我需要修改为标题 ...
- 苹果cms如何修改分类的标题、关键字、描述等seo参数
修改苹果cms分类页标题.关键字.描述seo优化直接在苹果cms系统后台搞定,具体步骤也很简单. 1,来到系统后>>基础>>分类管理>>编辑 修改苹果cms分类页标 ...
- ruoyi修改图标及标题
修改图标及标题: 修改图标的文件位置: \ruoyi-ui\public\favicon.ico \ruoyi-ui\src\assets\logo\logo.png(侧边栏的图标) 修改标题的文件位 ...
- ionic4 修改公众号标题
setBrowsTitle(title) {//修改浏览器的标题var body = document.getElementsByTagName("body")[0];docume ...
- 修改ToolBar的标题、子标题字体大小和颜色,toolbar menu字体的大小和颜色以及注意事项
在 Android 5.0 开始推出一个 Material Design 风格的导航Toolbar 控件.由于Toolbar的可定制度高,所以已经逐步替代掉了ActionBar.可以自定义以下几种元素 ...
- word如何创建新的标题格式,以批量修改其它的标题
先选中要统一的标题, 点击开始栏中的 点创建样式 则可按选中的标题,按此格式,批量修改其它的标题
最新文章
- 收购Deis之后,微软首次动作发布了Draft
- 计算机jsp外文文献,计算机 JSP web 外文翻译 外文文献 英文文献
- android text字体居中显示,Android Canvas的drawText()和文字居中方案
- 第一周 01-复杂度2 Maximum Subsequence Sum
- Excel 如何根据单元格中的值设立不同的颜色(或渐变)?(222)
- HTML基本教程,及一些基本常用标签。
- [BUUCTF-pwn]——bjdctf_2020_babystack2
- Android获取状态栏和标题栏的高度
- LayaAir graphics 矢量绘图之 多边形、矩形
- 51中断实验与流水灯protues仿真
- JQuery UI Layout
- 尚学堂马士兵_Struts2下载完成
- 安装mysql中error nr.1045_win10系统安装mysql提示error Nr.1045如何解决
- 【经验分享】MAC系统自带截屏、录屏小工具
- WordPress实现评论显示IP归属地方法
- AMAZON SP API Feed
- java逻辑表达式的计算和优化
- 【阿里巴巴矢量图库搭建一个属于自己的字体图标库iconfont】
- Linux之Redis安装(解压版)
- oracle 查的数据去重复数据,Oracle查询和过滤重复数据