主要收获:
这题对我来说,算是第一次在Linux上调试。中间光是环境,方法之类的都花了我很多时间。
尝试了IDA远程调试,尝试了EDB,和GDB。最后还是觉得EDB好用一些。但静态调试还是使用IDA
很像OD的界面。
我用的Ubuntu下EDB,github上上能找到安装步骤,ubuntu版本大于15.0安装方法如下,对应着输入指令。
# install dependencies
sudo apt-get install \
cmake \
build-essential \
libboost-dev \
libqt5xmlpatterns5-dev \
qtbase5-dev \
qt5-default \
libqt5svg5-dev \
libgraphviz-dev \
libcapstone-dev
# build and run edb
git clone --recursive https://github.com/eteran/edb-debugger.git
cd edb-debugger
mkdir build
cd build
cmake ..
make
./edb
解题过程:
既然调试好了linux环境,先在Linux下运行文件看看。注意要64位环境,否则运行不了。
字面理解说是加密后的数据,但是也不太明白。
然后在IDA里有一个名为
的静态函数
,好像是用来加密数据的。
使用edb将程序断在
再观察堆栈知道这就是输出来的数据
在IDA里观察函数
将rdi修改为这串字符串的起始地址,esi修改为数量。
然后修改rip使程序来跑这个函数,之后将所有的加密函数运行完后观察堆栈可以得到
能感觉到这题还有很多点自己还没弄明白,参看了很多其他人的wp,感觉很少看到说全的。
带着疑惑继续学习吧