1、首先打开exe,看看里面到底是个啥,看到
看到需要在规定时间内需要输入预置的值,想到通关才能拿到flag
2、用ida打开
char __usercall sub_401435@<al>(DWORD a1@<edx>, int a2@<ecx>, int a3)
{
DWORD v3; // edi@1
int v4; // esi@1
int v5; // edi@4
char result; // al@7
v3 = a1;
v4 = a2;
sub_401A73("key is %s (%s)");
sub_401423();
sub_401A73("\rZOMGZOMGOZMGZOMGZOMGOZMGZOMGZOMGOZMGZOMGZOMGOZMG\n");
if ( v4 == 32 )
sub_401A73("\nWhen you see an 's', press the space bar\n\n");
else
sub_401A73("\nWhen you see an '%c', press the '%c' key\n\n");
sub_401A73("key is %s (%s)");
sub_401423();
sub_401A73("\rZOMGZOMGOZMGZOMGZOMGOZMGZOMGZOMGOZMGZOMGZOMGOZMG\n");
sub_4012D5(v3);
v5 = a3;
if ( a3 > 0 )
{
do
{
sub_401A73(".");
Sleep(0xC8u);
--v5;
}
while ( v5 );
}
if ( (unsigned __int8)sub_401260(v4, 100000) )
{
result = 1;
}
else
{
sub_401A73("key is %s (%s)\r");
sub_401423();
sub_401A73("\rUDDER FAILURE! http://imgur.com/4Ajx21P \n");
result = 0;
}
return result;
}
代码有点长,看不懂
3、放到od里面调试,调试了几次发现每次失败的话上面的跳转都不能实现,所以试着将jnz改成了je(有两个地方都要改),调试到后面就拿到了key
刚开始要放置断点,后面就可以删除断点,直接跑