テストファイル:https://www.lanzous.com/ib50fkb
ファイル解析
IDA開いた後、ファンクションウィンドウの内部でQUESを見つける()関数は、私たちのフラグの出力です。デバッグEIPアドレスを変更することで、我々はQUES機能に行くことができます(0x00401520)フラグ出力
int型QUES() { int型 V0。// EDX int型の結果。// EAX int型 V2 [ 50 ]。// [ESP + 20H] [EBP-128H] int型 v3の。// [ESP + E8H] [EBP-60H] INT V4。// [ESP + ECH] [EBP-5CH] int型 V5。// [ESP + F0H] [EBP-58H] int型 V6。// [ESP + F4H] [EBP-54H] int型 V7。// [ESP + F8H] [EBP-50H] int型 V8。// [ESP + FCH] [EBP-4Chの] int型 V9。//[ESP + 100H] [EBP-48] のint V10。// [ESP + 104H] [EBP-44H] int型の V11; // [ESP + 108H] [EBP-40H] int型の V12; // [ESP + 10CH] [EBP-3CH] のint jを; // [ESP + 114H] [EBP-34H] __int64 V14。// [ESP + 118H] [EBP-30H] int型の V15; // [ESP + 124H] [EBP-24時間] int型の V16; // [ESP + 128H] [EBP-20H] int型 I; // [ESP + 12CH] [EBP-代一〕 V3 = 2147122737 。 V4 = 140540 ; V5= - 2008399303 ; V6 = 141956 ; V7 = 139457077 ; V8 = 262023 ; V9 = - 2008923597 ; V10 = 143749 ; V11 = 2118271985 ; V12 = 143868 ; 以下のための(iは= 0 ; I <= 4 ; ++ I) { memsetの(V2、0、はsizeof (V2))。 V16 = 0 ; V15= 0 ; V0 = *(&V4 + 2 * I)。 LODWORD(V14) = *(&V3 + 2 * I)。 HIDWORD(V14) = V0。 一方、(SHIDWORD(V14)> 0 || V14> = 0 && (_DWORD)V14) { V2 [V16 ++] =((SHIDWORD(V14)>> 31)^(((符号なし__int8)(SHIDWORD(V14) >> 31)^ (符号なし__int8)V14) - (符号なし__int8)(SHIDWORD(V14)>> 31)) - 1 ) - (SHIDWORD(V14)>> 31 )。 V14 / = 2LL。 } ため(J = 50 ; J> = 0 ; - J) { 場合(V2 [J]) { 場合(V2 [J] == 1 ) { のputchar(42 )。 ++ V15; } } 他 { のputchar(32 )。 ++ V15; } もし(!(V15%5 )) のputchar(32); } 結果 =のputchar(10 )。 } 戻り値の結果; }
フラグを取得します!
フラグ{HACKIT4FUN}