re 入门

总述

逆向一般都是先运行,了解程序大致功能,然后
不同的程序只有在相应的环境下才能运行
题目与工具链接:https://pan.baidu.com/s/1gdX74ko3d6HHt3uMWyrVoQ
提取码:q9hh

linux虚拟机安装

安装教程
https://blog.csdn.net/stpeace/article/details/78598333

VMware work(linux虚拟机安装所需的文件)

虚拟机
https://pan.baidu.com/s/1tzW2qr3ZQRyPaI7mRom2pA
提取码:e872

ubuntu16.04 iso(linux虚拟机安装所需的文件)

https://pan.baidu.com/s/1P_TPVTIj2aTz63yKke1tdQ
提取码:sru7

gdb-peda(ubuntu虚拟机中安装)

git clone https://github.com/longld/peda.git ~/peda
sudo echo "source ~/peda/peda.py" >> ~/.gdbinit
## andriod

安卓虚拟机下载https://www.yeshen.com/
安装jeb
1、将apk文件先放到虚拟机里面跑一下
安装相应的apk文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190913160844215.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
运行apk
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019091316124194.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
大致可以推测出该apk的功能。应该是想要我们输入一个flag,进行判断,只有输入正确的flag才能通过验证。同时确定一个我们逆向时追踪的对象,onclick事件
2、将apk文件放入jeb中
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190913160410471.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
3、打开包窗口
点击左侧框的bytecode,选择相应窗口
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190913161047140.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
点击onclick,将会出现相应的汇编代码

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190913161349782.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
发现相关逻辑,onclick里面有if判断,只有当我们输入正确的flag时,我们才能通过验证
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190913161450710.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
分析check方法(双击check)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190913161639297.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
可以看出算法非常简单,就是将我们的输入与23做一个异或,然后与s做一个比较,所以我们可以写个脚本,倒推出flag的值。
```py
source=[113, 123, 118, 112, 108, 94, 99, 72, 38, 68, 72, 87, 89, 72, 36, 118, 100, 78, 72, 87, 121, 83, 101, 39, 62, 94, 62, 38, 107, 115, 106]

flag=''
for i in range(len(source)):
    t=source[i]^23
    flag+=chr(t)
print(flag)

windows

在windows下一般动态调试用ollydbg,静态用ida(ida被号称为逆向神器,逆天逆地逆空气)
这里我们将两种方法
0、首先先运行一下
在这里插入图片描述
也是让我们输入一个passwd,记住弹出窗口中的Incorrect Password这个字符串,这能帮我们快速定位到相应的关键函数。
1、ida静态分析
将相应的exe文件丢到ida里面
在这里插入图片描述
打开string 窗口
在这里插入图片描述
找到相应字符串
在这里插入图片描述
寻找他的交叉引用
在这里插入图片描述
在这里插入图片描述
按f5进行反编译
在这里插入图片描述
发现函数的关键算法,是个判断语句,只要我们的输入为Ea5yR3versing就能通过验证。至于为什么,这个首先要对函数堆栈有一定的了解。
在这里插入图片描述
可以看出来string、v3、v4、v5在堆栈上是连续的,而 GetDlgItemTextA(hDlg, 1000, &String, 100);这句话将使得我们文本框输入的值存放以string的地址为基地址的空间。
在这里插入图片描述
所以我们可以推测出passwd就是Ea5yR3versing。
在这里插入图片描述
2、当然很多时候我们并不能一下就能分析出函数的关键算法,这个时候就需要我们动态调试了

拿到题目后,发现是一个.exe程序。先放到PEiD里面检测一下,看其是否加壳。
PEiD
发现其是一个无壳的win32程序
先做一些试探,随意写一个密码
试探
抓住弹出的对话框中的关键字incorrect Password
用ollydbg将其打开
3
利用中文搜索
这里写图片描述
找到incorrect Password,点进去,找到相关函数。
这里写图片描述
记住00401135地址,并找到上一级跳转(根据红线往上找)
这里写图片描述
发现有四个条件判断语句的跳转地址为00401135,给他们分别下好断点
这里写图片描述
重新载入程序,并在第一个断点处停止
cmp byte ptr ss:[esp+0x5],0x61此时esp+0x5所指的地方为堆栈19FA75,发现这一块的数据是我们的输入数据12345678的ascii码形式(3132333435363738)
,将我们输入数据的第二个字符**“2”与0x61(‘a’的ascii码)比较,所以第二个字符既是’a’**
这里写图片描述
因为我们输入数据与flag并不相同,所以程序将会跳转,我们可以修改相关标志位使其不要跳转,继续跑下去
这里写图片描述
到第二个断点处,esp+0xA == 19F7D6 ,第三个字符开始的地址,将我们的输入的第三个和第四个字符与**“5y”** 相比较,flag的第三个和第四个字符既是 “5y”
这里写图片描述
到第三个断点处,esp+10==19F7D8 ,是我们输入数据的第五个字符的起始位置,将我们输入数据的第五位往后的字符与**“R3versing”相比较,所以五位往后的字符既是“R3versing”**
这里写图片描述
到第四个断点处,esp+0x4 == 19F7D4,是我们输入数据的第一个字符的位置,将我们输入数据的第一位往后的字符与0x45 既 ‘E’相比较,所以第一位的字符既是’E’
综上所述,我们将上面零散的flag碎片拼凑到一起既是完整的flag–>Ea5yR3versing
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值