目录

基本概念

实例


基本概念

调试逆向分为动态分析和静态分析;

动态分析:使用调试工具加载程序并且运行,随着程序运行调试者可以随时中断目标指令流程。

静态分析:很多不方便的场合运行软件。

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的标题相关推荐

  1. (Winform) 修改MessageBox 位置

    (Winform) 修改MessageBox 位置 [DllImport("user32.dll")]static extern IntPtr FindWindow(IntPtr ...

  2. cadence 批量一次性修改title 页码标题等

    1, 在Cadence中,选中dsn,菜单选择edit->browse->titleblock 弹出此框时,一般选择 Use instances 2,弹出的titleblock窗口中,鼠标 ...

  3. DiscuzX社区怎么修改论坛首页标题和后缀名教程

    DiscuzX社区怎么修改论坛首页标题? 登录Discuz站长后台 选择全局菜单栏 点击SEO设置 找到论坛菜单(如下图) 将title标题修改为自己的名称即可 怎么修改.删除站点名称-后缀名? 登录 ...

  4. discuz 标题字数限制问题修改·最简单明了之方法---快速修改discuz发帖标题限制问题

    discuz 标题字数限制问题修改·最简单明了之方法---快速修改discuz发帖标题限制问题 网上有很多百度经验之类发布的内容图片太多看起来很头疼,直接简单明了的方法如下纯文字,假如我需要修改为标题 ...

  5. 苹果cms如何修改分类的标题、关键字、描述等seo参数

    修改苹果cms分类页标题.关键字.描述seo优化直接在苹果cms系统后台搞定,具体步骤也很简单. 1,来到系统后>>基础>>分类管理>>编辑 修改苹果cms分类页标 ...

  6. ruoyi修改图标及标题

    修改图标及标题: 修改图标的文件位置: \ruoyi-ui\public\favicon.ico \ruoyi-ui\src\assets\logo\logo.png(侧边栏的图标) 修改标题的文件位 ...

  7. ionic4 修改公众号标题

    setBrowsTitle(title) {//修改浏览器的标题var body = document.getElementsByTagName("body")[0];docume ...

  8. 修改ToolBar的标题、子标题字体大小和颜色,toolbar menu字体的大小和颜色以及注意事项

    在 Android 5.0 开始推出一个 Material Design 风格的导航Toolbar 控件.由于Toolbar的可定制度高,所以已经逐步替代掉了ActionBar.可以自定义以下几种元素 ...

  9. word如何创建新的标题格式,以批量修改其它的标题

    先选中要统一的标题, 点击开始栏中的 点创建样式 则可按选中的标题,按此格式,批量修改其它的标题

最新文章

  1. 收购Deis之后,微软首次动作发布了Draft
  2. 计算机jsp外文文献,计算机 JSP web 外文翻译 外文文献 英文文献
  3. android text字体居中显示,Android Canvas的drawText()和文字居中方案
  4. 第一周 01-复杂度2 Maximum Subsequence Sum
  5. Excel 如何根据单元格中的值设立不同的颜色(或渐变)?(222)
  6. HTML基本教程,及一些基本常用标签。
  7. [BUUCTF-pwn]——bjdctf_2020_babystack2
  8. Android获取状态栏和标题栏的高度
  9. LayaAir graphics 矢量绘图之 多边形、矩形
  10. 51中断实验与流水灯protues仿真
  11. JQuery UI Layout
  12. 尚学堂马士兵_Struts2下载完成
  13. 安装mysql中error nr.1045_win10系统安装mysql提示error Nr.1045如何解决
  14. 【经验分享】MAC系统自带截屏、录屏小工具
  15. WordPress实现评论显示IP归属地方法
  16. AMAZON SP API Feed
  17. java逻辑表达式的计算和优化
  18. 【阿里巴巴矢量图库搭建一个属于自己的字体图标库iconfont】
  19. Linux之Redis安装(解压版)
  20. oracle 查的数据去重复数据,Oracle查询和过滤重复数据

热门文章

  1. 创业者怎样掌握简便的创业机会
  2. 好的PHP库离不开一个好的命名空间
  3. 可是笑声太响了的64391111
  4. 学习使用的编程及调试技巧
  5. p2psearcher2013其中
  6. 再讨论下古老的include
  7. 为程序员而骄傲的飞鸽传书
  8. 写给自己看的HTML、CSS、XHTML指南 八
  9. 因为我们还很穷,所以世界杯氛围差
  10. css如何让不确定宽度的div水平居中