1. 先写一个HelloWorld程序(vs2015 / C++)

  1. 编译链接生成可执行文件XX.exe,然后用OD[OllyDbg]打开调试:

代码窗口:默认用于显示反汇编代码,还用于各种注释、标签,分析代码时显示循环、跳转位置等信息

寄存器窗口:实时显示CPU寄存器的值,可用于修改特定的寄存器

数据窗口:以Hex/ASCII/Unicode值的形式显示进程的内存地址,也可在此修改内存地址

栈窗口:实时显示ESP寄存器指向的进程栈内存,并允许修改

  1. EP(EntryPoint,入口点)

EP是Windows可执行文件(EXE、DLL、SYS等)的代码入口点,是执行应用程序时最先执行的代码的起始位置,它依赖于CPU。用OD调试XX.exe刚开始默认跳转的位置就是EP处。

  1. 接下来是尝试找出main()函数中的MessageBox()函数的代码。

先补充几个快捷键:
    Ctrl+F2  重新开始调试(终止正在调试的进城后再次运行)

F7      单步步入,可以进入到函数里

F8      单步步过,不进入任何函数,往下走一条指令

Ctrl+F9  一直执行,知道遇到RETN指令,跳出函数

加载exe到od里,直接来到EP处,然后就是一路F7/F8[这个是刚开始,后期有经验了就不会这么无脑的从头开始找了]call,是函数调用,遇到call想进函数里看看就F7想路过就F8然后是找到这么一个地方(注意你的地址和我的地址可能不同)

我的PE文件代码段FOA(400)->RVA(1000)->VA(1341000)这个计算方式以后说。

然后就F7进去看看:

红色注释部分就是我们要找的函数。而且在call之前各种把参数push进去,还有就是看到了字符串地址在013420F8处,从栈和内存里也能清楚的看到:

同时现在考虑下,这个调用MessageBox函数的函数不就是main函数吗?执行到这个函数的return处,在F8返回上一层:

回来后就准备开始执行add了,那么上面那个call NXYod.00341000就是main函数地址码。这个其实是可以算出来的。还是根据FOA->RVA->VA 最后那个RVA->VA在OD里可以直接Ctrl+G输入RVA他会自动跳转到VA处,比如我的FOA是400,我算出来RVA是1000(我自己写了个计算工具),然后我在OD里直接Ctrl+G

OK之后直接跳转到:

这直接就是main函数了。

2.逆向分析Hello World!程序-上相关推荐

  1. IDA、X32dbg逆向分析易语言程序窗口标题、宽度、高度

    分析背景 源于对某软件的广告删除分析,发现其为易语言程序,特此写一篇关于易语言程序的分析思路,而此篇所讲述的为修改易语言编译后程序的标题.宽度和高度.(大佬勿喷,自己分析的思路记录) 环境准备 我们首 ...

  2. 二进制逆向工程师_利用Ghidra逆向分析Go二进制程序(下篇)

    (接上文) 动态分配字符串结构 在第一种情况下,字符串结构是在运行时创建的,为此,需要使用一系列汇编指令在字符串操作之前设置相应的结构.由于指令集的不同,不同的架构之间的结构也是不同的.让我们通过几个 ...

  3. 3.逆向分析Hello World!程序-下

    5.继续补充,常用操作指令: Ctrl+G    Go to       移动到指定地址,用来查看代码或内存,运行时不可用 F4        Execute till Cursor 执行到光标位置, ...

  4. asp.net webform 复制窗体代码_逆向分析流氓软件自我复制以及防御思路

    一.前言 好长时间没有投稿了,之前被发布的稿件,也收到了Freebuf的现金奖励,同时陆陆续续收到好多圈类人士的夸奖,备受鼓舞,觉得自己应该坚持投稿,为安全事业略尽绵薄之力!最近任务不重,正好有时间投 ...

  5. CRC原理及其逆向分析方法

    CRC原理及其逆向破解方法: 介绍: 这篇短文包含CRC原理介绍和其逆向分析方法,很多程序员和破解者不是很清楚了解 CRC的工作原理,而且几乎没人知道如何逆向分析它的方法,事实上它是非常有用的. 首先 ...

  6. 逆向分析入门实战(三)

    本文由作者首发于合天智汇:http://www.heetian.com/info/840 之前两篇文章,针对恶意代码为了确保自身只有一个实例在运行进行了正向开发和逆向分析.逆向入门分析实战(一).逆向 ...

  7. AES加密算法逆向分析

    AESEnc逆向分析 1. 观察程序执行流程 打开程序提示输入Flag,随意键入1个值之后程序输出"You really don't know!!!",即Flag错误.已知该程序是 ...

  8. (47)逆向分析 KiSystemService 函数填充 _KTRAP_FRAME 部分

    一.回顾 之前的课程,我们学习了API系统调用在3环部分做的事情,有两种方式进0环,分别是中断门和快速调用,分别调用两个不同的函数 KiSystemService 和 KiFastCallEntry. ...

  9. 拿走不谢!固件逆向分析过程中的工具和技巧(上)

    将固件逆向分析,然后再将逆向分析后的内容转换为有用的东西,这个过程对于所有人来说都是一个耗时又耗力的过程.有时即使文件出现在你面前,你也无能为力,比如你可能会面临专有(几乎没有文档记录)的文件格式.奇 ...

最新文章

  1. 【硬件基础】制作直流电源
  2. 微信8.0内测更新!!!(附内测体验资格)
  3. odbc 函数序列错误_python时间序列:移动窗口函数前篇
  4. mft按钮设计_奥林巴斯M4/3系统新品激情再燃 以轻量化设计铸就微单极致体验
  5. 【深度学习】查准率、召回率、AP、mAP
  6. 百度超级链XChain(3)平台特点
  7. Nginx中gzip_static使用测试
  8. 学习响应式BootStrap来写融职教育网站,Bootsrtap第三天nav布局
  9. 静茹docker容器的几种方法_1-容器和docker基础知识
  10. opengl实现经纹理映射的旋转立方体_《图形编程技术学习》(五十三)环境映射...
  11. redis和memcache的对比
  12. Java进击C#——语法之多线程
  13. mysql Split函数
  14. centos7 yum安装mysql后启动不起来问题
  15. 1.3使用command-line runners
  16. Android实战开发--三种地图类型的设计
  17. python2.7读取txt文件_python如何读取txt文件
  18. Unity---商店搭建
  19. “伽利略”卫星定位系统
  20. oracle基础|什么是数据库操作语言|什么是DDL、DML、DCL

热门文章

  1. 面试题:四种Java线程池用法解析 !=!=未看
  2. java json转换
  3. 中国人工智能学会通讯——机器人组件技术在智能制造系统中的应用
  4. Linux服务器内核参数优化
  5. .net Forms身份验证不能用在应用的分布式部署中吗?
  6. Tools.Png.Compression
  7. ESB与可插拨系统的思考
  8. 黑马lavarel教程---12、lavarel验证码
  9. ubuntu16.04上安装valgrind
  10. Java NIO系列教程(五)Buffer