前言

学习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:逆向工程之学习——静态分析相关推荐

  1. Android逆向学习---静态分析反调试apk

    分析环境:JEB2.2.7+IDA7.0  测试手机:nexus IDA7.0下载链接 链接:https://pan.baidu.com/s/1xEtjnTVZFuLiMpHKwMOY2Q 密码:g3 ...

  2. 逆向工程---Mybatis学习笔记(十二)

    使用官方网站的mapper自动生成工具mybatis-generator-core-1.3.2来生成po类和mapper映射文件. 第一步:mapper生成配置文件: 在generatorConfig ...

  3. 游戏安全初学者学习资料

    逆向工程初学者学习资料 以下是根据个人推荐的学习资料编制的列表,以帮助人们学习如何对视频游戏进行逆向工程. 我希望它能帮助其他人花更多的时间学习,减少搜索的时间. 此处收集的大部分资源将侧重于在 Mi ...

  4. 静态分析 第一课 静态分析介绍

    静态分析 第一课 静态分析介绍 本人是北邮19级学生,最近需要使用soot进行java静态分析,但是没有任何静态分析的基础,在北邮人论坛里学长给我推荐了B站南京大学的一个软件分析的网课,感触颇深 这是 ...

  5. 神操作:教你用Python识别恶意软件

    导读:本文将利用静态分析技术揭示这些恶意软件的功能. 作者:约书亚·萨克斯(Joshua Saxe).希拉里·桑德斯(Hillary Sanders) 来源:大数据DT(ID:hzdashuju) 在 ...

  6. 教你用Python制作一款自己的杀毒程序

    在本文中,我们将介绍恶意软件静态分析的基础知识.静态分析是对程序文件的反汇编代码.图形图像.可打印字符串和其他磁盘资源进行分析,是一种不需要实际运行程序的逆向工程.虽然静态分析技术有欠缺之处,但是它可 ...

  7. 如何开始你的CTF比赛之旅

    在过去的两个星期里,我已经在DEFCON 22 CTF里检测出了两个不同的问题:"shitsco"和"nonameyet".感谢所有的意见和评论,我遇到的最常见 ...

  8. 跟vczh看实例学编译原理——一:Tinymoe的设计哲学

    自从<序>胡扯了快一个月之后,终于迎来了正片.之所以系列文章叫<看实例学编译原理>,是因为整个系列会通过带大家一步一步实现Tinymoe的过程,来介绍编译原理的一些知识点. 但 ...

  9. Java入门:代码基础

    万万没想到提前开学,逆向工程需要学习Java,挑战一下10天学会一门新语言吧- 使用的教材是助教推荐的,b站:最新最全java入门基础教程黑马会员版-配套随堂代码资料 第一个程序:Hello Worl ...

最新文章

  1. TCP三次握手及tcpdump抓包
  2. 独木舟上的旅行http://acm.nyist.net/JudgeOnline/problem.php?pid=71
  3. 中国发展研究基金会联合百度发布智能经济白皮书:新基建是助燃剂,其势已成...
  4. Java 8 中的流操作-基本使用性能测试
  5. 大规模运行MongoDB应该知道的10件事
  6. js正则表达式限制文本框只能输入数字,小数点,英文字母
  7. container view_高级UI晋升之常用View(三)中篇
  8. 关于DPM(Deformable Part Model)算法中模型结构的解释
  9. android 自动更新apk版本
  10. JSP的3种方式实现radio ,checkBox,select的默认选择值
  11. 冒泡排序满分代码(C语言),附源代码,可直接运行
  12. Inside NT Boot
  13. 3. 内存控制器与SDRAM
  14. 最大类间方差法(大津法OTSU)
  15. C++实现求解逻辑表达式的真值表、主析取范式、主合取范式
  16. 已安装pywinrm,仍报错winrm or requests is not installed: No module named winrm
  17. W3C 验证的是是非非
  18. NutUI 京东小程序发布了!
  19. D38 463. Island Perimeter
  20. Web3的企业如何用Token激励员工?

热门文章

  1. 老牌子同仁,为何选择浪潮新锐存储AS5600?
  2. Learn Golang
  3. spring aop 配置注解 切入点说明
  4. python获取pid并杀死_python 根据pid杀死相应进程的方法
  5. 贪心的矿工(dp) vj 1725
  6. linux 三剑客命令(grep,sed ,awk)
  7. 国外虚拟服务器,国外虚拟主机
  8. python 的numpy库中的mean()函数用法
  9. 关于我在windows使用volatility取证这档事
  10. 2008-06-27 德国二战老兵的下午茶