I_like_pack
IDA加载一看啥都没有,再根据题目名显然是个壳
windows下脱壳相对而言麻烦一些,ExeInfoPe查壳啊、各种壳的针对性操作啊啥的
Linux下一方面系统开源随便魔改,另一方面有一个/proc/pid/mem的文件可以直接读取进程的内存,使得dump极为容易
本题放到系统下跑起来后发现如果输入会回显“NO”,而不输入的话大概三秒就会自动结束
这显然是alarm函数的功劳
如果仅是alarm函数的话,其实可以比拼一下手速,毕竟三秒钟还算在人类的反应速度内,另一方面也可以通过sh脚本来执行dump
试了一下cat /proc/pid/mem
会报错,在这里有官方的说明,提供了三种方法
1. 获取maps,根据模块地址来读取程序的内存
2. open mem以后attach目标进程使其暂停,然后即可读
3. gcore pid
尝试了一下,其中第一种方法可以直接使用–因为只是读取mem文件
通过这个脚本
#! /usr/bin/env python
import re
maps_file = open("/proc/self/maps", 'r')
mem_file = open("/proc/self/mem", 'r', 0)
for line in maps_file.readlines(): # for each mapped region
m = re.match(r'([0-9A-Fa-f]+)-([0-9A-Fa-f]+) ([-r])', line)
if m.group(3) == 'r': # if this is a readable region
start = int(m.group(1), 16)
end = int(m.group(2), 16)
mem_file.seek(start) # seek to region start
chunk = mem_file.read(end - start) # read region contents
print chunk, # dump contents to standard output
maps_file.close()
mem_file.close()
操作方法如下