刚学,纯粹是菜鸟一只。拿到一个安装程序MMSETUP,运行该程序拆包。发现它在当前用户的临时文件夹内释放出以下文件:setup.exe,setup.zip,chinese.dat,setup.ini。查setup.exe无壳,使用vc++写的。运行后,出现安装界面,跳出对话框。要求输入安装密码(只有密码,没有用户名)。随便输入任何东西,按确定,跳出错误框,“抱歉,密码不正确。请重试。”。
用OD调用该程序,查找参考字符串,除了乱码外没有中文字符,后在chinese.dat中找到以下字符 [PASSWORD_DIALOG]
Dialog_Title=安装密码
Static1=请输入安装密码:
OK=确定(&O)
Exit=退出(&X)
Error_Title=错误
Error_Static1=抱歉,密码不正确。请 重试。
在OD中查找参考字符串"Error_Static1",得到如下:
004239D1 8B8D 48FDFFFF mov ecx,dword ptr ss:[ebp-2B8]
004239D7 E8 20140000 call setup.00424DFC
004239DC 8B95 F8FDFFFF mov edx,dword ptr ss:[ebp-208]
004239E2 81E2 FF000000 and edx,0FF
004239E8 85D2 test edx,edx
004239EA 0F84 9C000000 je setup.00423A8C
004239F0 68 F8D34500 push setup.0045D3F8 ; ASCII "PasswordTitle"
004239F5 68 08D44500 push setup.0045D408 ; ASCII "Dialog_Title"
004239FA 68 18D44500 push setup.0045D418 ; ASCII "PASSWORD_DIALOG"
004239FF 8B8D 48FDFFFF mov ecx,dword ptr ss:[ebp-2B8]
00423A05 E8 AC140000 call setup.00424EB6
00423A0A 68 28D44500 push setup.0045D428 ; ASCII "PasswordText1"
00423A0F 68 38D44500 push setup.0045D438 ; ASCII "Static1"
00423A14 68 40D44500 push setup.0045D440 ; ASCII "PASSWORD_DIALOG"
00423A19 8B8D 48FDFFFF mov ecx,dword ptr ss:[ebp-2B8]
00423A1F E8 92140000 call setup.00424EB6
00423A24 68 50D44500 push setup.0045D450 ; ASCII "PasswordOK"
00423A29 68 5CD44500 push setup.0045D45C ; ASCII "OK"
00423A2E 68 60D44500 push setup.0045D460 ; ASCII "PASSWORD_DIALOG"
00423A33 8B8D 48FDFFFF mov ecx,dword ptr ss:[ebp-2B8]
00423A39 E8 78140000 call setup.00424EB6
00423A3E 68 70D44500 push setup.0045D470 ; ASCII "PasswordExit"
00423A43 68 80D44500 push setup.0045D480 ; ASCII "Exit"
00423A48 68 88D44500 push setup.0045D488 ; ASCII "PASSWORD_DIALOG"
00423A4D 8B8D 48FDFFFF mov ecx,dword ptr ss:[ebp-2B8]
00423A53 E8 5E140000 call setup.00424EB6
00423A58 68 98D44500 push setup.0045D498 ; ASCII "IncorrectPasswordTitle"
00423A5D 68 B0D44500 push setup.0045D4B0 ; ASCII "Error_Title"
00423A62 68 BCD44500 push setup.0045D4BC ; ASCII "PASSWORD_DIALOG"
00423A67 8B8D 48FDFFFF mov ecx,dword ptr ss:[ebp-2B8]
00423A6D E8 44140000 call setup.00424EB6
00423A72 68 CCD44500 push setup.0045D4CC ; ASCII "IncorrectPassword"
00423A77 68 E0D44500 push setup.0045D4E0 ; ASCII "Error_Static1"
00423A7C 68 F0D44500 push setup.0045D4F0 ; ASCII "PASSWORD_DIALOG"
00423A81 8B8D 48FDFFFF mov ecx,dword ptr ss:[ebp-2B8]
00423A87 E8 2A140000 call setup.00424EB6
00423A8C 68 00D54500 push setup.0045D500 ; ASCII "DlgLanguageDialog"
00423A91 8B8D 48FDFFFF mov ecx,dword ptr ss:[ebp-2B8]
00423A97 E8 E406FEFF call setup.00404180
00423A9C 25 FF000000 and eax,0FF
00423AA1 85C0 test eax,eax
00423AA3 74 6F je short setup.00423B14
00423AA5 C685 E8FDFFFF 01 mov byte ptr ss:[ebp-218],1
00423AAC 68 14D54500 push setup.0045D514 ; ASCII "LanguageTitle"
00423AB1 68 24D54500 push setup.0045D524 ; ASCII "Dialog_Title"
00423AB6 68 34D54500 push setup.0045D534 ; ASCII "LANGUAGE_DIALOG"
我查了一下,没有调用getdlgitemtexta,所以也无法用它下断,想请教一下,能不能给我个思路呢?我知道我提供的东西可能是不够全面,我不知道关键跳在哪里?是在setup.00424eb6这个子函数里呢?还有像这种会是明码比较吗?如果不是,那一般会用什么算法呢?我在把setup.00424eb6贴在下面:
00424EB6 55 push ebp
00424EB7 8BEC mov ebp,esp
00424EB9 6A FF push -1
00424EBB 68 E5D94400 push setup.0044D9E5
00424EC0 64:A1 00000000 mov eax,dword ptr fs:[0]
00424EC6 50 push eax
00424EC7 64:8925 00000000 mov dword ptr fs:[0],esp
00424ECE 83EC 24 sub esp,24
00424ED1 894D D4 mov dword ptr ss:[ebp-2C],ecx
00424ED4 8D45 E0 lea eax,dword ptr ss:[ebp-20]
00424ED7 50 push eax
00424ED8 8D4D E4 lea ecx,dword ptr ss:[ebp-1C]
00424EDB E8 70F9FDFF call setup.00404850
00424EE0 C745 FC 00000000 mov dword ptr ss:[ebp-4],0
00424EE7 68 90504600 push setup.00465090
00424EEC 8B4D 0C mov ecx,dword ptr ss:[ebp+C]
00424EEF 51 push ecx
00424EF0 8B55 08 mov edx,dword ptr ss:[ebp+8]
00424EF3 52 push edx
00424EF4 8D45 E4 lea eax,dword ptr ss:[ebp-1C]
00424EF7 50 push eax
00424EF8 8B4D D4 mov ecx,dword ptr ss:[ebp-2C]
00424EFB 8B49 08 mov ecx,dword ptr ds:[ecx+8]
00424EFE E8 2E42FEFF call setup.00409131
00424F03 8D4D E4 lea ecx,dword ptr ss:[ebp-1C]
00424F06 E8 A5ADFEFF call setup.0040FCB0
00424F0B 85C0 test eax,eax
00424F0D 76 34 jbe short setup.00424F43
00424F0F 837D 10 00 cmp dword ptr ss:[ebp+10],0
00424F13 75 08 jnz short setup.00424F1D
00424F15 8B55 0C mov edx,dword ptr ss:[ebp+C]
00424F18 8955 D0 mov dword ptr ss:[ebp-30],edx
00424F1B EB 06 jmp short setup.00424F23
00424F1D 8B45 10 mov eax,dword ptr ss:[ebp+10]
00424F20 8945 D0 mov dword ptr ss:[ebp-30],eax
00424F23 8B4D D0 mov ecx,dword ptr ss:[ebp-30]
00424F26 894D DC mov dword ptr ss:[ebp-24],ecx
00424F29 8D55 E4 lea edx,dword ptr ss:[ebp-1C]
00424F2C 52 push edx
00424F2D 8D45 DC lea eax,dword ptr ss:[ebp-24]
00424F30 50 push eax
00424F31 8B4D D4 mov ecx,dword ptr ss:[ebp-2C]
00424F34 83C1 10 add ecx,10
00424F37 E8 74FBFDFF call setup.00404AB0
00424F3C 8BC8 mov ecx,eax
00424F3E E8 9DF9FDFF call setup.004048E0
00424F43 8D4D E4 lea ecx,dword ptr ss:[ebp-1C]
00424F46 E8 65ADFEFF call setup.0040FCB0
00424F4B 8945 D8 mov dword ptr ss:[ebp-28],eax
00424F4E C745 FC FFFFFFFF mov dword ptr ss:[ebp-4],-1
00424F55 8D4D E4 lea ecx,dword ptr ss:[ebp-1C]
00424F58 E8 63F9FDFF call setup.004048C0
00424F5D 8B45 D8 mov eax,dword ptr ss:[ebp-28]
00424F60 8B4D F4 mov ecx,dword ptr ss:[ebp-C]
00424F63 64:890D 00000000 mov dword ptr fs:[0],ecx
00424F6A 8BE5 mov esp,ebp
00424F6C 5D pop ebp
00424F6D C2 0C00 retn 0C
谢谢各位,这可是我第一次尝试破解,各位高人给点建议,好让我有信心!谢谢
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)