11 2018 档案
摘要:注释:按“:”输入的注释只会在该处出现,按“;”的注释会在所有的交叉参考处出现 字符串搜索View->Open Subviews->String,此处字符串可与交叉引用结合使用 按ESC退后,Ctrl+Enter前进 重命名:N 标签的使用:菜单项Jump->Mark position 打开标记位置
阅读全文
摘要:1.乱码问题 当OD追踪程序时候,发现OD将代码解析成数据,从而没有反汇编识别,这是通过Ctrl+A来让OD重新分析代码,如果还是无法识别可以通过右键快捷菜单中的 或者删除UDD目录中删除对应的UDD文件 2.已经删除了断点,OD重新加载时候断点又重新出现 在配置文件ollydbg.ini中的相应内
阅读全文
摘要:应急响应 二进制安全 渗透测试 python,C++编程 流量分析溯源
阅读全文
摘要:利用虚拟网卡MAC地址 MAC地址的前三个字节标识一个供应商,而以00:0C:29开始的MAC地址与VMwara相对应。恶意代码只需要检测模拟网卡MAC地址是否在VMware范围中即可 绕过VMware痕迹探测 反虚拟机指令 绕过VMware痕迹探测 反虚拟机指令
阅读全文
摘要:调用函数检测方式 IsDebuggerPresent(检测本进程) 检查进程环境块(PEB)中IsDebugged标志 如果没有被调试就返回0,如果调试附加了进程,函数返回非零值 CheckRemoteDebuggerPresent(检测其他进程) 这个函数和上面的函数检测的原理是一致的,但是他可以
阅读全文
摘要:1.GINA拦截 在Windows XP系统中,恶意代码利用微软图形识别和验证界面(GINA)拦截技术窃取信息,GINA的目的就是微软让合法的第三方通过添加代码来自定义登陆过程。恶意代码就是利用GINA对第三方的支持来加载窃密器 具体的图形(类似于HOOK): 击键记录(这里并不是SetWindow
阅读全文
摘要:Dos攻击:拒绝服务攻击,就是合理的用运用服务请求来占用过多的服务资源,从而使用户无法得到服务响应,单一的dos就是一对一的方式,但是随着计算机的发展,计算机处理数据的能力增长,这样使得dos攻击难度增加,所以就出现了DDos 分布式拒绝服务攻击。就是利用更多的肉鸡来发起攻击,使得攻击规模增大。 D
阅读全文
摘要:AppInit_DLL(利用user32.dll) 通过AppInit_DLL特殊的注册表项,这样可以获取DLL的加载,因为AppInit_DLL中的DLL会在进程加载User32.dll时被加载 由于很多程序都是加载User32.dll,所以这些进程也会加载AppInit_DLL,恶意代码编写者通
阅读全文
摘要:进程替换的原理: 1.先利用CreateProcess来创建一个进程,但是在创建的过程中需要以挂起的方式去创建 2.进程被创建后,恶意代码就需要将进程的内存空间进行替换,通常会使用ZwUnmapViewOfSection来释放指向的内存 3.原宿主的内存被释放后,需要用VirtualAllocEx为
阅读全文
摘要:APC注入可以让一个线程在它正常的执行路径运行之前执行一些其他的代码,每一个线程都有一个附加的APC队列,他们在线程处于可警告的时候才被处理(WaitForSingObjectEx,SleepEx) 如果程序在线程可警告等待状态时候排入一个APC队列,那么线程将开始执行APC函数,恶意代码则可以设置
阅读全文
摘要:我们可以调用RaiseException来产生额外的软件异常 SEH的位置: 操作系统会检查FS段寄存器,这个段寄存器会有一个段选择子,使用段选择子可以查找线程环境快TEB,TEB中第一个数据结构是线程信息块(TIB).TIB中第一个元素就是SEH的链的指针 SEH异常处理结构类似于栈操作,新的异常
阅读全文
摘要:1.软件断点 但是软件断点的缺点就是,当我们调试自身代码的时候,如果有修改自身代码的操作,就会将我们提前好的int 0xCC,进行无意的修改,这样断点也就无法正常断下 2.硬件断点 所以相对于这一点,硬件断点的优点就显而易见 当我们在地址0xXXXXXXX设置一个断点,处理器不会关心地址所在储存的内
阅读全文
摘要:1.OD有loaddll.exe的功能,可以帮我们直接定位到dllmain函数 我们需要将其他硬件断点直接关闭,然后F9运行程序 在 然后在dll中可以看函数名称及其导出调用 然后在dll中可以看函数名称及其导出调用
阅读全文
摘要:除零异常是由硬件抛出 内存无效的访问是由操作系统抛出 也可以在代码中使用RaiseException调用,显式抛出异常 这里也就说明了异常被处理完成之后如何回到我们的代码流继续执行代码(通过栈帧) 当然漏洞的利用也可以通过将栈发生溢出,然后主动抛出一个异常,代码流也就会主动跑到刚刚溢出的异常处理函数
阅读全文
摘要:1.Windows使用两种处理器特权级别:1.内核 2.用户 2.几乎所有的代码都在用户模式,除了操作系统和硬件驱动 3.用户模式不能直接访问硬件,它被限制只能访问CPU上所有寄存器和可用指令的一个子集,所以我们为了改变硬件或者修改内核中的状态,必须依赖API 4.进入内核模式的方式:SYSENTE
阅读全文
摘要:六,注入与HOOK dll注入 我们想在远程的进程中注入一段程序,即我们写的代码,注入一个dll是最合适,也是最方便的 注入dll的套路: 一,打开进程,获取到进程句柄 二,根据打开的进程,我们在远程进程上开辟内存空间,方便我们一会将dll写入开辟的空间内 三,我们先将dll的路径写入开辟的虚拟内存
阅读全文
摘要:1. 进程 进程就是一个正在运行当中的程序 我们理解进程可以把它当做一个容器来理解,容器里面包含的有线程,其本身并没有执行代码的能力。因此我们在进程的创建之初都会创建一个主线程用于执行代码,如果此主线程结束,系统就会销毁这个进程内核对象 进程简单的分为两种:系统进程和用户进程 系统进程就是用于完成操
阅读全文
摘要:编写的步骤: 1.包含头文件和库 #include<winsock2.h> #progma comment(lib,"ws2_32.lib") 2.指定需要使用的winsock规模最高版本,并初始化winsock,装入winsock.dll WSAstartup(MAKEWORD(2,2),&wsa
阅读全文
摘要:1.一个简单的警告框 #include <windows.h> #include "stdio.h" int APIENTRY wWinMain( HINSTANCE hInstance, HINSTANCE hPreInstance, LPTSTR lpCmd, int nCmd ){ //一个简
阅读全文
摘要:WINDOW窗口相关点 风格:Windows窗口风格三个典型风格:重叠窗口,弹出窗口,子窗口 分别是:WS_OVERLAPPED WS_POPUP WS_CHILD 控件基础 控件时windows系统内置的窗口类,他们时某一个窗口的子窗口,所以创建他们的风格必须是WS_CHILD 控件消息: 控件消
阅读全文
摘要:sscanf_s(); 字符串转数字 atoi(目标字符串) sprintf_s(); 数字转字符串 SetLastError(); 每个线程下,保存错误码函数,在API函数退出前都会调用此函数 GetLastError(); 在API结束后,紧跟着调用此函数们能够得到错误码,多用于检测API是否使
阅读全文
摘要:dll又称动态链接库 他是实现操作系统共享函数库概念的一种方式,我们常见的dll有 系统API模块文件: user32.dll kernel132.dll ActiveX控件: windows上的日历控件 控制面板: 控制面板上的每一项都是一个专用的DLL 设备驱动程序文件: 打印机程序 dll文件
阅读全文
摘要:1. CUI程序与GUI程序 CUI程序:控制台界面 GUI程序:图形用户界面程序 2. windows编程头文件 通常我们包含windows.h头文件,它是一个 综合型头文件。 其次还有一些头文件,例如:tchar.h,通用字符串的定义 Commctrl.h控件API的定义 3. WinMain函
阅读全文
摘要:循环结构 循环结构 一,while循环 使用方式和之前学的一致,这里只说新加入的 while...else 当while语句条件为false时候执行else (else和while平级) 二,for循环 和之前的有差别,它支持序列和迭代器作为参数 简单用法: 新增的for-else语句 和while
阅读全文
摘要:元组 元组与列表类似,不同之处在于元组的元素不可修改 元组 元组 元组 元组使用小括号,列表使用方括号 命名方式: 普通命名:tup1=('哈哈' , '蛤蛤' , '嘿嘿') tup2='abv', 'jinf' , '222',5 (不同括号也可以) 这里解释下,无关闭分割符,用逗号隔开 默认元
阅读全文
摘要:. python简介 Python是一种解释型语言 Python使用缩进对齐组织代码执行,所以没有缩进的代码,都会在载入时自动执行 数据类型:整形 int 无限大 浮点型 float 小数 复数 complex 由实数和虚数组成 Python中有6个标准的数据类型: Number(数字) Strin
阅读全文
摘要:类和对象 类的定义这里不多赘述,直接看数据属性 数据属性分为实例属性和类属性: 实例属性:是在构造函数__init__定义时候以self作为前缀,实力属性属于实例所有,只能通过对象名去访问 类和对象 类的定义这里不多赘述,直接看数据属性 数据属性分为实例属性和类属性: 实例属性:是在构造函数__in
阅读全文
摘要:双进程守护思路: 就是进程A 打开后,发现进程B没有打开,就主动去打开进程B, 并且实时监控进程B是否被关闭,如果进程B被关闭了,就再去打开进程B 进程B的代码也一样,去守护进程A 核心思路就是事件对象 这里给出伪代码: //1.创建一个进程A的事件对象 HANDLE EventB = Create
阅读全文
摘要:NEW int *p=new int [10] p指向了第一个int地址 方括号内的必须是整形,但不必是常量 还可以用一个数组类型的类型别名来分配一个数组 <wiz_code_mirror> typedef int arr[10]; //arr表示10个int的数组类型 int *p = new a
阅读全文
摘要:define 没有类型,不能指明一组数据之间具有关联性, 有参宏的时候,逻辑不符合计算逻辑 容易产生误解 宏的结尾不用分号 宏的作用域是从定义位置开始,到文件结束,如果要终止宏定义的作用域,则可以用#undef 宏名称 #define PI 3.14 ....... #undef PI const
阅读全文
摘要:虚函数 虚函数的存在说明了C++的多态性 实现的方法:父类指针指向了子类对象,调用虚函数,调用的是子类的虚函数 (如果没有虚函数,那么无论用父类指针怎么调用函数,会永远调用父类函数,因为这是静态联编) 只有通过基类指针或者引用去调用虚函数,才会引发动态联编 基类中的虚函数,在派生类中也是虚函数,即使
阅读全文
摘要:类中的静态成员 1. 在类中的静态数据,属于类共享,不属于对象独有 2. 即使没有定义对象,静态成员也是存在的 3. 静态数据成员在类中说明,在类外定义 并且会给他分配内存空间,并初始化(一经定义则必须初始化) 4. 可以通过对象去访问静态成员,但是这里容易让人产生误解,以为他们是成员变量(静态成员
阅读全文
摘要:1. 友元的声明只能出现在类的内部,但是在类内出现的具体位置不限制,友元函数不是类的成员 也不受所在区域访问控制级别的限值 2. 友元函数的定义可以在类内也可以在类外 3. 友元函数它不是成员函数,它不受作用域的限值,不属于类,也不属于对象,他就是一个普通的函数 友元函数使用典型错误: <wiz_c
阅读全文
摘要:1.new申请对堆空间,方括号里必须是整型, int * p =new int [10] () 加括号全部初始化为0 int * p =new int [10] {1,2,3,4,5} 加大括号按位置初始化 动态分配一个空数组是合法的 char *p =new char[0] (合法) 释放动态数组
阅读全文