이 포스트를 포함해서 앞으로 올라오는 몇몇 포스트는 기존 포스팅 순서에 신경쓰지 않고 올라와서 굉장히 뜬금없을 수 도 있고 굉장히 대충대충 써져있을 수 있습니다. 개인적인 사정이 있어 급하게 올린것이고 추후 수정할 예정입니다. :)
...더보기
int __cdecl main(int argc, const char **argv, const char **envp)
{
signed int v3; // ebp
signed int i; // esi
char v6; // [esp+Ch] [ebp-130h]
char v7; // [esp+Dh] [ebp-12Fh]
char v8; // [esp+Eh] [ebp-12Eh]
char v9; // [esp+10h] [ebp-12Ch]
char v10; // [esp+11h] [ebp-12Bh]
__int16 v11; // [esp+71h] [ebp-CBh]
char v12; // [esp+73h] [ebp-C9h]
char v13; // [esp+74h] [ebp-C8h]
char v14; // [esp+75h] [ebp-C7h]
__int16 v15; // [esp+139h] [ebp-3h]
char v16; // [esp+13Bh] [ebp-1h]
v9 = 0;
v13 = 0;
memset(&v10, 0, 0x60u);
v11 = 0;
v12 = 0;
memset(&v14, 0, 0xC4u);
v15 = 0;
v16 = 0;
v6 = 16;
v7 = 32;
v8 = 48;
sub_4011B9(aInputName);
scanf(aS, &v9);
v3 = 0;
for ( i = 0; v3 < (signed int)strlen(&v9); ++i )
{
if ( i >= 3 )
i = 0;
sprintf(&v13, aS02x, &v13, *(&v9 + v3++) ^ *(&v6 + i));
}
memset(&v9, 0, 0x64u);
sub_4011B9(aInputSerial);
scanf(aS, &v9);
if ( !strcmp(&v9, &v13) )
sub_4011B9(aCorrect);
else
sub_4011B9(aWrong);
return 0;
}
usr_input[0] ^ v6
usr_input[1] ^ v7
usr_input[2] ^ v8
usr_input[3] ^ v6
usr_input[4] ^ v7
usr_input[5] ^ v8
....(usr_input 사이즈만큼 반복)
처음엔 &v6 + i 부분 때문에 고생하다가 올리디버거로 디버깅해서 알아냄..ㅠㅠ
그리고 xor는 xor하면 다시 원복되니까 해당 특징 이용해서 슥삭..
'Reversing > Reversing.kr' 카테고리의 다른 글
[Reversing.kr] Easy ELF (0) | 2019.08.13 |
---|