1.预处理
获得信息
1.upx壳
2.32位文件
2.脱壳(可以用脱壳工具脱壳,也可以手动脱壳)
方法一:用工具脱壳
方法二:手动脱壳
目前还不会,正在学习中
3.复查
复查一下是否把壳给脱掉了
瞅瞅,确实没壳了,然后放进IDA(32),用shift+F12查找字符串,
其实可以用F5直接进入主函数,找到伪代码,
不过我个人喜欢先找一遍字符串,
毕竟,最终的flag通常都是一串字符串吗!
所以先shift+F12瞅一眼,看看有没有什么线索
然后,双击’ this is true flag!'反汇编、F5反编译找到伪代码
4.代码分析
sub_401910();
qmemcpy(&v1, “HappyNewYear!”, 0xEu);
*(_WORD *)Str1 = 0;
memset(&v3, 0, 0x1Eu);
printf(“please input the true flag:”);
scanf("%s", Str1);
if ( !strncmp(Str1, &v1, strlen(&v1)) )
result = puts(“this is true flag!”);
else
result = puts(“wrong!”);
return result;
这个主函数比较简单,
就用了memcpy、memset、strncmp三个函数
flag很明显flag{HappyNewYear!}