先感谢up的详细讲解
32位无壳exe
运行了啥也没有
查看字符串
跟进f5查看伪代码,提示
往上翻可以看到两断一样的汇编指令
逐步交叉引用找到函数的调用位置可以发现
jz+jnz=>无条件跳转
导致了下面的jmp无法执行
然后回到最开始变红的地方
按p键定义函数
就可以正常按F5查看伪代码了
LRESULT __stdcall sub_401640(HWND hWndParent, UINT Msg, WPARAM wParam, LPARAM lParam)
{
int v5; // eax
size_t v6; // eax
DWORD v7; // eax
HWND v8; // eax
int v9; // eax
int v10; // eax
const CHAR *v11; // [esp+0h] [ebp-44Ch]
const CHAR *v12; // [esp+4h] [ebp-448h]
UINT v13; // [esp+8h] [ebp-444h]
int v14; // [esp+4Ch] [ebp-400h]
UINT v15; // [esp+50h] [ebp-3FCh]
CHAR v16; // [esp+54h] [ebp-3F8h]
CHAR v17[2]; // [esp+154h] [ebp-2F8h]
int v18; // [esp+157h] [ebp-2F5h]
__int16 v19; // [esp+15Bh] [ebp-2F1h]
char v20; // [esp+15Dh] [ebp-2EFh]
char v21; // [esp+160h] [ebp-2ECh]
char v22; // [esp+181h] [ebp-2CBh]
__int16 v23; // [esp+25Dh] [ebp-1EFh]
char v24; // [esp+25Fh] [ebp-1EDh]
CHAR v25; // [esp+260h] [ebp-1ECh]
CHAR String[4]; // [esp+360h] [ebp-ECh]
int v27; // [esp+364h] [ebp-E8h]
__int16 v28; // [esp+368h] [ebp-E4h]
CHAR Text; // [esp+36Ch] [ebp-E0h]
struct tagRECT Rect; // [esp+38Ch] [ebp-C0h]
CHAR Buffer; // [esp+39Ch] [ebp-B0h]
HDC hdc; // [esp+400h] [ebp-4Ch]
struct tagPAINTSTRUCT Paint; // [esp+404h] [ebp-48h]
WPARAM v34; // [esp+444h] [ebp-8h]
int v35; // [esp+448h] [ebp-4h]
LoadStringA(hInstance, 0x6Au, &Buffer, 100);
v15 = Msg;
if ( Msg > 0x111 )
{
if ( v15 == 517 )
{
if ( strlen(