如何让程序修改自己?(20分)

  • 主题发起人 主题发起人 snappy
  • 开始时间 开始时间
S

snappy

Unregistered / Unconfirmed
GUEST, unregistred user!
我从经看到过一种程序,我每次执行它,它就往自己本身应用程序文件中写一定的信息
以此来加密自己,我就怀疑:闻都死怎么不告诉它“文件正在使用”??

请问:上述软件功能如何实现?

 
有这么神奇的事?跟着!
 
不是这样的吧?
程序加密自己一般是在内存中自己修改自己,不是在文件中操作的。
 
我一开始也不相信这样的事,可经过反复的试验我确信!
经过我的分析,应该是可以做到这一点的,因为我们在杀病毒的时候,当一些系统
文件感染上病毒后,在WIN系统下就不能杀这些文件了,因为它“正在使用”。可病毒写
这个文件的时候我想绝不会是等你进入DOS下后才把病毒写进去的吧?!
请问各位VXD能不能做到这一点,我手头有点关于让程序进入系统0级操作的资料,
可实现VXD相同的功能,不知这样做可不可以?

 
TO:etan
“在内存中自己修改自己”?我想系统不会把一个程序写入内存后再执行,然后执行完成
后又把内存写回来吧??!
 
[red]那个程序叫什么?拿出来大家瞧瞧![/red]
 
TO楼上:
什么程序??事隔已久真的忘记了。
我记得我后来把它注册了!不过注册的软件太多,我也记不起来了。好像是建立动画图标
的程序。

TO大家:
可否知道EXE文件什么地方可以写入一些东西,就好像数据库、BIOS等都有一个保留
位置。WIN下的EXE文件有无保留位置?
 
想起一招,不过资料不足:写更盘物理地址!!就像磁盘整理程序!!
各位,我如何得知指定文件在硬盘上的“物理地址”??
 
这个方法可以来写病毒,嘿嘿[8D]
 
应用程序创建一个临时文件作为应用程序的副本, 然后执行副本, 结束自己.
有副本进程对应用程序文件进行修改, 修改完退出, 这时临时文件被系统删除.
 
[:D]这个方法我也试过,可问题是如果后台有病毒监视程序,那起不是漏陷了!!
 
[?]我手头有一个直接写硬盘物理地址的Delphi示例程序,有哪位高手可帮我分析分析?
 
一些监视程序是靠监测扩展名来识别可执行文件的, 先改名, 再修改, 完了改回去.
 
snappy:
你用FileMonitor看看它在什么时候修改了自己! 我觉得应该不大可能吧。[:D]
 
TO楼上的:
第一:我用文件CRC校验了一下,确定它修改了自己。
第二:我在启用KV3000的时候报告说:XX程序将被修改是否确认?
你说它是不是修改了自己??
 
程序是一个执行文件,要想在exe中加入自己的代码,可以在它的开头某个地方改变
程序开头的地址,让它指到exe的末尾,末尾处放入自己的代码,执行完后再跳到程序
原来的开始处,病毒一般都是这样做的。

在使用的程序如何修改,可以按照上面人说的,做一个临时副本。据说也可以通过改
注册表达到需要。
 
修改一个*.exe的方法我不会
不过我有过一个想法

可执行文件先把自己做一个COPY,然后在内存中对这个COPY进行修改
并把该修改过的COPY拷贝到 C:/windows/temp
根据以往的经验,一个程序可以通过一个 .bat文件删除自身(大家都很熟悉吧)

于是,只要在这个*.bat中加入:
Copy C:/Windows/temp/Newexe.exe YourPath
Del C:/windows/temp/Newexe.exe

这样就可以达到不出现该文件正在使用的情况

不过至于做 修改*.exe的,还得各位大虾去做了,密切关注!!![:)]
 
看了BO的源码,没有写实现,说一下思路:
把自身代码拷贝到另一进程空间,跳入另一进程执行,用UnmapViewOfFile释放员进程
所占用的内存和句柄,这样源文件就可以写了。(2000下)98下直接进入Ring0,什么
都可以了,Delphi的代码我也有。好像论坛上一前有人贴过的。
 
这种程序我见过!是一个贺卡型的小软件
一个小蜜蜂从屏幕中间条出来,说一段话(自定义的,用语音引擎读的)
说玩以后弹吉他!!我编辑了说话内容,传给一个朋友(单独EXE)
他也看到我编辑的话,可见语句是包含在exe种的,
 
后退
顶部