Buuctf-Reverse-reverse1题解&思路总结

做题过程

过程总结


注意:ida6.1没有F5查看伪代码功能。本篇全程使用ida7.0版本​

做题过程

下载后打开文件

1、双击打开,显示无法执行代码

2、查壳(文件为64位)

 运行完后结果如下

 2、放入ida64分析(前面查壳已知文件是64位的)

 Shift+F12查看字符串,发现有可能是flag的地方

 双击this is the right flag!,查看包含该字符串的位置

双击红框处(红框处为引用该字符串的位置)

 跳转到下面这个界面(这个界面是流程视图,可以看出程序的执行流程)

 这个界面比较难看懂,所以按F5一键反汇编(查看伪代码)

​先找到关键字“this is the right flag!”,不难推测出sub_1400111D1可能是类似printf的作用​

。。。。。。在伪代码界面编辑注释的方法(可跳过)

1、先用鼠标选中要编辑的那一行代码,然后右键选择edit comment 

输入要编辑的内容,点击ok

 ida会自动把编辑的内容判断为注释,并自动添加“//”,所以在编辑时,不需要自己在文段内容前加“//”

生成结果如下 

。。。。。。 

继续分析代码

 因为得到的最终结果是this is the right flag!所以可知Str1和Str2是相等的

继续往上看代码

 按下R键后可知,字符串Str2中的o都被改成了0

接下来查看Str2字符串的内容

鼠标选中Str2 ,按下键盘“X”键查看Str2这个变量的交叉引用(或者选中Str2后,右键选择Jump to xref..)

可以知道Str2字符串的内容是{hello_world},所以将该字符串中的o改为0,即可得到正确的flag

(前文已推出Str1和Str2字符串内容相等)

 

得到flag:flag{hell0_w0rld}

ida使用技巧总结:IDA Pro7.0使用技巧总结 - 先知社区 (aliyun.com)


过程总结

题目条件:

  1. PE文件(exe文件是属于PE文件的一种)

做题步骤:

  1. 双击exe文件看有无信息
  2. 使用查壳软件查壳,了解程序是多少位的(64位或32位)
  3. 使用ida进行分析(用Shift+F12查看一下字符串,寻找关键词(如flag等))

ida分析过程:

  1. Shift+F12查看一下字符串,寻找关键词(如flag等) 
  2. 双击字符串,查看包含该字符串的位置
  3. 查看引用该字符串的详细地址
  4. 使用F5反汇编,查看伪代码
  5. 分析伪代码(选中数字后按键盘“R”键,即可将数字转换为字符;选中变量后 ,按下键盘“X”键查看该变量的交叉引用)

猜你喜欢

转载自blog.csdn.net/m0_62239233/article/details/130141078