171208 逆向、杂项-协会培训稿

逆向


前言

逆向是对一个程序的反编译,从它的可执行程序中反推出程序的结构、流程、关键部分甚至是全部代码

以C(C++与C大致相同,下文不再重复)为例,编译生成的可执行程序(.exe)是代码经过编译、链接生成的PE格式文件。内部蕴含的代码实际上是机器码,可以用汇编语言来解释。

由于语言有许多种,例如C++、VB、C#、Python、Java甚至是Android等等,它们各自有各自的特性,因此想逆向一个程序首先要熟悉它的机制、正向代码流程等

综上所述,逆向是一门很精深的艺术。

学习起来不会少花时间,但同样回报也不小。

当你能够见到一个程序就能够熟悉地解析出它的代码,甚至是对它进行任意增添修改删除的时候,这些付出都是值得的

PS:虽然挺像劝退文,但要学的东西确实不少。共勉。

入门

虽然前面说的很困难,但其实一点一点来,也不算困难

首先熟悉C语言
其次学会工具IDA Pro
就可以入门了(<ゝω·)

以CTF为例

Hello, Re

这题是南邮平台的Re第一题,很适合作为开启逆向的第一眼
首选尝试运行
这里写图片描述
是不是跟你平常写的程序很相似啊?

我们要对它进行反编译,从而知道程序所想要的flag是什么
打开IDA
这里写图片描述
在new中选择对应的exe文件
在弹窗的窗口中直接点击OK即可

稍等一小会儿以后听到‘咚’的一声就代表IDA已经分析完了

这里写图片描述

通常IDA会自动显示main函数的代码块,有时无法识别到main就需

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值