今天在家调试程序,跟进了一个函数kernel32里面的GetVersion函数。最近刚好在学逆向。心一横,干脆把它逆了。
代码如下:
0043846A |. FF15 70F14500 call dword ptr [<&KERNEL32.GetVersion>] ; kernel32.GetVersion
7C81126A > 64:A1 18000000 mov eax, dword ptr fs:[18] ; 获得当前线程的TEB地址
7C811270 8B48 30 mov ecx, dword ptr [eax+30] ; 在TEB偏移30h处获得PEB地址
7C811273 8B81 B0000000 mov eax, dword ptr [ecx+B0]
7C811279 0FB791 AC000000 movzx edx, word ptr [ecx+AC]
7C811280 83F0 FE xor eax, FFFFFFFE
7C811283 C1E0 0E shl eax, 0E
7C811286 0BC2 or eax, edx
7C811288 C1E0 08 shl eax, 8
7C81128B 0B81 A8000000 or eax, dword ptr [ecx+A8]
7C811291 C1E0 08 shl eax, 8
7C811294 0B81 A4000000 or eax, dword ptr [ecx+A4]
7C81129A C3 retn
解析:
