代码简单注释如下:
;time.ini的解码
00401926 > /8B4D E8 mov ecx, dword ptr [ebp-18]
00401929 . |83C1 04 add ecx, 4
0040192C . |894D E8 mov dword ptr [ebp-18], ecx
0040192F > |8B55 E8 mov edx, dword ptr [ebp-18]
00401932 . |3B55 E4 cmp edx, dword ptr [ebp-1C]
00401935 . |7D 33 jge short 0040196A ; 解密是否完成
00401937 . |8B45 08 mov eax, dword ptr [ebp+8]
0040193A . |0345 E8 add eax, dword ptr [ebp-18]
0040193D . |8B08 mov ecx, dword ptr [eax]
0040193F . |894D EC mov dword ptr [ebp-14], ecx ; 获取加密数据
00401942 . |8B55 EC mov edx, dword ptr [ebp-14]
00401945 . |3355 F0 xor edx, dword ptr [ebp-10] ; 用加密的数据和key1做xor
00401948 . |8955 EC mov dword ptr [ebp-14], edx
0040194B . |8B45 EC mov eax, dword ptr [ebp-14]
0040194E . |3345 F8 xor eax, dword ptr [ebp-8] ; 用第一步的结果和key2做xor,key2来自time.ini+0处
00401951 . |8945 EC mov dword ptr [ebp-14], eax
00401954 . |8B4D F0 mov ecx, dword ptr [ebp-10]
00401957 . |034D EC add ecx, dword ptr [ebp-14] ; 变换key1,用key1和解密数据做add
0040195A . |894D F0 mov dword ptr [ebp-10], ecx
0040195D . |8B55 08 mov edx, dword ptr [ebp+8]
00401960 . |0355 E8 add edx, dword ptr [ebp-18]
00401963 . |8B45 EC mov eax, dword ptr [ebp-14]
00401966 . |8902 mov dword ptr [edx], eax ; 保存解密后的数据
00401968 .^\EB BC jmp short 00401926
0040150A |. 8B4D 08 mov ecx, dword ptr [ebp+8]
0040150D |. 8B11 mov edx, dword ptr [ecx]
0040150F |. 8955 FC mov dword ptr [ebp-4], edx ; offset 获取shellcode开始执行的偏移 在time.ini+0x8取
00401512 |. 8B45 08 mov eax, dword ptr [ebp+8]
00401515 |. 83C0 04 add eax, 4 ; baseaddress 获取time.ini+c偏移在内存中的位置
00401518 |. 8945 F8 mov dword ptr [ebp-8], eax
0040151B |. 8B4D F8 mov ecx, dword ptr [ebp-8]
0040151E |. 034D FC add ecx, dword ptr [ebp-4] ; shellOEP = baseaddress+offset 通过计算或得shellcode开始执行的位置
00401521 |. 0FBE11 movsx edx, byte ptr [ecx]
00401524 |. 83FA 55 cmp edx, 55 ; 通过特征码验证shellOEP是否正确
00401527 |. 0F85 94000000 jnz 004015C1
00C5036C 8038 CC cmp byte ptr [eax], 0CC ; 当前获取函数是否被下断点
00C5036F 74 7F je short 00C503F0
00C50371 48 dec eax ; 获取的函数地质-1
00C50372 8038 90 cmp byte ptr [eax], 90 ; 当前指向的位置是否为nop,如果不是还原地质
00C50375 74 01 je short 00C50378
00C50377 40 inc eax
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)