首页
论坛
课程
招聘
[原创]第三题分析
2017-10-29 01:03 1048

[原创]第三题分析

htg 活跃值
2
2017-10-29 01:03
1048
一、工具:OD
二、思路:
(1)在函数.GetDlgItemTextA处下断点;
(2)查看代码:会发现有一处是OK,初步判断是注册成功处的地址,此时就处理断点处代码至成功处的代码,关键看CALL或JMP、JNZ等指令
(3)经梳理发现,如下几处必须NOP掉:

001A51D4;001A51D6;001A51E7;001A51F5;

(4)经过上述处理后,才能正常访问到正确代码:001A51F7

(5)反复查看代码,发现在如下代码处,有明确的长串字符串出现,初步判断是正确注册码,经过测试不同的注册码输入,该值不变,从而基本判断该处值应为注册码。

单独运行程序,发现注册成功。

001A5191 . 50 push eax 

001A5192 . E8 FD85FFFF call crackMe.0019D794 

001A5197 . 83C4 04 add esp,0x4

 001A519A . 50 push eax


三、具体操作过程:

不知为啥,图片无法嵌入到页面内,可以通过附件的图片和代码文件来查阅具体的操作过程,图片的编号与下面的操作步骤顺序号相同,另贴出关键的代码

(1)用OD加载程序crackMe,运行,出现程序窗口,先不运行

(2) 查找函数,GetDlgItemTextA

(3) 在每个函数处下断点

(4) 查看所有断点设置

(5) 切换到主窗口界面

(6) 输入注册码、点击验证序列号

(7) 程序停留在函数断点处,仔细查阅前后代码

(8) 初步判断程序判断注册码正确弹出的信息OK

(9) 循环代码关键JMP,在其后,下断点。

(10) 运行到中断处,在下一条语句处,出现一长串字符,初步判断为注册码

EAX 0012DFAC ASCII "183920f00e15a0433ee3a8fc90dd9ac164c4142ccf63ca189a8f645ec96ff8de" ECX 0012DD9C EDX 0012DD9C EBX 00000000 ESP 0012DDDC EBP 0012F828 ESI 0012DDDC EDI 0012F828

(11) 灰色代码NOP掉,就可以出现OK信息


关键代码:

