Everest数据文件解密一则
标 题: Everest数据文件解密一则
作 者: pathletboy
时 间: 2009-10-27
链 接: http://www.unpack.cn/viewthread.php?tid=41852&extra=page%3D1
打开Everest所在目录,一目了然,确定everest.dat为数据文件。
Everest主程序Everest.exe(版本为4.60.1540 Beta)加了UPX,用upx.exe -d everrest.exe就能正常脱壳,脱壳后用IDA加载,进行分析完成后,OD加载后下断CreateFileA。运行,不停断下运行,直到参数为 xxxxx/everest.dat后经过多次返回来到50E726,如50E70F,50E721所CALL都是经过IDA识别+人工校验后确定其作用。
代码:
0050E708 |. B2 01 mov dl,1
0050E70A |. A1 C4A14100 mov eax,dword ptr ds:[41A1C4]
0050E70F |. E8 E05DEFFF call <everest.CreateClass>
0050E714 |. A3 9C5D9300 mov dword ptr ds:[935D9C],eax
0050E719 |. 8B55 F4 mov edx,[local.3]
0050E71C |. A1 9C5D9300 mov eax,dword ptr ds:[935D9C]
0050E721 |. E8 D210F1FF call <everest.TStream.LoadFromFile>
0050E726 |. B2 01 mov dl,1
仔细分析该段函数如下:
代码:
0050E6AC /$ 55 push ebp
0050E6AD |. 8BEC mov ebp,esp
0050E6AF |. 83C4 F0 add esp,-10
0050E6B2 |. 53 push ebx
0050E6B3 |. 56 push esi
0050E6B4 |. 57 push edi
0050E6B5 |. 33C0 xor eax,eax
0050E6B7 |. 8945 F0 mov [local.4],eax
0050E6BA |. 8945 F4 mov [local.3],eax
0050E6BD |. 33C0 xor eax,eax
0050E6BF |. 55 push ebp
0050E6C0 |. 68 5EE85000 push everest.0050E85E
0050E6C5 |. 64:FF30 push dword ptr fs:[eax]
0050E6C8 |. 64:8920 mov dword ptr fs:[eax],esp
0050E6CB |. 33DB xor ebx,ebx
0050E6CD |. A1 EC2F9300 mov eax,dword ptr ds:[<En&DecryptAddressTable>]
0050E6D2 |. 33C9 xor ecx,ecx
0050E6D4 |. BA 40000000 mov edx,40
0050E6D9 |. E8 E64EEFFF call <everest.FillChar>
0050E6DE |. 8D55 F0 lea edx,[local.4]
0050E6E1 |. 33C0 xor eax,eax
0050E6E3 |. E8 3845EFFF call <everest.ParamStr> ; ParamStr(0) 获取进程参数0 为进程完整路径
0050E6E8 |. 8B45 F0 mov eax,[local.4]
0050E6EB |. 8D4D F4 lea ecx,[local.3]
0050E6EE |. BA 78E85000 mov edx,everest.0050E878 ; ASCII ".dat"
0050E6F3