实验吧逆向工程-debug
2019-04-22 本文已影响9人
追求科技的足球
感觉逆向试一个很厉害的工作,直接破解软件啥的可以(其实是看需求会逆向,同时也想挑战一下,感觉很有意思),因此今天做一个逆向的题目吧。
为了保证自信不被打压,先找一个易的题吧。
1、下载Ida,导入文件,选择ELF格式(是UNIX系统实验室作为应用程序二进制接口而开发和发布的,是Linux的主要可执行文件格式)导入:
2、使用搜索找到flag所在,view->Open subviews->Strings
3、双击flag,可以找到使用的地址,发现后面还有DATA XREF(数据交叉引用)
知识:
参考:https://blog.csdn.net/hgy413/article/details/50594320
DATA XREF为数据交叉引用
CODE XREF为代码交叉引用。
上箭头表示引用者的地址比当前低,你需要向上滚动才能到达引用者地址,下行反之。每个交叉引用注释都包含一个单字符后缀(箭头后面),用以说明交叉引用的类型分为以下
由函数调用导致的交叉引用使用后缀p(看做是Procedure)。
跳转交叉引用使用后缀j(看做是Jump)。
读取交叉引用使用后缀r(看做是Read)。
写入交叉引用使用后缀w(看做是Write)。
偏移量交叉引用使用后缀o(看做是Offset)。
4、继续双击DATA XREF后面的信息,找到起始地址0x0804849b。
5、尝试运行,首先获取权限:
chmod 777 debug32
6、运行没有任何结果,应该是没有执行print的那一段程序,我们设置断点,然后让他跳到那里执行:
(1)使用gdb运行
(2)b设置断点,设在主函数
b __libc_start_main
(3)r运行
(4)跳到输出函数地址,由上边发现是0804849b,所以设置为
set $eip=0x0804849b
(5)c继续运行
(6)得到flag
小结:第一次解出逆向题目,感觉有点小兴奋。使用了一次Ida和gdb,继续加油!