011F5076 . FF15 70F52501 call dword ptr ds:[<&USER32.GetDlgItemTextA>] ; \GetDlgItemTextA 011F507C . 3BF4 cmp esi,esp 011F507E . E8 CE8DFFFF call crackMe.011EDE51 ; 关键CALL 011F5083 . 8985 E0FBFFFF mov dword ptr ss:[ebp-0x420],eax 011F5089 . C685 C8EFFFFF>mov byte ptr ss:[ebp-0x1038],0x0 011F5090 . 68 FF030000 push 0x3FF 011F5095 . 6A 00 push 0x0 011F5097 . 8D85 C9EFFFFF lea eax,dword ptr ss:[ebp-0x1037] 011F509D . 50 push eax 011F509E . E8 4385FFFF call crackMe.011ED5E6 011F50A3 . 83C4 0C add esp,0xC 011F50A6 . 8D85 D0F3FFFF lea eax,dword ptr ss:[ebp-0xC30] 011F50AC . 50 push eax 011F50AD . 68 00040000 push 0x400 011F50B2 . 8D8D D8F7FFFF lea ecx,dword ptr ss:[ebp-0x828] 011F50B8 . 51 push ecx 011F50B9 . E8 A981FFFF call crackMe.011ED267 011F50BE . 83C4 0C add esp,0xC 011F50C1 . C685 C0EBFFFF>mov byte ptr ss:[ebp-0x1440],0x0 011F50C8 . 68 FF030000 push 0x3FF 011F50CD . 6A 00 push 0x0 011F50CF . 8D85 C1EBFFFF lea eax,dword ptr ss:[ebp-0x143F] 011F50D5 . 50 push eax 011F50D6 . E8 0B85FFFF call crackMe.011ED5E6 011F50DB . 83C4 0C add esp,0xC 011F50DE . 8D85 C8EFFFFF lea eax,dword ptr ss:[ebp-0x1038] 011F50E4 . 50 push eax 011F50E5 . 68 00040000 push 0x400 011F50EA . 8D8D D0F3FFFF lea ecx,dword ptr ss:[ebp-0xC30] 011F50F0 . 51 push ecx 011F50F1 . E8 7181FFFF call crackMe.011ED267 011F50F6 . 83C4 0C add esp,0xC 011F50F9 . 68 00040000 push 0x400 011F50FE . 8D85 C0EBFFFF lea eax,dword ptr ss:[ebp-0x1440] 011F5104 . 50 push eax 011F5105 . 8D8D C8EFFFFF lea ecx,dword ptr ss:[ebp-0x1038] 011F510B . 51 push ecx 011F510C . E8 5988FFFF call crackMe.011ED96A 011F5111 . 83C4 0C add esp,0xC 011F5114 . C785 B4EBFFFF>mov dword ptr ss:[ebp-0x144C],0x3 011F511E . 8D85 8CEBFFFF lea eax,dword ptr ss:[ebp-0x1474] 011F5124 . 50 push eax 011F5125 . 8B8D B4EBFFFF mov ecx,dword ptr ss:[ebp-0x144C] 011F512B . 51 push ecx 011F512C . 8D95 C8EFFFFF lea edx,dword ptr ss:[ebp-0x1038] 011F5132 . 52 push edx 011F5133 > E8 4089FFFF call crackMe.011EDA78 ; 关键CALL 需要跟进 011F5138 . 83C4 0C add esp,0xC 011F513B . C785 78E7FFFF>mov dword ptr ss:[ebp-0x1888],0x0 011F5145 . EB 0F jmp short crackMe.011F5156 011F5147 > 8B85 78E7FFFF mov eax,dword ptr ss:[ebp-0x1888] 011F514D . 83C0 01 add eax,0x1 011F5150 . 8985 78E7FFFF mov dword ptr ss:[ebp-0x1888],eax 011F5156 > 83BD 78E7FFFF>cmp dword ptr ss:[ebp-0x1888],0x20 ; 此时,如果大于等于0x20,则进行跳转 011F515D 7D 2C jge short crackMe.011F518B 011F515F . 8B85 78E7FFFF mov eax,dword ptr ss:[ebp-0x1888] 011F5165 . 0FB68C05 8CEB>movzx ecx,byte ptr ss:[ebp+eax-0x1474] 011F516D . 51 push ecx 011F516E . 68 A4B12401 push crackMe.0124B1A4 ; ASCII "%02x" 011F5173 . 8B95 78E7FFFF mov edx,dword ptr ss:[ebp-0x1888] 011F5179 . 8D8455 84E7FF>lea eax,dword ptr ss:[ebp+edx*2-0x187C] 011F5180 . 50 push eax 011F5181 . E8 7F8DFFFF call crackMe.011EDF05 011F5186 . 83C4 0C add esp,0xC 011F5189 .^ EB BC jmp short crackMe.011F5147 011F518B > 8D85 84E7FFFF lea eax,dword ptr ss:[ebp-0x187C] 011F5191 . 50 push eax 011F5192 . E8 FD85FFFF call crackMe.011ED794 011F5197 . 83C4 04 add esp,0x4 011F519A . 50 push eax 011F519B . 8D8D D8F7FFFF lea ecx,dword ptr ss:[ebp-0x828] 011F51A1 . 51 push ecx 011F51A2 . E8 ED85FFFF call crackMe.011ED794 011F51A7 . 83C4 04 add esp,0x4 011F51AA . 8DB405 D8F7FF>lea esi,dword ptr ss:[ebp+eax-0x828] 011F51B1 . 8D95 84E7FFFF lea edx,dword ptr ss:[ebp-0x187C] 011F51B7 . 52 push edx 011F51B8 . E8 D785FFFF call crackMe.011ED794 011F51BD . 83C4 04 add esp,0x4 011F51C0 . 2BF0 sub esi,eax 011F51C2 . 56 push esi 011F51C3 . 8D85 84E7FFFF lea eax,dword ptr ss:[ebp-0x187C] 011F51C9 . 50 push eax 011F51CA . E8 5889FFFF call crackMe.011EDB27 011F51CF . 83C4 0C add esp,0xC 011F51D2 . 85C0 test eax,eax ; eax必须等于0,才能不跳转出错 011F51D4 75 3E jnz short crackMe.011F5214 011F51D6 E8 D97EFFFF call crackMe.011ED0B4 ; 注释掉,该call存在问题 011F51DB . 8D85 C0EBFFFF lea eax,dword ptr ss:[ebp-0x1440] 011F51E1 . 50 push eax 011F51E2 . 68 00B02501 push crackMe.0125B000 011F51E7 E8 BF87FFFF call crackMe.011ED9AB ; 注释掉,该CALL存在问题 011F51EC . 83C4 08 add esp,0x8 011F51EF . 0FB6C8 movzx ecx,al 011F51F2 . 83F9 01 cmp ecx,0x1 011F51F5 75 1D jnz short crackMe.011F5214 ; 不能跳转 011F51F7 . 8BF4 mov esi,esp ; 此时会正常显示 011F51F9 . 6A 00 push 0x0 ; /Style = MB_OK|MB_APPLMODAL 011F51FB . 68 98B12401 push crackMe.0124B198 ; |Title = "CrackMe" 011F5200 . 68 94B12401 push crackMe.0124B194 ; |Text = "ok" 011F5205 . 6A 00 push 0x0 ; |hOwner = NULL 011F5207 . FF15 88F52501 call dword ptr ds:[<&USER32.MessageBoxA>] ; \MessageBoxA 011F520D . 3BF4 cmp esi,esp 011F520F . E8 3D8CFFFF call crackMe.011EDE51 011F5214 > B8 01000000 mov eax,0x1 ; 此时就会陷入循环 011F5219 . EB 02 jmp short crackMe.011F521D 011F521B > 33C0 xor eax,eax 011F521D > 52 push edx 011F521E . 8BCD mov ecx,ebp 011F5220 . 50 push eax 011F5221 . 8D15 50521F01 lea edx,dword ptr ds:[0x11F5250] 011F5227 . E8 3284FFFF call crackMe.011ED65E




[培训]12月3日2020京麒网络安全大会《物联网安全攻防实战》训练营,正在火热报名中!地点:北京 · 新云南皇冠假日酒店

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回