chapter1:逆向工程之学习——静态分析
前言
学习web安全也有2年了,最近想攻克一些CTF里面的逆向题目。所以开始着手学习逆向工程。在这里记录一下学习历程。对了我用的书是《有趣的二进制》,虚拟机是52Pojie专用虚拟机。
逆向工程之静态分析
- 前言
- 什么是静态分析
- 有哪些方法
- 有哪些好用的工具
- 第一次的逆向尝试(静态分析)
- 该程序的C代码
什么是静态分析
一句话简述就是:在不运行目标程序的情况下进行分析!
那么分析什么呢?分析程序的意图,在没有拿到编译后代码的前提下!
有哪些方法
1.阅读反汇编代码
Q:为什么是反汇编代码?汇编代码就不会读了吗?
A:因为逆向工程的目的是搞清楚程序的主要逻辑,如果能通过反汇编工具来读得话会轻松很多!告诉你个秘密不懂汇编代码也可以进行逆向!但是想走的更远,还是得懂一些基本的二进制代码。
2.提取可执行文件中的字符串,分析使用了哪些单词
因为一些反汇编代码中会出现一些常见的英文单词,比如:document,我们就知道这个可能与文件有关。或许直接给出了一个目录:C:/system/…,我们就知道这个程序和这个地址的有关系。
例如下图:我们通过二进制代码查看器(Winhex),也可以看出一些端倪!
有哪些好用的工具
1、Winhex
直接观察二进制代码。如上图。
2、IDA(静态分析的神奇)
关于IDA的页面做下说明:
IDA包含两种页面模式:Text View &Graph view
按F12可以通过Text View 进入 Graph View。
其实我们发现了,通过Graph view 可以很好的挖掘这段汇编代码的逻辑。<就是一个判断,满足条件走左边,否则走右边>。
第一次的逆向尝试(静态分析)
我们试一下在打开该exe文件,并且输入 2012,看看能否触发Hello 201。
为什么这么做呢?这就是我们上面进行静态分析的结果,从Graph View推测的结论。
可以发现:我们在输入
wsample01a.exe 2012
wasmple01a.exe 2013
wasmple01a.exe
结果为:
Hello 2012。后两种结果为Hello Windows。
我们下结论。根据传如的参数指可以左右这个程序的输出。
至此,我们完成了一次逆向工程。
因为我们在没有看源代码(C/C++)代码的前提下,搞懂了程序的意义。
这就是逆向工程!!!
该程序的C代码
#include <Windows.h>
#include <tchar.h>int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{if(lstrcmp(lpCmdLine, _T("2012")) == 0){MessageBox(GetActiveWindow(), _T("Hello! 2012"), _T("MESSAGE"), MB_OK);}else{MessageBox(GetActiveWindow(), _T("Hello! Windows"), _T("MESSAGE"), MB_OK);} return 0;
}
chapter1:逆向工程之学习——静态分析相关推荐
- Android逆向学习---静态分析反调试apk
分析环境:JEB2.2.7+IDA7.0 测试手机:nexus IDA7.0下载链接 链接:https://pan.baidu.com/s/1xEtjnTVZFuLiMpHKwMOY2Q 密码:g3 ...
- 逆向工程---Mybatis学习笔记(十二)
使用官方网站的mapper自动生成工具mybatis-generator-core-1.3.2来生成po类和mapper映射文件. 第一步:mapper生成配置文件: 在generatorConfig ...
- 游戏安全初学者学习资料
逆向工程初学者学习资料 以下是根据个人推荐的学习资料编制的列表,以帮助人们学习如何对视频游戏进行逆向工程. 我希望它能帮助其他人花更多的时间学习,减少搜索的时间. 此处收集的大部分资源将侧重于在 Mi ...
- 静态分析 第一课 静态分析介绍
静态分析 第一课 静态分析介绍 本人是北邮19级学生,最近需要使用soot进行java静态分析,但是没有任何静态分析的基础,在北邮人论坛里学长给我推荐了B站南京大学的一个软件分析的网课,感触颇深 这是 ...
- 神操作:教你用Python识别恶意软件
导读:本文将利用静态分析技术揭示这些恶意软件的功能. 作者:约书亚·萨克斯(Joshua Saxe).希拉里·桑德斯(Hillary Sanders) 来源:大数据DT(ID:hzdashuju) 在 ...
- 教你用Python制作一款自己的杀毒程序
在本文中,我们将介绍恶意软件静态分析的基础知识.静态分析是对程序文件的反汇编代码.图形图像.可打印字符串和其他磁盘资源进行分析,是一种不需要实际运行程序的逆向工程.虽然静态分析技术有欠缺之处,但是它可 ...
- 如何开始你的CTF比赛之旅
在过去的两个星期里,我已经在DEFCON 22 CTF里检测出了两个不同的问题:"shitsco"和"nonameyet".感谢所有的意见和评论,我遇到的最常见 ...
- 跟vczh看实例学编译原理——一:Tinymoe的设计哲学
自从<序>胡扯了快一个月之后,终于迎来了正片.之所以系列文章叫<看实例学编译原理>,是因为整个系列会通过带大家一步一步实现Tinymoe的过程,来介绍编译原理的一些知识点. 但 ...
- Java入门:代码基础
万万没想到提前开学,逆向工程需要学习Java,挑战一下10天学会一门新语言吧- 使用的教材是助教推荐的,b站:最新最全java入门基础教程黑马会员版-配套随堂代码资料 第一个程序:Hello Worl ...
最新文章
- TCP三次握手及tcpdump抓包
- 独木舟上的旅行http://acm.nyist.net/JudgeOnline/problem.php?pid=71
- 中国发展研究基金会联合百度发布智能经济白皮书:新基建是助燃剂,其势已成...
- Java 8 中的流操作-基本使用性能测试
- 大规模运行MongoDB应该知道的10件事
- js正则表达式限制文本框只能输入数字,小数点,英文字母
- container view_高级UI晋升之常用View(三)中篇
- 关于DPM(Deformable Part Model)算法中模型结构的解释
- android 自动更新apk版本
- JSP的3种方式实现radio ,checkBox,select的默认选择值
- 冒泡排序满分代码(C语言),附源代码,可直接运行
- Inside NT Boot
- 3. 内存控制器与SDRAM
- 最大类间方差法(大津法OTSU)
- C++实现求解逻辑表达式的真值表、主析取范式、主合取范式
- 已安装pywinrm,仍报错winrm or requests is not installed: No module named winrm
- W3C 验证的是是非非
- NutUI 京东小程序发布了!
- D38 463. Island Perimeter
- Web3的企业如何用Token激励员工?