标签:const int HDCTF2019 char re program 选中 Maze nop
exeinfope查看信息
脱壳
ida分析
首先jnz跳到下一条指令,相当于没跳转,先nop掉(选中前面的地址,然后Edit-Patch program-Assemble,输入no)
下面call了一个错误的地址。先按d转化为数据(不能直接全nop掉,因为里面可能有有用的数据)
然后逐个nop,Edit-Patch program-Change Byte,修改为0x90(先nop第一个,再nop第二个这样),详见链接。
然后选中该部分代码按c,发现没有错误了。
选中main函数所有关键代码,按p封装为函数,即可Tab转为伪代码。
int __cdecl main(int argc, const char **argv, const char **envp)
{
int i; // [esp+10h] [ebp-14h]
char v5[16]; // [esp+14h] [ebp-10h] BYREF
sub_401140(aGoThroughTheMa);
scanf("%14s", v5);
for ( i = 0; i <= 13; ++i )
{
switch ( v5[i] )
{
case 'a':
--*(_DWORD *)asc_408078;
break;
case 'd':
++*(_DWORD *)asc_408078;
break;
case 's':
--dword_40807C;
break;
case 'w':
++dword_40807C;
break;
default:
continue;
}
}
if ( *(_DWORD *)asc_408078 == 5 && dword_40807C == -4 )
{
sub_401140(aCongratulation);
sub_401140(aHereIsTheFlagF);
}
else
{
sub_401140(aTryAgain);
}
return 0;
}
分析函数查找字符串。
结合题目名称为迷宫题,70个字符,猜测为7x10。
*******+**
*******s**
****aaas**
**aas*****
**s**F****
**sddd****
**********
得到flag!
flag{ssaaasaassdddw}
标签:const,int,HDCTF2019,char,re,program,选中,Maze,nop 来源: https://blog.csdn.net/qq_53008544/article/details/122419294
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。