欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

一招秒杀感染文件中的病毒代码

一招秒杀感染文件中的病毒代码

几天前从朋友那得到一个被感染的文件,大致分析了一下,该病毒并没有修改被感染程序的入口点先执行自己的代码再跳回原程序,只是加了一个区段,然后在在程序正常执行的流程中添加了一个call指向病毒代码,完成后在jmp回原程序继续执行。
004128EA   .  E8 F1FEFFFF   call    004127E0
004128EF   .  59            pop     ecx
004128F0   >  E8 22350000   call    00415E17
004128F5   .  8975 FC       mov     dword ptr [ebp-4], esi
004128F8   .  E8 F3BA0200   call    0043E3F0        //指向病毒代码
004128FD   .  85C0          test    eax, eax
004128FF   .  7D 08         jge     short 00412909
00412901   .  6A 1B         push    1B
00412903   .  E8 B3FEFFFF   call    004127BB
00412908   .  59            pop     ecx
00412909   >  FF15 00414200 call    dword ptr [<&KERNEL32.GetCommand>; [GetCommandLineA
然后又是一个call到真正的病毒代码执行部分。
0043E3D2    E8 37000000     call    0043E40E     //指向真正病毒代码
0043E3D7  - E9 C3E2FDFF     jmp     0041C69F   //病毒代码执行完后跳回原地址继续执行
0043E3DC    E8 2D000000     call    0043E40E
0043E3E1  - E9 D488FCFF     jmp     00406CBA
0043E3E6    E8 23000000     call    0043E40E
0043E3EB  - E9 30D2FCFF     jmp     0040B620
0043E3F0    E8 19000000     call    0043E40E
0043E3F5  - E9 F9ACFDFF     jmp     004190F3
0043E3FA    E8 0F000000     call    0043E40E
0043E3FF  - E9 7C9FFDFF     jmp     00418380
0043E404    E8 05000000     call    0043E40E
0043E409  - E9 FBFCFDFF     jmp     0041E109
正好最近没什么事,所以打算写一个该程序的修复程序,练练手,原来的思路是遍历代码段,找E8,然后得到后面调用地址,比较是否是在病毒代码的区段,如果是再得到jmp 正常地址,用这条代码替换call 病毒代码。
但在写的过程中才发现,这样写是不行,因为E8也可能是数据或其他,不一定就是call。这一下我的思路就中断了,就在我思索有什么更好的办法修复程序的时候,突然想到病毒代码执行后会执行到jmp正常程序地址,我只要把病毒代码部分的第一句改成ret,就可以隔离病毒代码部分,完成修复了。
有了这个思路就好写代码了,只要找到感染代码入口的特征,然后把第一句代码改为ret就行了,具体代码怎么写就不说了,相信有点编程序基础的,这点小事是完全没问题的。
如果大家有更好的思路请告诉我,一起进步。

上传的附件 病毒样本.rar[解压密码:muma]

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功