能力值:
( LV2,RANK:10 )
|
-
-
2 楼
刚吃饭去了
回来继续分析fate.exe
发现如下函数
0049E964 /$ 55 PUSH EBP
0049E965 |. 8BEC MOV EBP, ESP
0049E967 |. 81C4 DCFEFFFF ADD ESP, -124
0049E96D |. 53 PUSH EBX
0049E96E |. 56 PUSH ESI
0049E96F |. 33C0 XOR EAX, EAX
0049E971 |. 8985 DCFEFFFF MOV [LOCAL.73], EAX
0049E977 |. 8985 E0FEFFFF MOV [LOCAL.72], EAX
0049E97D |. 8985 E8FEFFFF MOV [LOCAL.70], EAX
0049E983 |. 8985 E4FEFFFF MOV [LOCAL.71], EAX
0049E989 |. 8985 ECFEFFFF MOV [LOCAL.69], EAX
0049E98F |. 8985 F0FEFFFF MOV [LOCAL.68], EAX
0049E995 |. 8985 F4FEFFFF MOV [LOCAL.67], EAX
0049E99B |. BE 983F4A00 MOV ESI, Fate.004A3F98
0049E9A0 |. 33C0 XOR EAX, EAX
0049E9A2 |. 55 PUSH EBP
0049E9A3 |. 68 F8EA4900 PUSH Fate.0049EAF8
0049E9A8 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0049E9AB |. 64:8920 MOV DWORD PTR FS:[EAX], ESP
0049E9AE |. 8D85 FBFEFFFF LEA EAX, DWORD PTR SS:[EBP-105]
0049E9B4 |. 50 PUSH EAX ; /Buffer
0049E9B5 |. 68 04010000 PUSH 104 ; |BufSize = 104 (260.)
0049E9BA |. E8 658CF6FF CALL <JMP.&kernel32.GetTempPathA> ; \GetTempPathA
0049E9BF |. 8D85 F4FEFFFF LEA EAX, [LOCAL.67]
0049E9C5 |. B9 10EB4900 MOV ECX, Fate.0049EB10 ; ASCII "d3dx9_10.dll"
0049E9CA |. 8B16 MOV EDX, DWORD PTR DS:[ESI]
0049E9CC |. E8 1B67F6FF CALL Fate.004050EC
0049E9D1 |. 8B85 F4FEFFFF MOV EAX, [LOCAL.67]
0049E9D7 |. E8 60C4F6FF CALL Fate.0040AE3C
0049E9DC |. 84C0 TEST AL, AL
0049E9DE |. 75 3C JNZ SHORT Fate.0049EA1C
0049E9E0 |. 8D85 F0FEFFFF LEA EAX, [LOCAL.68]
0049E9E6 |. B9 28EB4900 MOV ECX, Fate.0049EB28 ; ASCII "_Fate.exe"
0049E9EB |. 8B16 MOV EDX, DWORD PTR DS:[ESI]
0049E9ED |. E8 FA66F6FF CALL Fate.004050EC
0049E9F2 |. 8B85 F0FEFFFF MOV EAX, [LOCAL.68]
0049E9F8 |. E8 3FC4F6FF CALL Fate.0040AE3C
0049E9FD |. 84C0 TEST AL, AL
0049E9FF |. 75 1B JNZ SHORT Fate.0049EA1C
0049EA01 |. B8 3CEB4900 MOV EAX, Fate.0049EB3C
0049EA06 |. E8 B91CF9FF CALL Fate.004306C4
0049EA0B |. A1 D0274A00 MOV EAX, DWORD PTR DS:[4A27D0]
0049EA10 |. 8B00 MOV EAX, DWORD PTR DS:[EAX]
0049EA12 |. E8 D5ECFBFF CALL Fate.0045D6EC
0049EA17 |. E9 BE000000 JMP Fate.0049EADA
0049EA1C |> 8D85 ECFEFFFF LEA EAX, [LOCAL.69]
0049EA22 |. B9 28EB4900 MOV ECX, Fate.0049EB28 ; ASCII "_Fate.exe"
0049EA27 |. 8B16 MOV EDX, DWORD PTR DS:[ESI]
0049EA29 |. E8 BE66F6FF CALL Fate.004050EC
0049EA2E |. 8B85 ECFEFFFF MOV EAX, [LOCAL.69]
0049EA34 |. E8 03C4F6FF CALL Fate.0040AE3C
0049EA39 |. 84C0 TEST AL, AL
0049EA3B |. 75 43 JNZ SHORT Fate.0049EA80
0049EA3D |. 6A 00 PUSH 0
0049EA3F |. 8D85 E8FEFFFF LEA EAX, [LOCAL.70]
0049EA45 |. B9 28EB4900 MOV ECX, Fate.0049EB28 ; ASCII "_Fate.exe"
0049EA4A |. 8B16 MOV EDX, DWORD PTR DS:[ESI]
0049EA4C |. E8 9B66F6FF CALL Fate.004050EC
0049EA51 |. 8B85 E8FEFFFF MOV EAX, [LOCAL.70]
0049EA57 |. E8 4468F6FF CALL Fate.004052A0
0049EA5C |. 50 PUSH EAX
0049EA5D |. 8D85 E4FEFFFF LEA EAX, [LOCAL.71]
0049EA63 |. B9 10EB4900 MOV ECX, Fate.0049EB10 ; ASCII "d3dx9_10.dll"
0049EA68 |. 8B16 MOV EDX, DWORD PTR DS:[ESI]
0049EA6A |. E8 7D66F6FF CALL Fate.004050EC
0049EA6F |. 8B85 E4FEFFFF MOV EAX, [LOCAL.71]
0049EA75 |. E8 2668F6FF CALL Fate.004052A0
0049EA7A |. 50 PUSH EAX ; |ExistingFileName
0049EA7B |. E8 3C8AF6FF CALL <JMP.&kernel32.CopyFileA> ; \CopyFileA
0049EA80 |> BB 06000000 MOV EBX, 6
0049EA85 |. 8D85 E0FEFFFF LEA EAX, [LOCAL.72]
0049EA8B |. B9 28EB4900 MOV ECX, Fate.0049EB28 ; ASCII "_Fate.exe"
0049EA90 |. 8B16 MOV EDX, DWORD PTR DS:[ESI]
0049EA92 |. E8 5566F6FF CALL Fate.004050EC
0049EA97 |. 8B85 E0FEFFFF MOV EAX, [LOCAL.72]
0049EA9D |. 8BD3 MOV EDX, EBX
0049EA9F |. E8 A8C3F6FF CALL Fate.0040AE4C
0049EAA4 |. E8 93FDFFFF CALL Fate.0049E83C
0049EAA9 |. 68 E8030000 PUSH 3E8 ; /Timeout = 1000. ms
0049EAAE |. E8 390EF7FF CALL <JMP.&kernel32.Sleep> ; \Sleep
0049EAB3 |. 8D85 DCFEFFFF LEA EAX, [LOCAL.73]
0049EAB9 |. B9 28EB4900 MOV ECX, Fate.0049EB28 ; ASCII "_Fate.exe"
0049EABE |. 8B16 MOV EDX, DWORD PTR DS:[ESI]
0049EAC0 |. E8 2766F6FF CALL Fate.004050EC
0049EAC5 |. 8B85 DCFEFFFF MOV EAX, [LOCAL.73]
0049EACB |. E8 A4C3F6FF CALL Fate.0040AE74
0049EAD0 |. A1 743F4A00 MOV EAX, DWORD PTR DS:[4A3F74]
0049EAD5 |. E8 52F5FFFF CALL Fate.0049E02C
0049EADA |> 33C0 XOR EAX, EAX
0049EADC |. 5A POP EDX
0049EADD |. 59 POP ECX
0049EADE |. 59 POP ECX
0049EADF |. 64:8910 MOV DWORD PTR FS:[EAX], EDX
0049EAE2 |. 68 FFEA4900 PUSH Fate.0049EAFF
0049EAE7 |> 8D85 DCFEFFFF LEA EAX, [LOCAL.73]
0049EAED |. BA 07000000 MOV EDX, 7
0049EAF2 |. E8 0D63F6FF CALL Fate.00404E04
0049EAF7 \. C3 RETN
0049EAF8 .^ E9 5B5BF6FF JMP Fate.00404658
0049EAFD .^ EB E8 JMP SHORT Fate.0049EAE7
0049EAFF . 5E POP ESI
0049EB00 . 5B POP EBX
0049EB01 . 8BE5 MOV ESP, EBP
0049EB03 . 5D POP EBP
0049EB04 . C3 RETN
功能为把d3dx9_10.dll拷贝成_fate.exe再启动
怀疑d3dx9_10.dll才是真正的游戏主程序
果断改名为d3dx9_10.exe
双击启动游戏成功
fate.exe只是起了调用游戏主程序的作用
|
能力值:
( LV12,RANK:230 )
|
-
-
4 楼
[QUOTE=anyuezhiji;1112129]继续讨论怎样做到
保留fate.exe调用游戏主程序的功能
去除病毒代码
并且通过金山等杀毒软件的检验
附件 d3dx9_10.rar可供测试[/QUOTE]
这种情况要结合金山的提特征方式。
样本鉴定的方法和提特征的点并不一定要关联。
也就是说样本鉴定的时候可能是通过这块代码鉴定出这是一款木马,但是提特征的时候不见得会提到这块内容。
总之,如果特征没有提到这块,你怎么去除都没用~
|
能力值:
( LV3,RANK:30 )
|
-
-
5 楼
MOV EAX, Fate_bak.0049E010 ; ASCII "http://www.1188.com/?big"
Mov eax,0
构造0给他,这个应该是寄存器传参。给他0的话,如果不是取指针的话,应该不会出错。这样就可以免杀了。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
这种调用游戏主程序的方式近几年十分流行 破解难度也不一 大多数还是为了执行稳定是解压或改名 创建真正的目标程序来运行 带FD的HIPS就可以搞定它了 其他有修改目标程序的 用的技术就比较多了 不过这种太少见了
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
一般病毒感染是靠加个区段.然后在入口跳去..或者把入口改成那个区段的入口跳回去
这时候 把区段干掉 跳转代码改回去..然后把入口点恢复 一般就修改这块.
如果不是这种的.一般杀软会直接把他当成病毒本体..
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
pencil说的正理。如果想不让金山报很简单,定位特征修改即可。关键是达不到你的要求,你的目的是去掉病毒代码。那你起码得知道代码中哪些是恶意的。哪些是正常功能的?它们是如何混杂在一起的?如果你的游戏是通过后期(指通过工具对已编译好的程序加入的恶意代码,类似于加壳,感染型病毒)感染了木马,这个可能好做些,因为病毒基本会以连续的二进制代码出现有些甚至是新加一个代码节;如果本是从源码就嵌入再重新编译生成的可执行文件,想分离得那么清楚就比较困难了。个人意见啊,呵呵。
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
当他writekey时.把call给patch掉
|