我的电脑一下就出现十几个runonce.exe进程,正常吗

我的电脑一下就出现十几个runonce.exe进程,正常吗,第1张

中毒了,

runonceexe

“中文求职信”是国人编写的第一个重大恶意蠕虫,前不久还在疯狂作恶。最近又出现一个名为“中国黑客”(又名“中国和平”)的病毒,此病毒较前者更具“中国特色”,所以人们均怀疑这是又一个国产的新恶意蠕虫。

这个病毒以独创的“三线程”结构来传播并保护自己。

病毒运行后,会先将自己拷贝到windows\system\目录下,并取名为runouce.exe,然后开始搜索本地驱动器及网络驱动器,感染.exe、.scr和系统文件。对于windows\sys tem\目录,它也会先进行查找。接着在注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run下添加:RunOuce:System\RunOuce.exe,这样,每次启动系统,病毒即随之运行。

对于添加的注册表项,病毒还会创建一个注册表监视的线程,对之不断监视,如果被修改,将立即重新写入病毒项,以保证自己的控制权。

病毒还有一个外部线程保证自己不断地取得对系统的控制权,使得病毒的清除更加困难!

在Win9x系统下,病毒学习CIH病毒进入核心层,将自身的部分代码复制到另外一个正在运行的程序内部,通过创建内核线程的方式,远程启动监视线程运行,监视自己的进程是否存在,如果不存在则将系统目录下的runouce.exe再次加载。

在WinNT系统下,病毒是利用系统的FindWindows函数寻找一个可被注入线程的运行程序(一般会找到Ex plorer.exe程序),之后病毒将这个进程打开并分配了一块内存,将自己的监视线程代码复制到该进程中,并在远程启动监视线程,监视病毒的进程是否存在,如果不存在则将系统目录下的runouce.exe再次加载。

中国黑客(wormrunouce)病毒分析该病毒是一个蠕虫病毒。不会感染可执行文件。

病毒在被激活的过程中会把病毒体自身复制到 windows 的系统目录中。

在windows 9x 系统中复制自身到 windows\system\runouceexe

在windows 2000和 windows NT系统中复制自身到winnt\system32\runouceexe。然后运行该程序。并且在注册表中加入成自启动。使病毒体每次开机时都被激活。

在Windows 9x系统上该病毒利用了CIH病毒相同的手法切换到零环,使自己进到系统级。然后复制78个字节到kernel32dll的地址空间中。(在windows 98 与windows 95的系统中的偏移地址是 bff70400处。 然后通过CreateKernelThread函数建立一个内核线程。 该线程的入口地址就是bff70400。这个内核线程调用了WaitForSingleObject函数使自身进入等待状态,来等待父进程的结束信号。如果父进程被结束,则该内核线程立即被唤醒。内核线程马上调用了WinExec函数,来重新启动病毒进程。

这样,在杀毒软件杀掉内存中的病毒进程后。病毒马上又被激活。这样造成杀不掉内存中的病毒。

该病毒在windows 2000 *** 作系统上在explorer中注入线程。在explorer中的线程用来保护病毒进程。 如果病毒进程结束,则explorer中的病毒线程重新启动病毒进程。

该病毒通过以上的方法来起到在内存中保护病毒进程的作用。

该病毒有极强的局域网传染功能。

病毒通过搜索网上邻居中的可写文件夹,然后在每个可写文件夹中都生成一个以计算机器名命名的eml文件

。并且该eml文件是有自启动漏洞的eml文件。

进入安全模式,把C:\windows\system32\runonceexe删除后(强删删除的掉不用安全模式也行,有些粉碎机也可以直接粉碎正在运行的文件~),在原目录下建立文件夹 runonceexe,设置属性为"只读","隐藏"

THREADENTRY32

CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 进程ID)

Thread32First

Thread32Next

THREADENTRY32里面都没有这些信息,怎么能获取我想要的信息呢,

线程的ID,优先级,状态这些都搞定了,如何取得ETHREAD Ted 入口地址 及模块信息,就是XueTr中的查看进程线程信息窗口中显示的资料

1,线程都有自己默认的名称通过getName()方法获取,

2,局部的变量在每个线程中都有独立的一份,此处应该是跟线程安全有关~后续再继续看这部分内容;

class TestThread extends Thread

