首页
社区
课程
招聘
[求助]这个病毒是如何做的?
发表于: 2008-4-11 22:21 5703

[求助]这个病毒是如何做的?

2008-4-11 22:21
5703
我的一个软件中了毒,我拿了中毒和没中毒的比较,却发现没多模块
我用的方法是先运行没中毒的,然后:
tasklist /m /fo list >G:\dll1.txt
然后再运行中毒以后的软件,继续上一步。
结果发现他们加载的模块都一样多。
然后我用od附加了中毒的和没中毒的,最后终于比对出来。
中毒的在大概0x01300000的地址以后加了病毒的内容。
请问知道的说下,这是如何做到的?
不光在程序里加了它的代码,而且还可以运行。而且还没又多加任何模块。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (18)
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
2
你所指的“没多加任何模块”指的是可执行模块(exe,dll),还是映像文件区块(如.text、.data等)?

如果指的是可执行模块(exe,dll),那当然完全可以不增加。
感染型病毒一般在文件最末添加一个区块(或把最后一个区块增大),在区块中写入病毒代码。并修改程序入口点,指向新区块中的病毒代码。这样程序加载之后,就会首先运行病毒代码,最后才跳到原入口点运行。
看楼主指的在0x01300000后加了病毒的内容,似乎应该是这种情况。
当然,也有不增大文件大小,而直接利用已有区块中的空隙填充代码,化整为零的。同时,也不一定是修改入口点直接时入病毒代码,也可以修改原程序中的一个call,跳进病毒代码里,执行完病毒代码后再还原call语句,后跳回原位置继续运行,这样跳入病毒代码的call在不同的被感染文件中处于不同位置,甚至有时可能根本不会被程序调用到,给对病毒的查杀带来困难,这就是EPO技术。
2008-4-11 22:54
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我在论坛查epo,符合条件的很少啊!
加区和写入我能找到资料,可是如何定位自己程序入口点地址呢?
2008-4-12 16:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
HFW
4
程序执行时在内存的入口地址 可以找到  
好像是基地址(ImageBase)+程序执行入口RVA(ddressOfEntryPoint) 吧!
不过静态文件偏移地址 俺就不知道了!
2008-4-12 17:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
哦,这样的话,那么我也可以做个类似的软件了啊!
如果我写个dll,在目标软件里加一个区,然后把dll都复制进去,这样的话,我用楼上的方法跳转到
基地址(ImageBase)+程序执行入口RVA(ddressOfEntryPoint)时,是不是就相当于loadlibrary这个dll了?
2008-4-12 22:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
实际试了一下,不行!!
2008-4-13 09:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谁有资料?
我很想做个玩玩。
2008-4-13 13:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
好复杂,
学习了
2008-4-13 14:54
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
新手  过来学习一下
2008-4-13 16:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谁来帮帮?请求帮助
2008-4-15 08:09
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
建议楼主把PE文件格式仔细研究一下
2008-4-15 08:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
HFW
12
"哦,这样的话,那么我也可以做个类似的软件了啊!
如果我写个dll,在目标软件里加一个区,然后把dll都复制进去,这样的话,我用楼上的方法跳转到
基地址(ImageBase)+程序执行入口RVA(ddressOfEntryPoint)时,是不是就相当于loadlibrary这个dll了? "

错! 编译出来的DLL 或 EXE 已经是一个完整的整体了里面包含了程序运行所需要的很多资源
其中包括PE头还有代码段,数据段,堆栈段.....!  而被送入CPU执行的指令部分正常是放到代码
段中的  代码段中的代码不是说复制到其他程序任何段都可以使用的
比如说:程序运行时需要到到已初始化数据段中读取一个常量!  但是如果你把整个DLL都放到
了令一个程序中的区段里 然后当EIP指向上面的这么一条指令那他要到哪里去读取 这个常量呢?
...........(  我是菜菜鸟! 我是怎么理解了!)
2008-4-15 14:54
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
哦,楼上说的好象很有道理啊!
2008-4-15 14:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
HFW
14
我是菜菜鸟 C编程我不大会!
所以我不擅长使用 loadlibrary 类似的函数名
只知道他在内存中被CALL的时候是一串16进制
但我想不管哪一类编程语言写出来的程序都必须
遵循操作系统提供的运行规则............(这----可能是扯淡了)
2008-4-15 15:02
0
雪    币: 212
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
LoadLibrary参数是文件名,返回是的句柄啊。
2008-4-15 19:55
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
16
得到目标进程对象,OpenProcess;
向目标进程地址空间申请堆内存 VirtualAllocEx,
写进程内存空间,WriteProcessMemory
然后启动远程线程 CreateRemoteThread。h

手下没有MSDN,不知道API的名字写对没有,但应该大概就是这么个思路。问那些写过进行ShellCode溢出攻击的大牛们,他们知道。

执行感染动作的可以是另外的进程,不必加载到被感染进程的地址空间去。
2008-4-15 20:18
0
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
GetProcAddress可以返回DLL中函数的地址。
2008-4-15 21:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
搞不懂。
2008-4-15 21:56
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
小菜发话::
   16楼说的是 内存型病毒~ 额技术有点像内存补点,楼主的病毒应该是文件型病毒
(这两种感染型就是两种补丁技术的缩影)
    感觉楼主的猜想挺好~可惜没有人试验 也没又结果上传~
2008-5-31 15:07
0
游客
登录 | 注册 方可回帖
返回
//