一个时间限制软件,用OD加载程序,右击汇编窗口,查找->当前模块中的名称(标签),发现2个与时间有关的名称,msvbvm60.rtcDateAdd和msvbvm60.rtcGetTimer
于是反汇编跟随第一个,完全看不懂,接着跟随第二个,这个貌似看懂一点,代码如下:
73472654 > 55 push ebp
73472655 8BEC mov ebp, esp
73472657 83EC 14 sub esp, 14
7347265A 8D45 EC lea eax, dword ptr [ebp-14]
7347265D 50 push eax
7347265E FF15 00113973 call dword ptr [<&KERNEL32.GetLocalTime>] ; kernel32.GetLocalTime
73472664 0FB745 F4 movzx eax, word ptr [ebp-C]
73472668 0FB74D F6 movzx ecx, word ptr [ebp-A]
7347266C 6BC0 3C imul eax, eax, 3C
7347266F 03C1 add eax, ecx
73472671 0FB74D F8 movzx ecx, word ptr [ebp-8]
73472675 6BC0 3C imul eax, eax, 3C
73472678 03C1 add eax, ecx
7347267A 8945 FC mov dword ptr [ebp-4], eax
7347267D 0FB745 FA movzx eax, word ptr [ebp-6]
73472681 DB45 FC fild dword ptr [ebp-4]
73472684 8945 FC mov dword ptr [ebp-4], eax
73472687 DB45 FC fild dword ptr [ebp-4]
7347268A DC0D 60033C73 fmul qword ptr [733C0360]
73472690 DEE9 fsubp st(1), st
73472692 C9 leave
73472693 C3 retn
这段代码好像是读取计算机当前时间的,我想,如果将时间停止,那限时软件不就可以永远使用了么?于是,将imul整数相乘2处,个人认为这里是分和时的进位表示,因为3C就是60的意思,,将其改成imul eax, eax, 0 然后按F9运行,修改系统时间,1小时1小时的加,加着加着就退出了........
我理解有错误么?哪里出错了?
还有有几个问题想随便提问下,OD好像能修改不能保存的,是这样的吗?然后就是ebp-8,ebp-4这些是甚么意思?
谢谢,你的解答是我进步的力量
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)