{

TestThread (String name)

{

super(name);//继承父类的设置线程名字的构造函数

}

public void run()

{

for(int i=0;i<10;i++)

{

Systemoutprintln(ThreadcurrentThread()getName()+"is runing"+i);

//其中 ThreadcurrentThread() 是获取当前线程,而getName()就是获取当前线程的名称

}

}

}

其中在使用这个类构造线程对象时,使用构造函数 TestThread(String name)传入的name就是为线程设置的名字,使用getName()就可以获取到设置的这个名字

进程隐藏技术用得最多的地方就是在病毒和木马中,因为这些不适合出现在阳光下的程序,越隐蔽生存率就越高。在当今Windows环境下,病毒和木马流传得越来越广泛,让读者适当了解这方面的技术可以在防治方面起到积极的作用,技术这种东西就是这样,大家都知道的“秘技”也就不再是“秘技”了,所以,大家都知道了进程隐藏是怎么一回事,进程隐藏起来也就不那么隐蔽了。

1341 在Windows 9x中隐藏进程

在Windows 9x系列 *** 作系统中,可以通过Kernel32dll中的一个未公开函数来完成隐藏功能,这个函数就是RegisterServiceProcess,该函数的功能是将一个进程注册为系统服务进程,由于Windows的任务管理器并不列出系统服务进程,所以可以用它来隐藏进程,不过该函数在Windows NT系列中并不存在。

RegisterServiceProcess函数的使用方法是:

invoke RegisterServiceProcess,dwProcessID,dwFlag

dwProcessID指明目标进程的进程ID,参数dwFlag指定是注册还是撤销,指定TRUE的话,进程被注册为系统服务进程,如果指定为FALSE,则进程的属性恢复为普通进程属性。

Kernel32lib导入库中并没有这个函数的导入信息,如果要使用这个函数,程序需要自己装入库文件并使用GetProcAddress函数获取入口地址后使用(方法请复习第11章)。所附光盘的Chapter13\HideProcess9x目录中的例子程序演示了该函数的使用方法。

1342 Windows NT中的远程线程

在Windows 9x中将进程注册为系统服务进程就能够从任务管理器中隐形,但在NT下就不同了。首先,NT下不存在RegisterServiceProcess函数;其次,NT的任务管理器会列出所有的进程(包括系统进程),即使一个进程将自己的可执行文件放在很隐蔽的目录中,文件名还是会被任务管理器列出来,所以想让别人看不见进程是不可能的。

当然,如果不用进程也能运行程序的话,那是最好不过的办法了,但是不用进程是无法执行文件的。

再从另一个角度考虑,如果进程显示的不是正确的名称呢,这也可以起到掩护作用,如果在DLL中执行我们的代码,系统报告的进程名称是装入DLL的进程的名称,而不是DLL本身的名称。

在Windows NT中还有另一种办法,那就是使用远程线程,使用它可以在其他进程中创建一个线程,由于线程是被所属进程拥有的,所以任务管理器中列出来的还是所属进程的名称。

1 Windows NT的远程 *** 作函数

有两个函数可以用来实现上述功能:VirtualAllocEx和CreateRemoteThread。这两个函数都只能在Windows NT下使用。

VirtualAllocEx函数可以用来在其他进程的地址空间内申请内存,当然申请到的内存也是位于目标进程的地址空间内的,将这个函数和WriteProcessMemory函数配合就可以在目标进程的地址空间中“造”出任何东西来。

在1015节中已经介绍过虚拟内存管理函数VirtualAlloc,VirtualAllocEx函数就是这个函数的扩充,相比之下,VirtualAllocEx函数多了一个参数hProcess,其他参数定义和使用的方法都和VirtualAlloc函数相同,读者可以回过头去查看这些参数的用法。新增的hProcess参数用来指定要申请内存的进程句柄,如果需要在目标进程中使用VirtualAllocEx函数,那么必须对进程拥有PROCESS_VM_OPERATION权限。

如果内存申请成功,函数返回一个指针,指向申请到的内存块,当然这个指针是针对目标进程的地址空间的。如果内存申请失败,函数返回NULL。

CreateRemoteThread函数用来在其他进程内创建一个线程,当然创建的线程是运行于目标进程的地址空间内的,它和目标进程自己创建的线程并没有什么区别。函数的用法是:

