int __usercall sub_479A94@<eax>(int a1@<eax>) { char v1; // bl _BYTE *v2; // esi int v3; // ecx unsigned int v5[2]; // [esp-Ch] [ebp-2Ch] BYREF int *v6; // [esp-4h] [ebp-24h] char v7[12]; // [esp+Ch] [ebp-14h] BYREF int v8; // [esp+18h] [ebp-8h] _BYTE *v9; // [esp+1Ch] [ebp-4h] int savedregs; // [esp+20h] [ebp+0h] BYREF v8 = 0; v9 = (_BYTE *)a1; v6 = &savedregs; v5[1] = (unsigned int)&loc_479B3C; v5[0] = (unsigned int)NtCurrentTeb()->NtTib.ExceptionList; __writefsdword(0, (unsigned int)v5); sub_405080(); v1 = 16; v2 = v9; do { v7[9] = byte_59B940[((unsigned __int8)*v2 >> 4) & 0xF]; v7[8] = 1; sub_403824(); v7[1] = byte_59B940[*v2 & 0xF]; v7[0] = 1; LOBYTE(v3) = 2; sub_4037F4(v3, v7); sub_4052E4(); sub_405348(); ++v2; --v1; } while ( v1 ); __writefsdword(0, v5[0]); v6 = (int *)&loc_479B43; return sub_405080(); }
时间: 2024-03-31 14:35:34 浏览: 140
这段代码是对某个函数(名称未知)的反汇编结果。根据代码的结构和变量名,可以猜测这是一个Windows平台下的C/C++函数。函数的作用大致是:将传入的a1作为一个指针数组,遍历其中的所有元素,将每个元素的值转换为16进制字符串并存储到v7数组中,最后返回sub_405080的返回值。具体的实现逻辑需要查看sub_403824、sub_4037F4、sub_405080、sub_4052E4和sub_405348函数的实现。
阅读全文