2.逆向分析Hello World!程序-上
- 先写一个HelloWorld程序(vs2015 / C++)
- 编译链接生成可执行文件XX.exe,然后用OD[OllyDbg]打开调试:
代码窗口:默认用于显示反汇编代码,还用于各种注释、标签,分析代码时显示循环、跳转位置等信息
寄存器窗口:实时显示CPU寄存器的值,可用于修改特定的寄存器
数据窗口:以Hex/ASCII/Unicode值的形式显示进程的内存地址,也可在此修改内存地址
栈窗口:实时显示ESP寄存器指向的进程栈内存,并允许修改
- EP(EntryPoint,入口点)
EP是Windows可执行文件(EXE、DLL、SYS等)的代码入口点,是执行应用程序时最先执行的代码的起始位置,它依赖于CPU。用OD调试XX.exe刚开始默认跳转的位置就是EP处。
- 接下来是尝试找出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!程序-上的更多相关文章
- 3.逆向分析Hello World!程序-下
5.继续补充,常用操作指令: Ctrl+G Go to 移动到指定地址,用来查看代码或内存,运行时不可用 F4 Execute till Cursor 执行到光标位置, ...
- [工控安全]西门子S7-400 PLC固件逆向分析(一)
不算前言的前言:拖了这么久,才发现这个专题没有想象中的简单,学习的路径大致是Step7->S7comm->MC7 code->firmware,我会用尽量简短的语言把前两部分讲清楚, ...
- cm2 逆向分析
目录 cm2 逆向分析 前言 查壳 逆向分析 encrypt函数 POC代码 cm2 逆向分析 前言 这是逆向实战之CTF比赛篇的第3篇,在这里我就不再讲的特别小白了,有些简单操作可能会略过. 查壳 ...
- 路由器逆向分析------在QEMU MIPS虚拟机上运行MIPS程序(ssh方式)
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69652258 在QEMU MIPS虚拟机上运行MIPS程序--SSH方式 有关在u ...
- 逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序
0x00 前言 2017年5月12日全球爆发大规模蠕虫勒索软件WanaCrypt0r感染事件,各大厂商对该软件做了深入分析,但针对初学者的分析教程还比较少,复现过程需要解决的问题有很多,而且没有文章具 ...
- IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习
相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...
- C++反汇编与逆向分析技术揭秘
C++反汇编-继承和多重继承 学无止尽,积土成山,积水成渊-<C++反汇编与逆向分析技术揭秘> 读书笔记 一.单类继承 在父类中声明为私有的成员,子类对象无法直接访问,但是在子类对象的 ...
- 一文了解安卓APP逆向分析与保护机制
"知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物 ...
- Android逆向分析(2) APK的打包与安装背后的故事
前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次先插入一下,正所谓知其然知其所以然,授之 ...
随机推荐
- 痞子衡嵌入式:盘点国内车规级MCU厂商
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是国内车规级MCU厂商及其产品. 在汽车电子领域,MCU的应用非常广泛,大到车身控制与动力总成,小到雨刷车窗等控制单元,都离不开MCU的身 ...
- JS逆向-抠代码的第一天【手把手学会抠代码】
首先声明,本人经过无数次摸爬滚打及翻阅各类资料,理论知识极其丰富,但是抠代码怎么都抠不会. 无奈之下,只能承认:这个活,需要熟练度. 本文仅对部分参数进行解析,有需要调用,请自行根据现实情况调整. 第 ...
- linux 系统用户与用户组管理
关于/etc/passwd和/etc/shadow /etc/passwd 第1个字段为用户名(第一行中的root就是用户名)第2个字段存放的是该账号的口令.第3个字段为一个数字,这个数字代表的用户标 ...
- kettle 执行 kjb 临时文件夹 /tmp permission denied 问题
编写完的 kettle job (kjb文件) 放在服务器上执行的时候出现了奇怪的错误: # 执行 kjb ./kitchen.sh -file:/opt/code/ods/ods_inc.kjb # ...
- LuckyStar hctf2018
LuckyStar hctf2018 程序注册有TLS回调函数 char __stdcall TlsCallback_0(int a1, int a2, int a3) { char result; ...
- 一文搞懂如何实现 Go 超时控制
为什么需要超时控制? 请求时间过长,用户侧可能已经离开本页面了,服务端还在消耗资源处理,得到的结果没有意义 过长时间的服务端处理会占用过多资源,导致并发能力下降,甚至出现不可用事故 Go 超时控制必要 ...
- 配置Java环境变量时的一个常见错误
我们在把JDK路径配置为环境变量时,有一个常用的配置方法,就是把JDK根路径配置为"JAVA_HOME"值,然后在Path中添加一条"%JAVA_HOME%\bin&qu ...
- 如何开发一个APP——转自知乎
作者:简单点链接:https://www.zhihu.com/question/22999185/answer/155469014来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- [深搜]C. 【例题3】虫食算
C . [ 例 题 3 ] 虫 食 算 题目解析 正解 : Dfs + 剪枝 依题意,把样例以加法的形式展现出来. 根据加法的性质,可以得出有两种情况:有进位和没有进位的. 而从百位到最高位的结果,又 ...
- ubuntu20.04开机显示recovering journal死机的解决方法
事发突然,在今天开机的时候无法进入登陆界面,一直卡在黑屏界面,屏幕上只显示几行代码,且任何按键都无法起作用 /dev/sdb2:recovering journal /dev/sdb2:Clearin ...