该函数是CreateThread函数的扩充,与CreateThread相比,CreateRemoteThread函数多了一个hProcess参数,其他所有参数的定义和用法都与CreateThread的参数相同。hProcess用来指定要创建线程的目标进程句柄。注意:lpStartAddress指向的线程函数的地址是位于目标进程的地址空间内的。如果需要在目标进程中使用CreateRemoteThread函数,那么必须对进程拥有PROCESS_CREATE_THREAD权限。

使用VirtualAllocEx和CreateRemoteThread函数,再配合WriteProcessMemory函数,就能够让一段代码在其他进程中运行,由于远程线程是属于目标进程的,所以在任务管理器中不会产生新的进程,事实上,谁也不会发现列出的某个进程中会多了一个不属于它自己控制的线程。整个实现的过程归纳如下:

(1)使用VirtualAllocEx函数在目标进程中申请一块内存,内存块的长度必须能够容纳线程使用的代码和数据,内存块的属性应该是PAGE_EXECUTE_READWRITE,这样拷贝到内存块中的代码就可以被执行。

(2)使用WriteProcessMemory函数将需要在远程线程中执行的代码(包括它使用的数据)拷贝到第(1)步申请到的内存块中。

(3)使用CreateRemoteThread函数创建远程线程。

2 远程线程存在的技术问题

实现远程线程的框架结构已经搭好了,但是在具体的实现中还有一些技术问题需要解决,归纳起来主要有两点:代码的重定位问题和函数的导入问题。

这时候,A1FC0F4000机器码还是被解释为存取00400FFCh地址,而实际的变量地址已经被搬到00800FFCh处了,这就是说,指令存取的是错误的地址,所以这段指令要想正常执行,就必须放在00401000h地址开始的地方,如果想搬到别的地方去执行,就必须对访问全局变量的指令进行修正,这就是重定位的问题

由此可见,如果想把这段指令放到远程线程中去执行,由于无法保证将代码放到00401000h处,所以几乎可以肯定它是不能正常工作的,但是根据代码最后执行的实际位置来修正某些指令的话,在远程线程中执行它还是可行的。

对于高级语言来说,重定位问题是个致命的问题,是根本不可能解决的,因为高级语言无法在机器码级别上进行细微的 *** 作,所以,即使在相对比较低级的C语言中也无法将一段代码拷贝到远程线程中去执行,大部分的教科书和资料在介绍远程线程的时候,都采用了变通的方法,就是将DLL嵌入到目标进程中去执行。

如Jeffrey Richer的《Windows高级编程指南》中就介绍了使用远程线程将DLL注入目标进程的方法,其实实现步骤是将需要远程执行的代码写到一个DLL中,然后在目标进程中申请一块内存并将DLL文件名写入,最后将目标进程地址空间中的LoadLibrary函数当做线程函数来执行,输入的参数就是前面的DLL文件名,这样LoadLibrary函数执行到ret的时候,远程线程结束,但是DLL也被装入了目标进程中,只要在DLL的入口函数中创建一个新的线程,就可以执行我们的代码了,在所附光盘的Chapter13\RemoteThreadDll中的例子演示了这种方法的汇编版本,程序将一个DLL文件插入到文件管理器Explorerexe中运行,有兴趣的读者可以自己查看一下。

虽然DLL文件在目标进程中运行的时候,任务管理器中不会列出DLL文件名,看到的只是目标进程的文件名,但是有一些工具可以查看一个进程究竟装入了哪些DLL文件,通过这些工具还是可以发现进程中的可疑DLL。

要彻底解决这个问题,就必须脱离DLL文件,让远程运行的代码只存在于内存中,这样就不会有任何的蛛丝马迹显示有某个文件被非法装入,这个问题的关键也就是这个重定位问题。但现在Win32汇编程序员可以很骄傲地说“我可以实现它”,因为自定位的代码正是汇编语言的拿手好戏,在快成为历史的DOS病毒中,十个病毒中就有九个用到了自定位技术,这些技术完全可以用在这个地方。

自定位技术其实很简单,观察下面这段代码:

在程序开始,首先获取LoadLibrary,GetProcAddress和GetModuleHandle函数的入口地址,这些地址将在远程线程中被用来获取其他API的入口地址。

接下来就是打开Explorerexe进程的 *** 作,程序通过GetWindowThreadProcessId和OpenProcess函数来完成,函数中使用的窗口句柄是桌面的窗口句柄,因为桌面就是由文件管理器进程创建的,桌面的窗口类是“Progman”,窗口名称是“Program Manager”,使用FindWindow函数就可以很方便地找到它。在打开进程的时候必须包括对应的权限,PROCESS_CREATE_THREAD权限将允许创建远程线程,PROCESS_VM_OPERATION权限将允许在目标进程中分配内存并将远程代码写到里面。

