刚开始学VC++,写了一个登录对话框,代码是:
if(m_username == "admin" && m_pwd == "123456")
MessageBox("Right");
else
{
MessageBox("Wrong");
m_username == "";
m_pwd == "";
}
然后用OD加载生成的程序,却是这样:
00401D50 /> \55 push ebp
00401D51 |. 8BEC mov ebp, esp
00401D53 |. 83EC 44 sub esp, 44
00401D56 |. 53 push ebx
00401D57 |. 56 push esi
00401D58 |. 57 push edi
00401D59 |. 51 push ecx
00401D5A |. 8D7D BC lea edi, dword ptr [ebp-44]
00401D5D |. B9 11000000 mov ecx, 11
00401D62 |. B8 CCCCCCCC mov eax, CCCCCCCC
00401D67 |. F3:AB rep stos dword ptr es:[edi]
00401D69 |. 59 pop ecx
00401D6A |. 894D FC mov dword ptr [ebp-4], ecx
00401D6D |. 6A 01 push 1
00401D6F |. 8B4D FC mov ecx, dword ptr [ebp-4]
00401D72 |. E8 57030000 call <jmp.&MFC42D.#5056>
00401D77 |. 68 F0534100 push 004153F0 ; ASCII "admin"
00401D7C |. 8B45 FC mov eax, dword ptr [ebp-4]
00401D7F |. 83C0 60 add eax, 60
00401D82 |. 50 push eax
00401D83 |. E8 40030000 call <jmp.&MFC42D.#813>
00401D88 |. 25 FF000000 and eax, 0FF
00401D8D |. 85C0 test eax, eax
00401D8F |. 74 2D je short 00401DBE ; 跳到WRONG
有点看不懂,为什么他没对比用户名只通过标志位就跳到了WRONG呢?
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法