随笔分类 -  Windows C++

windows C++ 相关知识积累!
摘要:MFC 对话框工程中添加菜单(VC++ 6.0编译器)第一步:创建对话框资源和菜单资源.第二步:添加菜单到对话框中方法一:在创建的对话框中右键,在Menu选项选择自己的菜单ID如下图此时就可以了.方法二:不用方法一,直接添加代码完成上述功能.添加代码到DialogDlg ::OnInitDialog中CMenu *menu = new CMenu;menu ->LoadMenu(MAKEINTRESOURCE(IDR_MENU)); //IDR_MENU 菜单IDthis ->SetMenu(menu);或者Cmenu m_menu;m_menu.LoadMenu(IDR_MENU 阅读全文
posted @ 2012-12-07 09:30 小金马 阅读(12800) 评论(0) 推荐(0)
摘要:本阶段目标:1 加深阅读调试器中的汇编代码的能力2 加深对Windows底层理解3 解决下层bug的能力.1 第一个实例: int main(int argc, char* argv[]){ return 0;}反汇编后:00401010 >|> 55 PUSH EBP00401011 |. 8BEC MOV EBP,ESP00401013 |. 83EC 40 SUB ESP,4000401016 |. 53 PUSH EBX00401017 |. 56 PUSH ESI00401018 |. 57 PUSH EDI00401019 |. 8D7D C0 LEA EDI,DWOR 阅读全文
posted @ 2012-12-07 09:26 小金马 阅读(1206) 评论(0) 推荐(0)
摘要:用NtTerminateProcess真正终止进程.首先,要使用Native API,要对它进行声名:typedef DWORD (CALLBACK* NTTERMINATEPROCESS)(HANDLE,UINT);NTTERMINATEPROCESS NtTerminateProcess;HMODULE hNtdll = NULL; hNtdll = LoadLibrary( "ntdll.dll" ); //从ntdll.dll里获取函数 if ( !hNtdll ) { printf( "LoadLibrary( NTDLL.DLL ) Error:%d\ 阅读全文
posted @ 2012-12-07 09:23 小金马 阅读(3099) 评论(0) 推荐(0)
摘要:如何判断操作系统是64位还是32位 64位Wnidows 里面有个叫Wow64的模拟器技术,可以使32位的程序在64位Windows上运行。当你想在程序里面针对32b位/ 64位系统执行不同代码的时候, 需要判断操作系统是32位还是64位。 使用 Windows API函数 GetNativeSystemInfo 可以获得这个信息。代码示例:SYSTEM_INFO si;GetNativeSystemInfo(&si);if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 || si.wProcessorArchit 阅读全文
posted @ 2012-12-07 09:21 小金马 阅读(824) 评论(0) 推荐(0)
摘要:批处理制作教程 批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。在无盘运用及Hack入侵过程中,经常都会用到。一.简单批处理内部命令简介 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 语法 echo [{on off}] [message] Sample:@echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也 阅读全文
posted @ 2012-12-07 09:20 小金马 阅读(887) 评论(0) 推荐(0)
摘要:通过PsGetCurrentProcess函数来获取当前调用驱动的进程的EPROCESS结构的地址.EPROCESS结构的0x174偏移处存放着进程名.思路如下:驱动程序的加载函数DriverEntry是运行在System进程中的.(1) 通过PsGetCurrentProcess可以获取System进程的内核EPROCESS结构的地址,(2) 从该地址开始寻找"System"字符串.(3) 找到了便是EPROCESS的进程名存放的偏移处,得到进程名在EPROCESS结构的偏移后,(4) 进程调用驱动的时候,就可以直接在该偏移处获取当前进程名.代码如下:DWORD GetP 阅读全文
posted @ 2012-12-07 09:18 小金马 阅读(5607) 评论(0) 推荐(0)
摘要:目录1 基础知识:. 21.1结构框图... 21.2 快照函数... 22 Heap Walking解析... 32.1 Heap Walking定义... 32.2 Heap Walking常用函数... 42.3 实例... 43 Process Walking 解析... 53.1 PROCESSENTRY32定义... 53.2 Process Walking 常用函数... 63.3 Process Walking 实例... 64 Thread Walking 解析... 74.1 THREADENTRY32定义... 74.2 Thread Walking常用的函数... 84 阅读全文
posted @ 2012-12-06 18:18 小金马 阅读(885) 评论(0) 推荐(0)
摘要:动态加载DLL的方法与注意的问题动态加载DLL的方法:1. 生成dll过程:把生成的.DLL文件复制到测试工程DLLTest目录下。这里假设该.DLL文件为add.dll,主要代码是:// .h中声明Extern “C” _declspec(dllexport)int add(int x, int y)// .cpp 中实现extern "C" int add(int x, int y){ return x + y;}2.使用1生成的dll:在DLLTest工程中添加DllTest.cpp文件.首先使用LoadLibrary("add.dll")加载ad 阅读全文
posted @ 2012-12-06 18:12 小金马 阅读(2142) 评论(0) 推荐(0)
摘要:“偷取者”(Trojan/Win32.BHO.anbp)威胁级别:★★该病毒为木马类,病毒运行后衍生病毒文件到系统目录下,并删除自身。修改注册表,添加启动项,以达到随机启动的目的。病毒的dll文件随IEXPLORER.EXE进程的启动而启动,进行劫持浏览器,键盘记录等相关病毒行为。主动连接网络,开启本地端口,下载相关病毒文件信息。该病毒通过恶意网站、其它病毒/木马下载传播,可以进行劫持浏览器,键盘记录,盗取用户敏感信息。“修改者木马”(Trojan/Win32.StartPage.aggp[Dropper]) 威胁级别:★★该病毒为木马类,病毒运行后遍历进程,查找杀软相关进程并关闭;删除桌面上 阅读全文
posted @ 2012-12-06 18:09 小金马 阅读(1922) 评论(0) 推荐(0)
摘要:一、windows系统的引导过程如下:1、电源自检程序开始运行2、主引导记录被装入内存,并且程序开始执行3、活动分区的引导扇区被装入内存4、NTLDR从引导扇区被装入并初始化5、将处理器的实模式改为32位平滑内存模式6、NTLDR开始运行适当的小文件系统驱动程序。小文件系统驱动程序是建立在NTLDR内部的,它能读FAT或NTFS。7、NTLDR读boot.ini文件8、NTLDR装载所选操作系统二、NTLDR在引导过程中扮演的角色:NTLDR一般存放于C盘根目录下,是一个具有隐藏和只读属性的系统文件。它的主要职责是解析Boot.ini文件。如果你对它的理解还不是很清楚,那么下面我们就以Wind 阅读全文
posted @ 2012-12-06 18:05 小金马 阅读(1259) 评论(0) 推荐(0)
摘要:1、首先安装DDKWizard官方网页:http://ddkwizard.assarbad.net/从官方网页下载这三个重要的文件:DDKBUILD.BAT、 DDKBUILD.CMD、DDKWIZARD_SETUP。EXE在WDK7600安装目录新建一个bat 目录,用来保存bat与cmd两个文件,再安装DDKWIZARD_SETUP.EXE。2、VS2008中相关配置在系统环境变量中添加一条记录:PathE:\WinDDK\bat (刚刚从DDKWizard下载保存的两个文件对应的路径)WXPBASE E:\WinDDK\7600.16385.0 (这条记录貌似可以不需要)再打开VS200 阅读全文
posted @ 2012-12-06 18:04 小金马 阅读(474) 评论(0) 推荐(0)
摘要:标准库vector类型使用需要的头文件:#include <vector>。vector 是一个类模板。不是一种数据类型,vector<int>是一种数据类型。Vector的存储空间是连续的,list不是连续存储的。一、定义和初始化vector< typeName > v1; //默认v1为空,故下面的赋值是错误的v1[0]=5;vector<typeName>v2(v1); 或v2=v1;vector<typeName>v2(v1.begin(), v1.end());//v2是v1的一个副本,若v1.size()>v2.si 阅读全文
posted @ 2012-12-06 17:57 小金马 阅读(377) 评论(0) 推荐(0)
摘要:STL 中map的用法详解Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。下面举例说明什么是一对一的数据映射。比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述,很明显学号用int描述,姓名用字符串描述(本篇文章中不用cha 阅读全文
posted @ 2012-12-06 17:51 小金马 阅读(206) 评论(0) 推荐(0)
摘要:1.打印软件监视日志const DWORD dwBufferSize = MAX_PATH * 2;TCHAR szMoudleFileName[dwBufferSize] = {0};GetModuleFileName(0, szMoudleFileName, dwBufferSize);_tcscat_s(szMoudleFileName, dwBufferSize, _T("\\MyProcessViewer.log"));VERIFY( g_Log.Open( szModuleFileName ));2. IsUserAnAdmin 查看用户权限是否是管理员权限in 阅读全文
posted @ 2012-12-06 17:48 小金马 阅读(279) 评论(0) 推荐(0)
摘要:1 VC中TabControl控件使用方法 (1) 添加Tab Control控件并在Property属性中设置ID为IDC_TAB,添加变量m_tabctrl,类型为CTabCtrl。 (2) 在对话框的初始化函数OnInitDialog里面添加如下代码: m_tabctrl.InsertItem(0, "memo0");//添加参数一选项卡 m_tabctrl.InsertItem(1, "memo1"); //添加参数二选项卡 (3) 在对话框中添加两个对话框资源,设置好ID,属性设置为style:Child,Border为None,再适当调整宽度 阅读全文
posted @ 2012-12-06 17:37 小金马 阅读(12582) 评论(0) 推荐(0)
摘要:// 管理驱动程序#ifndef _CDRIVER_H_#define _CDRIVER_H_#include <winsvc.h> // 使用SCM函数 class CDriver{public:/** 参数: pszDriverpath 为驱动所在的目录,pszLinkName 为符号连接名字* 功能: 试图创建和打开服务*/ CDriver(LPCTSTR pszDriverPath, LPCTSTR pszLinkName); virtual ~CDriver();// 属性 // 此驱动是否可用 virtual BOOL IsValid(){return (m_hSCM 阅读全文
posted @ 2012-12-06 17:17 小金马 阅读(301) 评论(0) 推荐(0)
摘要:// 挂钩指定模块hMod对MessageBoxA的调用BOOL SetHook(HMODULE hMod);// 定义MessageBoxA函数原型typedef int (WINAPI *PFNMESSAGEBOX)(HWND, LPCSTR, LPCSTR, UINT uType);// 保存MessageBoxA函数的真实地址PROC g_orgProc = (PROC)MessageBoxA;void main(){// 调用原API函数::MessageBox(NULL, "原函数", "HookDemo", 0);// 挂钩后再调用SetH 阅读全文
posted @ 2012-12-06 17:09 小金马 阅读(339) 评论(0) 推荐(0)
摘要:01.用ZwQueryVirtualMemory枚举进程模块 02.枚举进程模块通常可以使用诸如:CreateToolhelp32Snapshot,Module32First,Module32Next 等"Tool Help Functions"接口来实现, 并且这也是最通用的方法(从Win95就开始支持了), 但是今天我们要介绍的是ntdll.dll导出的未文档化接口ZwQueryVirtualMemory,。相比前面所介绍的方法,该方法可以检测出隐藏的模块(类似IceSword)。 03.我们先来看下这个接口的原型: 04. 05.//----------------- 阅读全文
posted @ 2012-12-06 17:08 小金马 阅读(3659) 评论(0) 推荐(0)
摘要:1.VS2008提示无法打开包括文件:“afxcontrolbars.h//功能区和控件条的 MFC支持 以前用了vs2008SP1写的程序,现在用没有SP1的vs2008编译引起的 解决方法: 把#include <afxcontrolbars.h>注掉,后面加了一行 #define CWinAppEx CWinApp2. VC6.0#include<map>之后使用map容器报一大堆警告 解决方法是在 #include <map>之前加#pragma warning(disable:4786)3. Visual C++ 中fatal error C108 阅读全文
posted @ 2012-12-06 16:58 小金马 阅读(622) 评论(0) 推荐(0)
摘要:-------------------*.h-------------------------------#pragma onceclass CRemThreadInjector{public:CRemThreadInjector(LPCTSTR pszDllName);~CRemThreadInjector();// 注入DLL到指定的进程空间BOOL InjectModuleInto(DWORD dwProcessId);// 从指定的进程空间卸载DLLBOOL EjectModuleFrom(DWORD dwProcessId);protected:char m_szDllName[MA 阅读全文
posted @ 2012-12-06 16:49 小金马 阅读(745) 评论(0) 推荐(0)