题目描述
Papa brought me a packed present! let’s open it.
Download : http://pwnable.kr/bin/flag
This is reversing task. all you need is binary
我的思路
首先使用ida打开,发现无法自动识别处理器类型并且有很多没办法正常显示的地方。查看string,发现了一个ups。才意识到题目中所说的packed是加壳的意思。根据查询和之前的经验,发现linux下不经常加壳,常用的upx壳可以直接使用upx-ucl -d
指令进行解压缩。然后再放到ida里面就可以直接看到flag了。
一些背景知识
壳"是专门的压缩工具.软件加壳是在程序中加入一程保护作用的代码, 它改变代码本来的面目, 如将原来的代码和数据加密, 以保护程序不被轻易修改, 窃取和反编译, 延长破解时间, 消耗破解者经历. 当加了壳的软件运行时, 壳首先在内存中获取执行权, 对软件解压或解密, 还原软件的原本面目, 然后把执行全交给软件, 软件正常执行.
加壳软件并不能防止内存dump, 软件运行起来的时候, 就已经脱壳了, 代码中的所有字符串常量都可以通过查看dump文件得到
总体来说linux下没有什么壳,因为大多数是开源软件并不需要加壳。
一点问题
- 使用pwndbg插件进行调试的时候发现n有时候会执行多条语句导致直接执行到程序结束。目前还不知道为什么,如有大神解答感激不尽。