5.继续补充,常用操作指令:

Ctrl+G    Go to       移动到指定地址,用来查看代码或内存,运行时不可用

F4        Execute till Cursor 执行到光标位置,即直接转到要调试的地址

;         Comment     添加注释

User-defined comment  鼠标右键菜单Search for User-defined comment

:         Label       添加标签

User-defined label    鼠标右键惨淡Search for User-defined label

F2        Set/Reset BreakPoint 设置或取消断点(BP)

F9        运行(若设置了断点,则执行至断点处)

*         显示当前EIP(命令指针)位置

-         显示上一个光标的位置

Enter     若光标处有CALL/JMP等指令,则跟踪并显示相关地址(运行时不可用,简单查看函数内容时非常有用)

6.Basecamp 四种方式,直接到想去的位置。

(1)Goto(Ctrl+G),打开Enter expression to follow(输入跟踪表达式)对话框。

(2)设置断点,BP(Break Point,断点)(快捷键F2)。

程序在OD里加载起来的时候,直接F9跑起来,会自动卡到断点处的。

ALT+B 可以打开Breakpoints对话框,列出代码设置的断点。

(3)注释,快捷键 ; ,右键Search for-User defined comment 可以查看注释列表,可以进行跳转。

(4)标签,在制定地址添加特定名称。快捷键 : 类似上面Search for-User defined labels

6.快速查找制定代码的四种方法

目标查找main()中的MessageBox() API调用

(1)方法一,无脑执行所有,就是一步一步的看,肯定有一步是调用这个的。额,这个的话没啥好说的,只能说大多数时候,不采取窍门,这么弄会疯。耗时。

(2)定位字符串,这个比较常用。右键 查找所有文本字符串。

双击直接跳到调用地址,其实直接找到了MessageBox()

此时正要把HelloWorld这个字符串地址压入栈,当参数呢。下面紧接着就call这个函数了。

(3)API检索法-1:在调用代码中设置断点

右键菜单-Search for - All intermodular calls 看所有API调用,注意MessageBox是在user32里面的。

双击直接跳转到调用的位置。

(4)API检索法-1:在API代码中设置断点

右键 Search for - Name in all calls

对于了调用的各个dll中的导出函数(对压缩器和保护器处理过的可能看不到)

找到MessageBoxW双击

留意地址,其实这个已经和之前的程序不再一个范围内了,这个是Windows为了节省开销做处理之后的结果,很多系统dll,大家共同加载一个。如果需要特别的修改什么的会自动触发copy-on-write机制。双击MessageBoxW之后,跳到这个函数内存,然后F2下一个断点。

7.修改Hello World!字符串(两种方法)

直接修改字符串缓冲区(buffer)/在其他内存区域生成字符串并传递给消息函数

(1)直接修改字符串缓冲区

Ctrl+F2重新调试程序。

然后直接右键超找所有字符串,找到HelloWorld字符串,双击。看到地址

在内存区域Ctrl+G跳到这个地址(VA)

选上一个范围,然后Ctrl+E 修改字符串

然后F9跑起来,看到输出内容变了。注意此时只是改了内存。PE文件本身还没有改,如果重新执行的话内存会被重新加载成之前的。所以要把当前修改的内容同步到PE文件里面去。

继续,在地址区域右键 Copy to executable file

继续右键,保存可执行文件。A.exe.然后双击就好了。

(2)在其他内存区域新建字符串并传递给消息函数。

先跳到之前字符串的位置,看下:

发现有好多空的地方。在这里面直接开始存一段

然后把MessageBox调用Push参数的时候的那个地址直接改成自己的这个新地址上面的那个图的话就是01102148

然后F9跑起来,结果是下面这样。

但是这个地方目前没有办法直接右键保存修改,因为保存之后也执行不了,涉及到地址偏移问题。这个之后说。

同时对于方案1的话容易出现的问题就是你修改的字符串如果比之前的长,而同时之前字符串数据后面是紧跟着存东西的这种,就会破坏掉后面的数据。所以一定要小心。对于第二种方式,也不是所有位置都随便写内容的。这个后期细说。但要注意这个问题。

