首页
社区
课程
招聘
[讨论]怎样通过ollydgb清除病毒代码但保留exe
发表于: 2012-10-25 11:00 8452

[讨论]怎样通过ollydgb清除病毒代码但保留exe

2012-10-25 11:00
8452
昨天下载了fatestaynight游戏
发现Fate.exe带毒,金山毒霸报Trojan.Win32.StartPage.(Kcloud)
运行发现退出游戏时会自动篡改IE主页

想通过ollydgb清除病毒代码,但保留fate.exe
比如

0049DFE8  /$  B8 10E04900   MOV     EAX, Fate_bak.0049E010           ;  ASCII "http://www.1188.com/?big"
0049DFED  |.  E8 72F1FFFF   CALL    Fate_bak.0049D164
0049DFF2  |.  A1 803F4A00   MOV     EAX, DWORD PTR DS:[4A3F80]
0049DFF7  |.  E8 84F2FFFF   CALL    Fate_bak.0049D280
0049DFFC  |.  A1 943F4A00   MOV     EAX, DWORD PTR DS:[4A3F94]
0049E001  |.  E8 4EF5FFFF   CALL    Fate_bak.0049D554
0049E006  \.  C3            RETN
0049E007      00            DB      00
0049E008   .  FFFFFFFF      DD      FFFFFFFF
0049E00C   .  18000000      DD      00000018
0049E010   .  68 74 74 70 3>ASCII   "http://www.1188."
0049E020   .  63 6F 6D 2F 3>ASCII   "com/?big",0

改成
0049DFE8      C3            RETN
0049DFE9      90            NOP
0049DFEA      90            NOP
0049DFEB      90            NOP
0049DFEC      90            NOP
0049DFED      90            NOP
0049DFEE      90            NOP
0049DFEF      90            NOP
0049DFF0      90            NOP
0049DFF1      90            NOP
0049DFF2      90            NOP
0049DFF3      90            NOP
0049DFF4      90            NOP
0049DFF5      90            NOP
0049DFF6      90            NOP
0049DFF7      90            NOP
0049DFF8      90            NOP
0049DFF9      90            NOP
0049DFFA      90            NOP
0049DFFB      90            NOP
0049DFFC      90            NOP
0049DFFD      90            NOP
0049DFFE      90            NOP
0049DFFF      90            NOP
0049E000      90            NOP
0049E001      90            NOP
0049E002      90            NOP
0049E003      90            NOP
0049E004      90            NOP
0049E005      90            NOP
0049E006      90            NOP


通过这样的方式修改了几处代码
Fate.bak.rar改成了 Fate.rar
运行游戏不再修改主页,但是金山毒霸还是报
Trojan.Win32.StartPage.(Kcloud)

怎样才能让金山不报毒呢??

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 263
活跃值: (35)
能力值: ( 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只是起了调用游戏主程序的作用
2012-10-25 12:20
0
雪    币: 263
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
继续讨论怎样做到
保留fate.exe调用游戏主程序的功能
去除病毒代码
并且通过金山等杀毒软件的检验
附件 d3dx9_10.rar可供测试
上传的附件:
2012-10-25 13:13
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=anyuezhiji;1112129]继续讨论怎样做到
保留fate.exe调用游戏主程序的功能
去除病毒代码
并且通过金山等杀毒软件的检验
附件 d3dx9_10.rar可供测试[/QUOTE]

这种情况要结合金山的提特征方式。
样本鉴定的方法和提特征的点并不一定要关联。
也就是说样本鉴定的时候可能是通过这块代码鉴定出这是一款木马,但是提特征的时候不见得会提到这块内容。

总之,如果特征没有提到这块,你怎么去除都没用~
2012-10-28 22:53
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
MOV     EAX, Fate_bak.0049E010           ;  ASCII "http://www.1188.com/?big"

Mov     eax,0

构造0给他,这个应该是寄存器传参。给他0的话,如果不是取指针的话,应该不会出错。这样就可以免杀了。
2012-11-6 10:17
0
雪    币: 18
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这种调用游戏主程序的方式近几年十分流行 破解难度也不一 大多数还是为了执行稳定是解压或改名 创建真正的目标程序来运行 带FD的HIPS就可以搞定它了 其他有修改目标程序的 用的技术就比较多了 不过这种太少见了
2012-11-6 12:58
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
一般病毒感染是靠加个区段.然后在入口跳去..或者把入口改成那个区段的入口跳回去
这时候 把区段干掉 跳转代码改回去..然后把入口点恢复 一般就修改这块.
如果不是这种的.一般杀软会直接把他当成病毒本体..
2012-11-22 09:34
0
雪    币: 40
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
这个就是免杀了  看免杀教程啊
2013-1-23 15:23
0
雪    币: 222
活跃值: (42)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
pencil说的正理。如果想不让金山报很简单,定位特征修改即可。关键是达不到你的要求,你的目的是去掉病毒代码。那你起码得知道代码中哪些是恶意的。哪些是正常功能的?它们是如何混杂在一起的?如果你的游戏是通过后期(指通过工具对已编译好的程序加入的恶意代码,类似于加壳,感染型病毒)感染了木马,这个可能好做些,因为病毒基本会以连续的二进制代码出现有些甚至是新加一个代码节;如果本是从源码就嵌入再重新编译生成的可执行文件,想分离得那么清楚就比较困难了。个人意见啊,呵呵。
2013-2-2 17:42
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
当他writekey时.把call给patch掉
2013-2-5 23:01
0
游客
登录 | 注册 方可回帖
返回
//