本帖最后由 迷雾 于 2019-7-18 14:44 编辑
不知道这样算不算
程序有个函数不断的校验密码
函数入口是:0x0401194
拖入IDA分析后备注如图
[C] 纯文本查看 复制代码 void TimerFunc()
{
int i; // ecx
void *v1; // [esp-4h] [ebp-34h]
int v2; // [esp-4h] [ebp-34h]
void *v3; // [esp-4h] [ebp-34h]
void *v4; // [esp-4h] [ebp-34h]
void *v5; // [esp-4h] [ebp-34h]
void *v6; // [esp+0h] [ebp-30h]
void *v7; // [esp+Ch] [ebp-24h]
void *v8; // [esp+Ch] [ebp-24h]
void *v9; // [esp+Ch] [ebp-24h]
void *v10; // [esp+Ch] [ebp-24h]
BOOL v11; // [esp+Ch] [ebp-24h]
void *v12; // [esp+Ch] [ebp-24h]
LPVOID v13; // [esp+10h] [ebp-20h]
LPVOID v14; // [esp+14h] [ebp-1Ch]
LPVOID v15; // [esp+18h] [ebp-18h]
LPVOID v16; // [esp+1Ch] [ebp-14h]
LPVOID v17; // [esp+20h] [ebp-10h]
LPVOID v18; // [esp+24h] [ebp-Ch]
LPVOID v19; // [esp+28h] [ebp-8h]
LPVOID lpMem; // [esp+2Ch] [ebp-4h]
v19 = 0;
v18 = 0;
v17 = 0;
v16 = 0;
v15 = 0;
v14 = 0;
v6 = (void *)sub_4015CA(0, 0, 0, 0, 0, 0, 0); // v13 = 1563428573000
lpMem = v6;
v13 = (LPVOID)lib_sub_40406F((void (__cdecl *)(__int64 *, int, char *))sub_404D40, 1);
v7 = (void *)base64(&v13); // v14 = MTU2MzQyOTE0NzAwMA== (1563428573000)
if ( v13 )
FreeMemory(v13);
if ( v19 )
FreeMemory(v19);
v19 = v7;
v13 = sub_40276E(); // 调用GetComputerNameA 获取用户名
v1 = v13;
if ( v18 )
FreeMemory(v18);
v18 = v1;
v13 = (LPVOID)lib_sub_40406F((void (__cdecl *)(__int64 *, int, char *))sub_404D40, 1);
v8 = (void *)base64(&v13); // 再次base64编码 用我的用户名
if ( v13 )
FreeMemory(v13);
if ( v17 )
FreeMemory(v17);
v17 = v8;
for ( i = 0; ; i = v2 )
{
v2 = i + 1;
if ( i + 1 > 10 )
break;
v13 = (LPVOID)lib_sub_40406F((void (__cdecl *)(__int64 *, int, char *))sub_404D40, 1);
v9 = (void *)base64(&v13);
if ( v13 )
FreeMemory(v13);
if ( v19 )
FreeMemory(v19);
v19 = v9;
v13 = (LPVOID)lib_sub_40406F((void (__cdecl *)(__int64 *, int, char *))sub_404D40, 1);
v10 = (void *)base64(&v13);
if ( v13 )
FreeMemory(v13);
if ( v17 )
FreeMemory(v17);
v17 = v10;
}
v13 = (LPVOID)sub_401093((char)v19);
v3 = v13;
if ( v16 )
FreeMemory(v16);
v16 = v3;
v13 = 0;
v4 = sub_40285E(&v16, 0, 0);
if ( v15 )
FreeMemory(v15);
v15 = v4;
v13 = (LPVOID)sub_402F9C(10);
v5 = v13;
if ( v15 )
FreeMemory(v15);
v15 = v5;
if ( v14 )
FreeMemory(v14);
v14 = "c3VjY2Vzcw"; // success的base64编码
v13 = (LPVOID)GetEditText(1375797249, (LPCSTR)0x160125D0, 8, -1);// 取编辑框内容
v11 = sub_4010EF(v13, v15) == 0;
if ( v13 )
FreeMemory(v13);
if ( v11 ) // 爆破到这里就可以
{
sub_4031CF(2, 1, 5, 1);
v13 = 0;
v12 = (void *)sub_4033E7(&v14, 0, 0);
sub_40118C(v6, 0, 0);
lib_sub_40406F((void (__cdecl *)(__int64 *, int, char *))showMsgBox, 4);
if ( v12 )
FreeMemory(v12);
}
if ( lpMem )
FreeMemory(lpMem);
if ( v19 )
FreeMemory(v19);
if ( v18 )
FreeMemory(v18);
if ( v17 )
FreeMemory(v17);
if ( v16 )
FreeMemory(v16);
if ( v15 )
FreeMemory(v15);
if ( v14 )
FreeMemory(v14);
}
|