3.逆向分析Hello World!程序-下的更多相关文章

  1. 2.逆向分析Hello World!程序-上

    先写一个HelloWorld程序(vs2015 / C++) 编译链接生成可执行文件XX.exe,然后用OD[OllyDbg]打开调试: 代码窗口:默认用于显示反汇编代码,还用于各种注释.标签,分析代 ...

  2. cm2 逆向分析

    目录 cm2 逆向分析 前言 查壳 逆向分析 encrypt函数 POC代码 cm2 逆向分析 前言 这是逆向实战之CTF比赛篇的第3篇,在这里我就不再讲的特别小白了,有些简单操作可能会略过. 查壳 ...

  3. 逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

    0x00 前言 2017年5月12日全球爆发大规模蠕虫勒索软件WanaCrypt0r感染事件,各大厂商对该软件做了深入分析,但针对初学者的分析教程还比较少,复现过程需要解决的问题有很多,而且没有文章具 ...

  4. 路由器逆向分析------在QEMU MIPS虚拟机上运行MIPS程序(ssh方式)

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69652258 在QEMU MIPS虚拟机上运行MIPS程序--SSH方式 有关在u ...

  5. IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习

    相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...

  6. C++反汇编与逆向分析技术揭秘

    C++反汇编-继承和多重继承   学无止尽,积土成山,积水成渊-<C++反汇编与逆向分析技术揭秘> 读书笔记 一.单类继承 在父类中声明为私有的成员,子类对象无法直接访问,但是在子类对象的 ...

  7. TI(德州仪器) TMS320C674x逆向分析之一

    一.声明 作者并不懂嵌入式开发,整个逆向流程都是根据自身逆向经验,一步一步摸索出来,有什么错误请批评指正,或者有更好的方法请不吝赐教.个人写作水平有限,文中会尽量把过程写清楚,有问题或是写的不清楚的地 ...

  8. 一文了解安卓APP逆向分析与保护机制

    "知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物 ...

  9. Android逆向分析(2) APK的打包与安装背后的故事

    前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次先插入一下,正所谓知其然知其所以然,授之 ...

随机推荐

  1. Elasticsearch核心技术(一):Elasticsearch环境搭建

    磨刀不误砍柴工,要学习Elasticsearch,首先要搭建起来一套学习环境,本文为手把手教你在MacOS上面搭建Elasticsearch学习环境. 1.1 Elasticsearch安装 Elas ...

  2. Python——input与raw_input的区别

      区别一: raw_input():python2版本 input():python3版本 区别二: raw_input()不管是输数字还是字符串,结果都会以字符串的形式展现出来 input()则是 ...

  3. vue 页面生成图片保存

    需求:将页面中的元素转成图片,支持保存或下载.要求下载的图片包含页面背景,头像,用户名,文本为"我的邀请码"和个人二维码. 实现:将页面绘制到canvas中,生成base64图片链 ...

  4. Redis的常用淘汰策略以及算法实现

    一.Redis的内存配置 1,Redis配置内存为多少合适? 默认:如果不设置最大内存大小或者设置最大内存大小为0,在64为操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存. 极限情况: ...

  5. POJ_2387 Til the Cows Come Hom 【最短路】

    一.题目 POJ2387 二.分析 Bellman-Ford算法 该算法是求单源最短路的,核心思想就是不断去更新到起点的最短距离,更新的前提是没有负边.如果有负边需要手动控制循环次数. Dijkstr ...

  6. The 2018 ACM-ICPC CCPC NING XIA G-Factories

    题意:在一棵数的叶子上建k个工厂保证,求两两距离之和的最小值. 思路:如果一个一个叶子节点去考虑去与否太麻烦了,直接考虑该节点的子树上选取几个作为工厂,利用树形DP,dp[u][i]表示的是u节点为根 ...

  7. IDA报错fatal error before kernel init

    编写了一个IDA64插件,结果再打开IDA后报错fatal error before kernel init,然后闪退. 检查了一遍代码没发现有问题,后来发现是环境有一处配置错误, IDA64.exe ...

  8. 「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之自定义组件(四)

    基于Vue和Quasar的前端SPA项目实战之序列号(四) 回顾 通过上一篇文章 基于Vue和Quasar的前端SPA项目实战之布局菜单(三)的介绍,我们已经完成了布局菜单,本文主要介绍序列号功能的实 ...

  9. 【MCU】移植AT32库&FreeRTOS教程

    目录 前言 1. 移植AT库 1.1 移植内核相关文件 1.2 移植芯片型号相关文件 1.3 移植芯片外设驱动库 1.4 移植配置文件及中断回调函数文件 2. 移植FreeRTOS源码 2.1 获取 ...

  10. docker使用常见问题解决方案:错误号码2058,docker WARNING :IPv4,容器间的通讯

    1.错误号码2058 1,错误解决: 解决方法:docker下mysql容器 登录 mysql -u root -p 登录你的 mysql 数据库,然后 执行这条SQL: ALTER USER 'ro ...