160个CrackMe_逆向 4/160

文件名:ajj.1

一、基本信息

没有按钮

软件是用delphi写的,可以利用专门的delphi反编译软件DeDeDark查看

二、具体分析

随便输入用户名和注册码

在过程选项卡中,有一个chkcode函数,通过名字来看,很像是关键函数

双击进去,看到里面有GetText函数,这应该就是两个文本输入框的获取文本函数了

在OD中找到对应的RVA

在Panel1Click函数中出现了注册成功的字符串,并且设置图片可见

注册码算法:黑头Sun Bird+(用户名长度+5)+dseloffc-012-OK+用户名

比如说用户名是11111

那么注册码就是

黑头Sun Bird10dseloffc-012-OK11111

 

 

 

 

 

 

 

 

 

// bad sp value at call has been detected, the output may be wrong! int __cdecl main(int argc, const char **argv, const char **envp) { _DWORD *_main_v3; // eax _DWORD *_main_v4; // eax int _main_v5; // eax struct Concurrency::details::stl_condition_variable_win7 *cv@_Cnd_internal_imp_t@@QAEPAVstl_condition_variable_win7@detai_2; // eax _DWORD *_main_v8; // esi _DWORD *_main_v9; // eax int _main_v10; // eax void *_main_v11; // eax int _main_v12; // eax int _main_v13; // [esp-8h] [ebp-1F4h] struct Concurrency::details::stl_condition_variable_win7 *cv@_Cnd_internal_imp_t@@QAEPAVstl_condition_variable_win7@detai; // [esp-4h] [ebp-1F0h] struct Concurrency::details::stl_condition_variable_win7 *cv@_Cnd_internal_imp_t@@QAEPAVstl_condition_variable_win7@detai_1; // [esp-4h] [ebp-1F0h] _DWORD _main_v16[10]; // [esp+0h] [ebp-1ECh] BYREF _DWORD _main_v17[24]; // [esp+28h] [ebp-1C4h] BYREF _BYTE _main_v18[4]; // [esp+88h] [ebp-164h] BYREF _DWORD _main_v19[24]; // [esp+8Ch] [ebp-160h] BYREF _BYTE _main_v20[4]; // [esp+ECh] [ebp-100h] BYREF int _main_v21; // [esp+F0h] [ebp-FCh] int _main_v22; // [esp+F8h] [ebp-F4h] int _main_v23; // [esp+FCh] [ebp-F0h] int _main_v24; // [esp+100h] [ebp-ECh] char _main_v25; // [esp+104h] [ebp-E8h] BYREF char _main_v26; // [esp+105h] [ebp-E7h] BYREF char _main_v27; // [esp+106h] [ebp-E6h] BYREF _BYTE _main_v29[24]; // [esp+108h] [ebp-E4h] BYREF _BYTE _main_v30[24]; // [esp+120h] [ebp-CCh] BYREF _BYTE _main_v31[24]; // [esp+138h] [ebp-B4h] BYREF _BYTE _main_v32[24]; // [esp+150h] [ebp-9Ch] BYREF _BYTE _main_v33[24]; // [esp+168h] [ebp-84h] BYREF _BYTE _main_v34[24]; // [esp+180h] [ebp-6Ch] BYREF _BYTE _main_v35[12]; // [esp+198h] [ebp-54h] BYREF _BYTE _main_v36[12]; // [esp+1A4h] [ebp-48h] BYREF _BYTE _main_v37[12]; // [esp+1B0h] [ebp-3Ch] BYREF _BYTE _main_v38[12]; // [esp+1BCh] [ebp-30h] BYREF _DWORD _main_v39[6]; // [esp+1C8h] [ebp-24h] BYREF int n5; // [esp+1E8h] [ebp-4h] _main_v39[5] = _main_v16; /* Inline expansion of sub_4029B0 */ void *__thiscall sub_4029B0(void *this) { unsigned __int8 sub_4029B0_v3; // [esp+7h] [ebp-1h] /* Inline expansion of sub_403FB0 */ _Cnd_internal_imp_t *__thiscall sub_403FB0(_Cnd_internal_imp_t *this, int a2) { _Cnd_internal_imp_t::_get_cv(this); /* Inline expansion of sub_4046E0 */ _DWORD *__thiscall sub_4046E0(_DWORD *this) { /* Inline expansion of unknown_libname_18 */ /* [Max depth reached at unknown_libname_18] */ /* End inline unknown_libname_18 */ this[4] = 0; this[5] = 0; return this; } /* End inline sub_4046E0 */ return this; } /* End inline sub_403FB0 */ /* Inline expansion of unknown_libname_3 */ // Microsoft VisualC 14/net runtime void __stdcall unknown_libname_3(int a1) { ; } /* End inline unknown_libname_3 */ /* Inline expansion of sub_402D60 */ int __thiscall sub_402D60(_DWORD *this) { char sub_402D60_v2; // [esp+Bh] [ebp-1h] BYREF this[4] = 0; this[5] = 15; sub_402D60_v2 = 0; return unknown_libname_14(this, &sub_402D60_v2); } /* End inline sub_402D60 */ return this; } /* End inline sub_4029B0 */ n5 = 0; /* Inline expansion of memset_w */ void *__thiscall sub_402390(void *this, size_t Size) { return memset(this, 0, Size); } /* End inline memset_w */ _main_v19[0] = 104; _main_v19[1] = 84; _main_v19[2] = 153; _main_v19[3] = 98; _main_v19[4] = 66; _main_v19[5] = 2; _main_v19[6] = 232; _main_v19[7] = 140; _main_v19[8] = 178; _main_v19[9] = 151; _main_v19[10] = 10; _main_v19[11] = 173; _main_v19[12] = 154; _main_v19[13] = 51; _main_v19[14] = 86; _main_v19[15] = 18; _main_v19[16] = 79; _main_v19[17] = 66; _main_v19[18] = 197; _main_v19[19] = 202; _main_v19[20] = 63; _main_v19[21] = 184; _main_v19[22] = 60; _main_v19[23] = 146; cv@_Cnd_internal_imp_t@@QAEPAVstl_condition_variable_win7@detai = _Cnd_internal_imp_t::_get_cv((_Cnd_internal_imp_t *)&_main_v27); _main_v3 = (_DWORD *)unknown_libname_4(_main_v19, _main_v20); /* Inline expansion of sub_402450 */ const struct std::_Container_base0 *__thiscall sub_402450( const struct std::_Container_base0 *this, char a2, int a3, struct Concurrency::details::stl_condition_variable_win7 *cv@_Cnd_internal_imp_t@@QAEPAVstl_condition_variable_win7@detai) { int sub_402450_v4; // eax int sub_402450_v6; // [esp-8h] [ebp-1Ch] unsigned __int8 sub_402450_v7; // [esp+6h] [ebp-Eh] unsigned __int8 sub_402450_v8; // [esp+7h] [ebp-Dh] char sub_402450_v10; // [esp+Fh] [ebp-5h] BYREF /* Inline expansion of sub_403C90 */ void *__thiscall sub_403C90( void *this, int a2, struct Concurrency::details::stl_condition_variable_win7 *cv@_Cnd_internal_imp_t@@QAEPAVstl_condition_variable_win7@detai) { /* Inline expansion of unknown_libname_9 */ // Microsoft VisualC 14/net runtime int __cdecl unknown_libname_9(int a1) { return a1; } /* End inline unknown_libname_9 */ /* Inline expansion of sub_404610 */ _DWORD *__thiscall sub_404610(_DWORD *this) { *this = 0; this[1] = 0; this[2] = 0; return this; } /* End inline sub_404610 */ return this; } /* End inline sub_403C90 */ std::_Fake_proxy_ptr_impl::_Fake_proxy_ptr_impl( (std::_Fake_proxy_ptr_impl *)&sub_402450_v10, (const struct std::_Fake_allocator *)&unk_40725D, this); sub_402450_v6 = unknown_libname_6(&a2); sub_402450_v4 = unknown_libname_7(&a2); /* Inline expansion of sub_403CC0 */ int __thiscall sub_403CC0(_DWORD *this, int a2, int a3, int a4) { int sub_403CC0_v4; // eax int sub_403CC0_result; // eax _DWORD *sub_403CC0_v7; // [esp+10h] [ebp-14h] BYREF int sub_403CC0_v8; // [esp+20h] [ebp-4h] sub_403CC0_v4 = sub_404DE0(a2, a3); sub_403CC0_result = unknown_libname_9(sub_403CC0_v4); if ( sub_403CC0_result ) { /* Inline expansion of sub_404640 */ int __thiscall sub_404640(void *this, unsigned int a2) { if ( a2 > std::_Tree<std::_Tmap_traits<void *,`anonymous namespace'::_Mutex_count_pair,std::less<void *>,std::_Crt_allocator<std::pair<void * const,`anonymous namespace'::_Mutex_count_pair>>,0>>::max_size(this) ) /* Inline expansion of sub_404810 */ /* [Max depth reached at sub_404810] */ /* End inline sub_404810 */ return sub_404820(a2); } /* End inline sub_404640 */ sub_403CC0_v7 = this; sub_403CC0_v8 = 0; this[1] = sub_404DF0(a2, a3, *this); sub_403CC0_v7 = 0; sub_403CC0_v8 = -1; return sub_404420(&sub_403CC0_v7); } return sub_403CC0_result; } /* End inline sub_403CC0 */ /* Inline expansion of unknown_libname_2 */ // Microsoft VisualC 14/net runtime void unknown_libname_2() { ; } /* End inline unknown_libname_2 */ return this; } /* End inline sub_402450 */ LOBYTE(n5) = 1; /* Inline expansion of memset_w */ /* [Skipped recursive call to memset_w] */ /* End inline memset_w */ _main_v17[0] = 18; _main_v17[1] = 26; _main_v17[2] = 125; _main_v17[3] = 6; _main_v17[4] = 7; _main_v17[5] = 111; _main_v17[6] = 76; _main_v17[7] = 104; _main_v17[8] = 122; _main_v17[9] = 4; _main_v17[10] = 124; _main_v17[11] = 13; _main_v17[12] = 93; _main_v17[13] = 112; _main_v17[14] = 103; _main_v17[15] = 9; _main_v17[16] = 97; _main_v17[17] = 112; _main_v17[18] = 111; _main_v17[19] = 93; _main_v17[20] = 105; _main_v17[21] = 99; _main_v17[22] = 79; _main_v17[23] = 10; cv@_Cnd_internal_imp_t@@QAEPAVstl_condition_variable_win7@detai_1 = _Cnd_internal_imp_t::_get_cv((_Cnd_internal_imp_t *)&_main_v26); _main_v4 = (_DWORD *)unknown_libname_4(_main_v17, _main_v18); /* Inline expansion of sub_402450 */ /* [Skipped recursive call to sub_402450] */ /* End inline sub_402450 */ LOBYTE(n5) = 2; /* Inline expansion of sub_402870 */ _Cnd_internal_imp_t *__thiscall sub_402870(_Cnd_internal_imp_t *this, void *Src) { unsigned __int8 sub_402870_v3; // [esp+Bh] [ebp-19h] char sub_402870_v5; // [esp+13h] [ebp-11h] BYREF int sub_402870_v6; // [esp+20h] [ebp-4h] /* Inline expansion of sub_403FB0 */ /* [Skipped recursive call to sub_403FB0] */ /* End inline sub_403FB0 */ sub_402870_v6 = 0; std::_Fake_proxy_ptr_impl::_Fake_proxy_ptr_impl( (std::_Fake_proxy_ptr_impl *)&sub_402870_v5, (const struct std::_Fake_allocator *)&unk_40725D, this); /* Inline expansion of sub_402D60 */ /* [Skipped recursive call to sub_402D60] */ /* End inline sub_402D60 */ std::string::assign(Src); /* Inline expansion of unknown_libname_2 */ /* [Skipped recursive call to unknown_libname_2] */ /* End inline unknown_libname_2 */ return this; } /* End inline sub_402870 */ LOBYTE(n5) = 3; /* Inline expansion of sub_4038F0 */ int __cdecl sub_4038F0(int a1, int a2) { __int64 sub_4038F0_v2; // rax _DWORD sub_4038F0_v4[4]; // [esp+0h] [ebp-90h] BYREF __int64 sub_4038F0_v5; // [esp+10h] [ebp-80h] __int64 sub_4038F0_v6; // [esp+18h] [ebp-78h] __int64 sub_4038F0_v7; // [esp+20h] [ebp-70h] int sub_4038F0_v8; // [esp+28h] [ebp-68h] int sub_4038F0_v9; // [esp+2Ch] [ebp-64h] BYREF int sub_4038F0_v10; // [esp+30h] [ebp-60h] BYREF int sub_4038F0_v11; // [esp+34h] [ebp-5Ch] int sub_4038F0_v12; // [esp+38h] [ebp-58h] int sub_4038F0_v13; // [esp+3Ch] [ebp-54h] int sub_4038F0_v14; // [esp+40h] [ebp-50h] BYREF int sub_4038F0_v15; // [esp+44h] [ebp-4Ch] BYREF int sub_4038F0_v16; // [esp+48h] [ebp-48h] int sub_4038F0_v17; // [esp+4Ch] [ebp-44h] int sub_4038F0_v18; // [esp+50h] [ebp-40h] __int64 sub_4038F0_v19; // [esp+54h] [ebp-3Ch] __int64 sub_4038F0_v20; // [esp+5Ch] [ebp-34h] __int64 sub_4038F0_v21; // [esp+64h] [ebp-2Ch] unsigned __int8 sub_4038F0_v22; // [esp+6Eh] [ebp-22h] unsigned __int8 sub_4038F0_v23; // [esp+6Fh] [ebp-21h] int sub_4038F0_v24; // [esp+70h] [ebp-20h] _BYTE sub_4038F0_v25[8]; // [esp+74h] [ebp-1Ch] BYREF _DWORD *sub_4038F0_v26; // [esp+80h] [ebp-10h] int sub_4038F0_v27; // [esp+8Ch] [ebp-4h] sub_4038F0_v26 = sub_4038F0_v4; sub_4038F0_v24 = 0; sub_4038F0_v20 = (unsigned int)unknown_libname_11(a2); sub_4038F0_v7 = std::ios_base::width((std::ios_base *)(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1)); if ( sub_4038F0_v7 <= 0 || (sub_4038F0_v6 = std::ios_base::width((std::ios_base *)(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1)), sub_4038F0_v6 <= sub_4038F0_v20) ) { sub_4038F0_v19 = 0; } else { sub_4038F0_v2 = std::ios_base::width((std::ios_base *)(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1)); sub_4038F0_v19 = sub_4038F0_v2 - sub_4038F0_v20; } sub_4038F0_v21 = sub_4038F0_v19; /* Inline expansion of sub_4044E0 */ _BYTE *__thiscall sub_4044E0(_BYTE *this, int a2) { int sub_4044E0_v3; // [esp+4h] [ebp-14h] /* Inline expansion of sub_404780 */ void *__thiscall sub_404780(void *this, int a2) { int sub_404780_v4; // [esp+8h] [ebp-4h] *(_DWORD *)this = a2; sub_404780_v4 = std::ios::rdbuf(*(_DWORD *)(**(_DWORD **)this + 4) + *(_DWORD *)this); if ( sub_404780_v4 ) (*(void (__thiscall **)(int))(*(_DWORD *)sub_404780_v4 + 4))(sub_404780_v4); return this; } /* End inline sub_404780 */ if ( std::ios_base::good((std::ios_base *)(*(_DWORD *)(*(_DWORD *)a2 + 4) + a2)) ) { sub_4044E0_v3 = std::ios::tie(*(_DWORD *)(*(_DWORD *)a2 + 4) + a2); if ( sub_4044E0_v3 && sub_4044E0_v3 != a2 ) { std::ostream::flush(sub_4044E0_v3); this[4] = std::ios_base::good((std::ios_base *)(*(_DWORD *)(*(_DWORD *)a2 + 4) + a2)); } else { this[4] = 1; } } else { this[4] = 0; } return this; } /* End inline sub_4044E0 */ sub_4038F0_v27 = 0; if ( (unsigned __int8)unknown_libname_17(sub_4038F0_v25) ) { LOBYTE(sub_4038F0_v27) = 1; sub_4038F0_v18 = std::ios_base::flags((std::ios_base *)(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1)); if ( (sub_4038F0_v18 & 0x1C0) != 0x40 ) { while ( sub_4038F0_v21 > 0 ) { sub_4038F0_v23 = std::ios::fill(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1); sub_4038F0_v17 = std::ios::rdbuf(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1); sub_4038F0_v16 = std::streambuf::sputc(sub_4038F0_v17, sub_4038F0_v23); sub_4038F0_v15 = sub_4038F0_v16; sub_4038F0_v14 = std::numeric_limits<unsigned int>::max(); if ( (unsigned __int8)unknown_libname_10(&sub_4038F0_v14, &sub_4038F0_v15) ) { sub_4038F0_v24 |= 4u; break; } --sub_4038F0_v21; } } if ( !sub_4038F0_v24 ) { sub_4038F0_v13 = std::ios::rdbuf(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1); sub_4038F0_v5 = std::streambuf::sputn(sub_4038F0_v13, a2, sub_4038F0_v20, HIDWORD(sub_4038F0_v20)); if ( sub_4038F0_v5 != sub_4038F0_v20 ) sub_4038F0_v24 |= 4u; } if ( !sub_4038F0_v24 ) { while ( sub_4038F0_v21 > 0 ) { sub_4038F0_v22 = std::ios::fill(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1); sub_4038F0_v12 = std::ios::rdbuf(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1); sub_4038F0_v11 = std::streambuf::sputc(sub_4038F0_v12, sub_4038F0_v22); sub_4038F0_v10 = sub_4038F0_v11; sub_4038F0_v9 = std::numeric_limits<unsigned int>::max(); if ( (unsigned __int8)unknown_libname_10(&sub_4038F0_v9, &sub_4038F0_v10) ) { sub_4038F0_v24 |= 4u; break; } --sub_4038F0_v21; } } std::ios_base::width((std::ios_base *)(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1), 0); sub_4038F0_v27 = 0; } else { sub_4038F0_v24 |= 4u; } std::ios::setstate(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1, sub_4038F0_v24, 0); sub_4038F0_v8 = a1; sub_4038F0_v27 = -1; /* Inline expansion of sub_404460 */ int __thiscall sub_404460(_DWORD *this) { if ( !std::uncaught_exception() ) std::ostream::_Osfx(*this); return sub_404710(this); } /* End inline sub_404460 */ return sub_4038F0_v8; } /* End inline sub_4038F0 */ /* Inline expansion of sub_403C30 */ int __cdecl sub_403C30(int ?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A, _BYTE *a2) { int sub_403C30_v2; // eax sub_403C30_v2 = unknown_libname_9(?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A); return sub_4049A0(sub_403C30_v2, a2); } /* End inline sub_403C30 */ if ( unknown_libname_5(_main_v34) == 24 ) { /* [Library call preserved: memset] */ memset(_main_v39, 0, 16); /* Inline expansion of memset_w */ /* [Skipped recursive call to memset_w] */ /* End inline memset_w */ cv@_Cnd_internal_imp_t@@QAEPAVstl_condition_variable_win7@detai_2 = _Cnd_internal_imp_t::_get_cv((_Cnd_internal_imp_t *)&_main_v25); /* Inline expansion of sub_402650 */ void *__thiscall sub_402650( void *this, int n6, struct Concurrency::details::stl_condition_variable_win7 *cv@_Cnd_internal_imp_t@@QAEPAVstl_condition_variable_win7@detai) { _BYTE sub_402650_v5[2]; // [esp+6h] [ebp-2h] BYREF /* Inline expansion of sub_403C90 */ /* [Skipped recursive call to sub_403C90] */ /* End inline sub_403C90 */ /* Inline expansion of sub_403E70 */ void __thiscall sub_403E70(const struct std::_Container_base0 *this, unsigned int n6, _BYTE *a3) { const struct std::_Container_base0 *sub_403E70_v5; // [esp+10h] [ebp-18h] BYREF char sub_403E70_v6; // [esp+17h] [ebp-11h] BYREF int sub_403E70_v7; // [esp+24h] [ebp-4h] std::_Fake_proxy_ptr_impl::_Fake_proxy_ptr_impl( (std::_Fake_proxy_ptr_impl *)&sub_403E70_v6, (const struct std::_Fake_allocator *)&unk_40725D, this); if ( n6 ) { /* Inline expansion of sub_404640 */ /* [Skipped recursive call to sub_404640] */ /* End inline sub_404640 */ sub_403E70_v5 = this; sub_403E70_v7 = 0; *((_DWORD *)this + 1) = sub_404680(*(_DWORD *)this, n6, (unsigned __int8)*a3); sub_403E70_v5 = 0; sub_403E70_v7 = -1; /* Inline expansion of sub_404420 */ _DWORD *__thiscall sub_404420(_DWORD *this) { _DWORD *sub_404420_result; // eax sub_404420_result = this; if ( *this ) return (_DWORD *)sub_402B30(this); return sub_404420_result; } /* End inline sub_404420 */ } /* Inline expansion of unknown_libname_2 */ /* [Skipped recursive call to unknown_libname_2] */ /* End inline unknown_libname_2 */ } /* End inline sub_403E70 */ return this; } /* End inline sub_402650 */ LOBYTE(n5) = 4; _main_v8 = (_DWORD *)sub_402610(_main_v38); _main_v9 = (_DWORD *)sub_4026E0(_main_v34); *_main_v8 = *_main_v9; _main_v8[1] = _main_v9[1]; _main_v8[2] = _main_v9[2]; _main_v8[3] = _main_v9[3]; _main_v8[4] = _main_v9[4]; _main_v8[5] = _main_v9[5]; _main_v13 = sub_402400(_main_v38); _main_v10 = sub_402610(_main_v38); /* Inline expansion of sub_401600 */ int __cdecl sub_401600(int *a1, int a2, int a3) { int sub_401600_v3; // ecx int sub_401600_v4; // eax int sub_401600_v5; // edx int sub_401600_result; // eax int sub_401600_v7; // ecx int sub_401600_v8; // edx int sub_401600_v9; // [esp+18h] [ebp-18h] int sub_401600_v10; // [esp+18h] [ebp-18h] int sub_401600_v11; // [esp+1Ch] [ebp-14h] unsigned int sub_401600_v12; // [esp+20h] [ebp-10h] unsigned int sub_401600_v13; // [esp+20h] [ebp-10h] unsigned int sub_401600_v14; // [esp+24h] [ebp-Ch] unsigned int sub_401600_v15; // [esp+28h] [ebp-8h] unsigned int j; // [esp+2Ch] [ebp-4h] int i; // [esp+2Ch] [ebp-4h] int sub_401600_v18; // [esp+3Ch] [ebp+Ch] if ( a2 <= 1 ) { if ( a2 < -1 ) { sub_401600_v18 = -a2; sub_401600_v13 = -1640531527 * (52 / sub_401600_v18 + 6); sub_401600_v14 = *a1; do { sub_401600_v10 = (sub_401600_v13 >> 2) & 3; for ( i = sub_401600_v18 - 1; i; --i ) { sub_401600_v7 = a1[i] - (((a1[i - 1] ^ *(_DWORD *)(a3 + 4 * (sub_401600_v10 ^ i & 3))) + (sub_401600_v14 ^ sub_401600_v13)) ^ (((16 * a1[i - 1]) ^ (sub_401600_v14 >> 3)) + ((4 * sub_401600_v14) ^ ((unsigned int)a1[i - 1] >> 5)))); a1[i] = sub_401600_v7; sub_401600_v14 = sub_401600_v7; } sub_401600_v8 = *a1 - (((a1[sub_401600_v18 - 1] ^ *(_DWORD *)(a3 + 4 * sub_401600_v10)) + (sub_401600_v14 ^ sub_401600_v13)) ^ (((16 * a1[sub_401600_v18 - 1]) ^ (sub_401600_v14 >> 3)) + ((4 * sub_401600_v14) ^ ((unsigned int)a1[sub_401600_v18 - 1] >> 5)))); *a1 = sub_401600_v8; sub_401600_result = sub_401600_v8; sub_401600_v14 = sub_401600_v8; sub_401600_v13 += 1640531527; } while ( sub_401600_v13 ); } } else { sub_401600_v11 = 52 / a2 + 6; sub_401600_v12 = 0; sub_401600_v15 = a1[a2 - 1]; do { sub_401600_v12 -= 1640531527; sub_401600_v9 = (sub_401600_v12 >> 2) & 3; for ( j = 0; j < a2 - 1; ++j ) { sub_401600_v3 = ((sub_401600_v15 ^ *(_DWORD *)(a3 + 4 * (sub_401600_v9 ^ j & 3))) + (a1[j + 1] ^ sub_401600_v12)) ^ (((16 * sub_401600_v15) ^ ((unsigned int)a1[j + 1] >> 3)) + ((4 * a1[j + 1]) ^ (sub_401600_v15 >> 5))); sub_401600_v4 = a1[j]; a1[j] = sub_401600_v3 + sub_401600_v4; sub_401600_v15 = sub_401600_v3 + sub_401600_v4; } sub_401600_v5 = (((sub_401600_v15 ^ *(_DWORD *)(a3 + 4 * (sub_401600_v9 ^ j & 3))) + (*a1 ^ sub_401600_v12)) ^ (((16 * sub_401600_v15) ^ ((unsigned int)*a1 >> 3)) + ((4 * *a1) ^ (sub_401600_v15 >> 5)))) + a1[a2 - 1]; a1[a2 - 1] = sub_401600_v5; sub_401600_result = sub_401600_v5; sub_401600_v15 = sub_401600_v5; --sub_401600_v11; } while ( sub_401600_v11 ); } return sub_401600_result; } /* End inline sub_401600 */ _main_v11 = (void *)sub_402610(_main_v38); /* Inline expansion of sub_402910 */ _Cnd_internal_imp_t *__thiscall sub_402910(_Cnd_internal_imp_t *this, void *Src, size_t Size) { unsigned __int8 sub_402910_v4; // [esp+Bh] [ebp-19h] char sub_402910_v6; // [esp+13h] [ebp-11h] BYREF int sub_402910_v7; // [esp+20h] [ebp-4h] /* Inline expansion of sub_403FB0 */ /* [Skipped recursive call to sub_403FB0] */ /* End inline sub_403FB0 */ sub_402910_v7 = 0; std::_Fake_proxy_ptr_impl::_Fake_proxy_ptr_impl( (std::_Fake_proxy_ptr_impl *)&sub_402910_v6, (const struct std::_Fake_allocator *)&unk_40725D, this); /* Inline expansion of sub_402D60 */ /* [Skipped recursive call to sub_402D60] */ /* End inline sub_402D60 */ std::string::assign(Src, Size); /* Inline expansion of unknown_libname_2 */ /* [Skipped recursive call to unknown_libname_2] */ /* End inline unknown_libname_2 */ return this; } /* End inline sub_402910 */ LOBYTE(n5) = 5; /* Inline expansion of sub_401BA0 */ int __cdecl sub_401BA0(int a1, int a2) { _BYTE sub_401BA0_v3[24]; // [esp+4h] [ebp-7Ch] BYREF int sub_401BA0_v4[7]; // [esp+1Ch] [ebp-64h] BYREF int sub_401BA0_v5; // [esp+38h] [ebp-48h] int sub_401BA0_v6; // [esp+3Ch] [ebp-44h] int sub_401BA0_v7; // [esp+40h] [ebp-40h] int sub_401BA0_v8; // [esp+44h] [ebp-3Ch] int sub_401BA0_v9; // [esp+48h] [ebp-38h] int sub_401BA0_v10; // [esp+4Ch] [ebp-34h] unsigned __int8 *sub_401BA0_v11; // [esp+50h] [ebp-30h] unsigned __int8 sub_401BA0_v12; // [esp+57h] [ebp-29h] _BYTE sub_401BA0_v13[24]; // [esp+58h] [ebp-28h] BYREF int sub_401BA0_v14; // [esp+7Ch] [ebp-4h] sub_401BA0_v9 = 0; /* Inline expansion of sub_4029B0 */ /* [Skipped recursive call to sub_4029B0] */ /* End inline sub_4029B0 */ sub_401BA0_v14 = 0; sub_401BA0_v10 = a2; sub_401BA0_v11 = (unsigned __int8 *)sub_4026E0(a2); sub_401BA0_v8 = sub_402720(a2); while ( sub_401BA0_v11 != (unsigned __int8 *)sub_401BA0_v8 ) { sub_401BA0_v12 = *sub_401BA0_v11; sub_401BA0_v7 = sub_401590(sub_401BA0_v3, sub_401BA0_v12); sub_401BA0_v6 = sub_401BA0_v7; LOBYTE(sub_401BA0_v14) = 1; sub_401BA0_v5 = sub_4038B0((int)sub_401BA0_v4, sub_401BA0_v7, " "); sub_401BA0_v4[6] = sub_401BA0_v5; LOBYTE(sub_401BA0_v14) = 2; /* Inline expansion of sub_4027A0 */ int __stdcall sub_4027A0(int a1) { return sub_402770(a1); } /* End inline sub_4027A0 */ LOBYTE(sub_401BA0_v14) = 1; std::string::~string(sub_401BA0_v4); LOBYTE(sub_401BA0_v14) = 0; std::string::~string(sub_401BA0_v3); ++sub_401BA0_v11; } /* Inline expansion of sub_402820 */ int __thiscall sub_402820(void *this, int a2) { int sub_402820_v2; // eax int sub_402820_v3; // eax int sub_402820_v5; // [esp+0h] [ebp-8h] unsigned __int8 sub_402820_v6; // [esp+7h] [ebp-1h] sub_402820_v2 = sub_402C80(a2, this); sub_402820_v3 = unknown_libname_9(sub_402820_v2); /* Inline expansion of sub_403F80 */ _DWORD *__thiscall sub_403F80(_DWORD *this, int a2, int a3) { /* Inline expansion of unknown_libname_9 */ /* [Skipped recursive call to unknown_libname_9] */ /* End inline unknown_libname_9 */ /* Inline expansion of sub_4046E0 */ /* [Skipped recursive call to sub_4046E0] */ /* End inline sub_4046E0 */ return this; } /* End inline sub_403F80 */ /* Inline expansion of unknown_libname_3 */ /* [Skipped recursive call to unknown_libname_3] */ /* End inline unknown_libname_3 */ /* Inline expansion of sub_4031F0 */ int __stdcall sub_4031F0(_DWORD *a1) { /* Inline expansion of sub_403530 */ /* [Max depth reached at sub_403530] */ /* End inline sub_403530 */ return sub_402D60(a1); } /* End inline sub_4031F0 */ return sub_402820_v5; } /* End inline sub_402820 */ sub_401BA0_v9 |= 1u; sub_401BA0_v14 = -1; std::string::~string(sub_401BA0_v13); return a1; } /* End inline sub_401BA0 */ LOBYTE(n5) = 6; if ( (unsigned __int8)sub_401CC0(_main_v32, _main_v36) ) _main_v12 = sub_4038F0(std::cout, "You find flag?"); else _main_v12 = sub_4038F0(std::cout, "Wrong!"); std::ostream::operator<<(_main_v12); LOBYTE(n5) = 7; /* Inline expansion of memset_w */ /* [Skipped recursive call to memset_w] */ /* End inline memset_w */ /* Inline expansion of sub_402690 */ void *__thiscall sub_402690(void *this) { unsigned __int8 sub_402690_v3; // [esp+7h] [ebp-1h] /* Inline expansion of sub_403F30 */ _Cnd_internal_imp_t *__thiscall sub_403F30(_Cnd_internal_imp_t *this, int a2) { _Cnd_internal_imp_t::_get_cv(this); /* Inline expansion of sub_404610 */ /* [Skipped recursive call to sub_404610] */ /* End inline sub_404610 */ return this; } /* End inline sub_403F30 */ /* Inline expansion of unknown_libname_3 */ /* [Skipped recursive call to unknown_libname_3] */ /* End inline unknown_libname_3 */ return this; } /* End inline sub_402690 */ LOBYTE(n5) = 8; _main_v16[9] = sub_4018B0(_main_v33, _main_v34, _main_v31, _main_v35); LOBYTE(n5) = 9; _main_v16[8] = sub_401BA0(_main_v30, _main_v33); LOBYTE(n5) = 10; if ( (unsigned __int8)sub_401CC0(_main_v33, _main_v37) ) { _main_v23 = sub_4038F0(std::cout, "You find flag!"); std::ostream::operator<<(_main_v23); } else { _main_v22 = sub_4038F0(std::cout, "Wrong!"); std::ostream::operator<<(_main_v22); } LOBYTE(n5) = 9; std::string::~string(_main_v30); LOBYTE(n5) = 8; std::string::~string(_main_v33); LOBYTE(n5) = 7; /* Inline expansion of sub_402430 */ int __thiscall sub_402430(void *this) { return sub_402B30(this); } /* End inline sub_402430 */ n5 = 5; _main_v21 = 0; std::string::~string(_main_v29); LOBYTE(n5) = 4; std::string::~string(_main_v32); LOBYTE(n5) = 3; /* Inline expansion of sub_402430 */ /* [Skipped recursive call to sub_402430] */ /* End inline sub_402430 */ LOBYTE(n5) = 2; std::string::~string(_main_v31); LOBYTE(n5) = 1; /* Inline expansion of sub_402430 */ /* [Skipped recursive call to sub_402430] */ /* End inline sub_402430 */ LOBYTE(n5) = 0; /* Inline expansion of sub_402430 */ /* [Skipped recursive call to sub_402430] */ /* End inline sub_402430 */ n5 = -1; std::string::~string(_main_v34); return _main_v21; } else { _main_v5 = sub_4038F0(std::cerr, "The entered string length is not 24!"); std::ostream::operator<<(_main_v5); _main_v24 = -1; LOBYTE(n5) = 2; std::string::~string(_main_v31); LOBYTE(n5) = 1; /* Inline expansion of sub_402430 */ /* [Skipped recursive call to sub_402430] */ /* End inline sub_402430 */ LOBYTE(n5) = 0; /* Inline expansion of sub_402430 */ /* [Skipped recursive call to sub_402430] */ /* End inline sub_402430 */ n5 = -1; std::string::~string(_main_v34); return _main_v24; } }分析代码的作用与主要功能,列出关键变量与函数
最新发布
09-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值