程序使用VirtualAllocEx函数在目标进程中分配内存,在分配内存的时候,内存属性必须指定为PAGE_EXECUTE_READWRITE,这样分配到的内存可以有执行和读写的权限,分配方式必须指定为MEM_COMMIT,这样内存才会被提交到物理内存中去。

在分配到内存以后,程序使用WriteProcessMemory将远程代码写入,然后再一次将LoadLibrary,GetProcAddress和GetModuleHandle函数的地址写入到远程代码的数据段中。并不将这3个函数的地址存放到远程代码中一次性写入的原因在于:远程代码(包括远程代码使用的数据)是定义在本地的代码段中的,而本地的代码段是只读的,我们无法在本地对它们进行写入初始化数据的 *** 作,所以只好采用远程写入的方式。

最后,用CreateRemoteThread函数创建远程线程后就万事大吉了。编译链接以后运行可执行文件可看到,窗口正常出现了,一眼看上去,这个窗口和别的窗口没有任何不同!但是在任务管理器中却没有多出任何新的进程。

假如远程线程不是这样“招摇过市”地创建了一个窗口,而是在后台偷偷地运行的话,大家能不能从各种蛛丝马迹来发现它的存在呢?反正笔者是找不到它的,因为它仅存在于目标进程的内存中,并不对应任何磁盘文件,当远程线程被执行的时候,惟一可以发现的就是Explorerexe进程中的活动线程多了一个,使用的内存多了一点而已,但是活动线程用工具软件查看也只能看到一个线程ID,又怎么知道这个线程不是Explorerexe进程自己的呢?

以上代码用在不合适的地方可能产生危害,笔者第一次公开这段代码,其目的就是希望能对有害代码的防治起到积极的作用,请读者负责任地使用这段代码。

线程入口地址,参加文章

>

问题一:短信轰炸线程是什么意思 就是一个软件,只要某人得到了你的电话号码,就可以用这个软件想你的手机发送一大堆垃圾短息。这我可是自己用自己的手机实验过的。

问题二:线程是什么意思1-100线程的区别 就相当于一条路,有几条车道

问题三:只要输入号码,启动轰炸线程,对方就会被短信骚扰至死。 这个轰炸台原理是什么,怎么实现的? 首先简要说明一下电脑如何给手机发短信。

直接用电脑发短信的软件其实挺常见的了。你在网页输入手机号,服务器端就获得手机号,然后调用那种软件就OK了,至于通讯原理和技术细节,太复杂就不说了(其实我也不懂),但肯定是无法绕过运营商的。

在各大网站注册或者付费时,也经常需要手机验证码。用户填写手机号后,网站就会把相关内容从某个信息台发到这个号码上。

垃圾或者广告短信也大致如此,他们收集到手机号后,把编写好的内容通过自己的信息台发给这些手机。

这个短信轰炸台则是这样工作的:

你告诉它一个手机号码后,它首先找到一大堆发送验证码的URL逐个访问,然后把这个手机号填上去,那些平台就会同时往这个号码发短信了。所以收到的短信大多都是验证码。因为找的URL多,于是发的短信也就多……

不点停止的话就会一直发送,于是就HIGH起来了。

问题四:短信轰炸机的短信线程是什么意思 好像都是些验证码之类的 不过挺厉害的哟 不小心得罪了人用这个可够让人受的了

问题五:短信轰炸轰炸延时65000什么意思 10分 手机短信轰炸属于病毒性软件,具体就是朝你指定的手机发送短信,频率设置成一秒,也就是每一秒发一条,五分钟300条,差点的手机直接就提示信息满无法接受,你就算发再多都是浪费。。非要发那种可以无限接受短信的手机,过多的短信回吧手机弄死机。。。如果特别多,他重启都没有,一重启手机就因为短信太多而死机不过你要注意。你的短信是通过移动网络发送,每条都要收费。。。还有,过多的、频繁的发送会被移动运营商设置成黑名单而被停机。。并且这样做也是违法的,要是被逮到证据你就死定了

