下载文件
打开文件,不管输入什么都无回显
1、查壳(发现有一个UPX壳)
。。。如果我们把带壳的文件直接放到ida中分析
此处就只有两个函数
。。。无法获得有效信息
2、使用脱壳软件脱壳
点击脱壳后,桌面上会新生成一个脱完壳的文件
3、把这个脱壳文件放入ida32进行分析
Shif+F12查看字符串(找到关键词)
双击字符串,查看引用该字符串的位置
双击引用该字符串的位置,进入到流程图
直接按F5查看伪代码
strcpy(Str2, "HappyNewYear!");
——>HappyNewYear!这个字符串复制到 Str2
Strlen(Str2)——>返回字符串Str2的长度
strncmp(Str1, Str2, strlen(Str2))
——>把字符串Str1和字符串Str2两字符串进行比较,最多比较前(字符串Str2的长度)的长度,当str1=str2时,返回值=0
if ( !strncmp(Str1, Str2, strlen(Str2)) )
——>设a=strncmp(Str1, Str2, strlen(Str2)),原式可转化为if(!a),仅当!a为真(此时a为0)时,if条件成立,返回puts(aThisIsTrueFlag)
双击puts(aThisIsTrueFlag),可以看到puts输出的字符串就是this is true flag!
因为最后输出的字符串是this is true flag!,所以可以推出Str1和Str2是相等的,Str2字符串的内容就是HappyNewYear!
得到flag:flag{HappyNewYear!}
过程总结
题目条件:
- PE文件(exe文件是属于PE文件的一种)
做题步骤:
- 双击exe文件看有无信息
- 使用查壳软件查壳,了解程序是多少位的(64位或32位)
- 有壳文件先去壳
- 使用ida进行分析(用Shift+F12查看一下字符串,寻找关键词(如flag等))
ida分析过程:
- Shift+F12查看一下字符串,寻找关键词(如flag等) ,如没有关键词,就在main函数里查找信息
- 双击字符串,查看包含该字符串的位置
- 查看引用该字符串的详细地址
- 使用F5反汇编,查看伪代码
- 分析伪代码(选中数字后按键盘“R”键,即可将数字转换为字符;选中变量后 ,按下键盘“X”键查看该变量的交叉引用)