re每日一题(20200528)
BabyDriver
2020GKCTF
64位驱动逆向,函数不是很多。看到\\Driver\\Kbdclass
可以感觉是个键盘驱动,且调用了KdDisableDebugger()
具有反调试。既然是CTF,就不需要完全分析,直接找关键地方。可以在sub_140001380
找到flag的关键。
__int64 __fastcall sub_140001380(__int64 a1, __int64 a2)
{
__int64 v2; // rbx
__int64 v3; // rdi
__int64 v4; // rax
int v5; // ecx
__int16 *v6; // rsi
__int64 v7; // rbp
__int16 v8; // dx
char v9; // dl
CHAR *v10; // rcx
v2 = a2;
if ( *(a2 + 48) >= 0 )
{
v3 = *(a2 + 24);
v4 = *(a2 + 56) >> 3;
if ( v4 )
{
v5 = dword_1400030E4;
v6 = (v3 + 2);
v7 = v4;
while ( *(v3 + 4) )
{
LABEL_28:
v6 += 6;
if ( !--v7 )
goto LABEL_29;
}
aO[v5] = 46;
v8 =