问题六:怎样获取java线程中信息 ? 在进行多线程编程中,比较重要也是比较困难的一个 *** 作就是如何获取线程中的信息。大多数人会采取比较常见的一种方法就是将线程中要返回的结果存储在一个字段中,然后再提供一个获取方法将这个字段的内容返回给该方法的调用者。如以下的ReturnThreadInfo类:package threadtest1;/ @author shi mingxiang/public class ReturnThreadInfo extends Thread {private String str;public ReturnThreadInfo() {thisstr = Hello;}public void run(){thisstr = Hello World!;}public String getThreadInfo(){return thisstr;}} 大家可以看到该类是一个线程类并含有一个初始值为Hello的字段str以及一个可以返回str值的方法:getThreadInfo(),而且当这个线程启动后str会被赋于新值:Hello World!。现在我想在另外一个类中启动ReturnThreadInfo线程,并通过getThreadInfo()方法获取值为Hello World!的变量并打印输出到控制台中。以下给出一个实现该功能的Main类:package threadtest1;/ @author shi mingxiang/public class Main{public Main() {}/ @param args the mand line arguments/public static void main(String[] args) {ReturnThreadInfo returnThreadInfo = new ReturnThreadInfo();returnThreadInfostart(); 创建并启动ReturnThreadInfo线程Systemoutprintln(returnThreadInfogetThreadInfo()); 获取并输出returnThreadInfo对象的str的值}} 以上是一个多数熟悉单线程编程的人在第一反应下给出的实现方法。但是该类在运行的时候输出的结果却不是期望的Hello World!而是Hello,这是由于线程的竞争条件导致的(由于ReturnThreadInfo线程和Main线程的优先级都为5,所以在很大几率上ReturnThreadInfo线程的run()方法还没有运行,Main类就已经运行Systemoutprintln(returnThreadInfogetThreadInfo());将Hello输出了。具体的原理可以参见另一篇文章:java多线程的几点误区)。有的人可能会立即想到把ReturnThreadInfo线程的优先级设高些(比如最大的10)就可以returnThreadInfo线程的run()方法先运行完,然后Main类的Systemoutprintln(returnThreadInfoge>>

问题七:怎么根据进程ID取得进程中所有线程的信息 THREADENTRY32

CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 进程ID)

Thread32First

Thread32Next

THREADENTRY32里面都没有这些信息,怎么能获取我想要的信息呢,

线程的ID,优先级,状态这些都搞定了,如何取得ETHREAD Ted 入口地址 及模块信息,就是XueTr中的查看进程线程信息窗口中显示的资料

问题八:能够用C++获取的线程信息都有哪些 30分 多线程的使用主要是用来处理程序“在一部分上会阻塞”,“在另一部分上需要持续运行”的场合。一般是根据需求,可以用多线程,事件触发,callback等方法达到。但是有一些方法是只有多线程能办到的就只有用多线程或者多进程来完成。

举个简单的例子,能理解就行。假设有这样一个程序,

1会不停的处理收到的所有TCP请求。对于每个TCP请求做不同的 *** 作。不能有遗漏

2有很多特定的请求会向一个服务器发送存储的数据,或者是等待用户输入。

我们来看看。第1个要求很简单。用个while循环就搞定了。但第2个特性呢。一旦在等待用户输入或者是连接服务器时,程序会“阻塞”一段时间,这一段时间内就无法处理其他的TCP请求了。

所以可以利用多线程,每个线程处理不同的TCP请求。这样程序就不会“阻塞”掉了。

问题九:如何让ps显示线程信息 1。 使用top命令,具体用法是 top -H

加上这个选项,top的每一行就不是显示一个进程,而是一个线程。

2。 使用ps命令,具体用法是 ps -xH

这样可以查看所有存在的线程,也可以使用grep作进一步的过滤。

3。 使用ps命令,具体用法是 ps -mq PID

这样可以看到指定的进程产生的线程数目。

更进一步,其实一些系统监控工具,在本质上也是读取的系统产生的文件罢了。

问题十:java怎么获取另一个程序的线程信息 代码如下:

package a;class A implements Runnable{Thread t;A(){t=new Thread(this);tstart();[email protected] void run() {for (int i=1;i

以上就是关于我的电脑一下就出现十几个runonce.exe进程,正常吗全部的内容,包括:我的电脑一下就出现十几个runonce.exe进程,正常吗、怎么根据进程ID取得进程中所有线程的信息、如何获得线程对象,获得Thread对象,得到线程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/10154439.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存