实验吧逆向工程-debug

感觉逆向试一个很厉害的工作,直接破解软件啥的可以(其实是看需求会逆向,同时也想挑战一下,感觉很有意思),因此今天做一个逆向的题目吧。
为了保证自信不被打压,先找一个易的题吧。
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,继续加油!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容