刘收获

导航

11 2017 档案

结构体及类对象的内存对齐
摘要:https://bbs.pediy.com/thread-222967.htm 环境:VS2015 (x86) 0x01 结构体的内存对齐 先看这个例子: 输出的sizeof(Monster)的值为12,来看看结构体MonsterObject的内存: 结构体中的第一个和第三个成员虽然是char类型只 阅读全文

posted @ 2017-11-28 22:51 沉疴 阅读(444) 评论(0) 推荐(0) 编辑

菱形继承问题和虚继承
摘要:0x01 菱形继承 假设有类B和类C,它们都继承了相同的类A。另外还有类D,类D通过多重继承机制继承了类B和类C。 如果直接继承会引发访问不明确(二义性),以及数据冗余。如果直接指定访问对象,可解决二义性,而要解决数据冗余,则要引入虚函数。 因为图表的形状类似于菱形(或者钻石),因此这个问题被形象地 阅读全文

posted @ 2017-11-28 22:41 沉疴 阅读(2755) 评论(0) 推荐(2) 编辑

TLS反调试
摘要:0x01 TLS反调试简介 TLS(Thread Local Storage)原本的目的是解决多线程程序中变量同步的问题。线程本身有独立于其他线程的栈空间,因此线程中的局部变量不用考虑同步问题。多线程同步问题在于对全局变量的访问,TLS在操作系统的支持下,通过把全局变量打包到一个特殊的节,当每次创建 阅读全文

posted @ 2017-11-22 22:11 沉疴 阅读(1129) 评论(0) 推荐(1) 编辑

获取程序目录,模块路径
摘要:0x01 API (1)GetCurrentDirectory。 获取进程的当前目录 参数 nBufferLength:输入参数,存储路径字符串缓冲区的大小,一般调用MAX PATH。 lpBuffer:输出参数,指向获取的路径字符串。 返回值 返回DWORD值,如果为0,表示执行失败,可以使用Ge 阅读全文

posted @ 2017-11-21 23:01 沉疴 阅读(535) 评论(0) 推荐(0) 编辑

延迟载入Dll(动态载入Dll)
摘要:windows核心编程(第五版)20.3节的延迟载入Dll 延迟载入Dll技术出现的原因: 因为DLL的加载是比较浪费时间的,特别是大型软件加载,因此,这项技术是在应对软件初始化过程中避免浪费太多的时间。 [1]因为部分DLL是在软件运行过程中才加载的。因此,DLL的加载延迟在了进程的运行过程中,节 阅读全文

posted @ 2017-11-21 22:45 沉疴 阅读(814) 评论(0) 推荐(0) 编辑

Dll重定向(尚存否?)
摘要:windows核心编程(第五版)的20.6节介绍了Dll重定向。 0x01 Dll重定向简介 产生Dll重定向原因: 应用程序 a.exe 依赖动态链接库 compoent.dll 1.0 版本。但是用户的另一个软件 b 在系统的系统目录安装了 component.dll 2.0 版本,这两个版本不 阅读全文

posted @ 2017-11-21 21:20 沉疴 阅读(1083) 评论(0) 推荐(0) 编辑

delete和delete[] 区别
摘要:// DeleteAndDelete[].cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace std; /* delete ptr 只用来释放ptr指向的内存。 delete[] ptr 用来释放rg指向的内存,并且逐一调用数组中每个对象的析构函数 ... 阅读全文

posted @ 2017-11-21 18:25 沉疴 阅读(256) 评论(0) 推荐(0) 编辑

06 序列号保护 学习分析(字符串)
摘要:《加密与解密》学习小结 0x01 序列号产生方式 序列号保护机制一般情况下,我们所使用一个程序如果是要付费的话最常见的方法应该就是使用一个序列号即可,那么这个序列号总是明着(暗着)会提供一个(几个)特殊信息来对其特殊转换最终呈现为一个用于交易的注册码(这里的信息就是类似于用户名密码,或者是单纯的用户 阅读全文

posted @ 2017-11-19 13:53 沉疴 阅读(439) 评论(0) 推荐(0) 编辑

05 初识加壳脱壳
摘要:(很久以前的学习记录,放到博客上来) 1.IsDebuggerPresent()函数(CheckRemoteDebuggerPresent()) 确定调用进程是否由用户模式的调试器调试. #include "stdafx.h" #include<windows.h> #include<stdio.h 阅读全文

posted @ 2017-11-19 10:53 沉疴 阅读(1323) 评论(0) 推荐(0) 编辑

04 复制删除行为IDA反汇编
摘要:(很久以前的学习记录,放到博客上来) (IDA5.0版的不知道为何反汇编进去每一行被截断的景象,惨不忍睹......明明是个正版的。只好回来用拷过来的破解版,依然有一些叽里呱啦的问题,懒得管了,勉强能用。)之前的一个拷贝自身到C盘下,并删除自身的exe文件(Reverse 01 中的),拖到IDA里 阅读全文

posted @ 2017-11-19 10:49 沉疴 阅读(396) 评论(0) 推荐(0) 编辑

03 复制行为动态分析
摘要:(很久以前的学习记录,放到博客上来) 下载新的exe继续逆向,下载时就被360 safe隔离了,放行拉出来。运行结果:查看Process Monitor,结果与之前类似,在查注册表,CreateFile: 在C:\Users\asus\AppData\Roaming\Microsoft\Window 阅读全文

posted @ 2017-11-19 10:43 沉疴 阅读(259) 评论(0) 推荐(0) 编辑

02 条件语句静态分析
摘要:(很久以前的学习记录,放到博客上来) 逆向一个简单的exe文件。运行起来只有一个简单的对话框,显示出“Hello! Windows” 把exe拖到WinHex中看二进制了(或者说是16进制)。看到几个应该是关键的地方:PE文件的DOS_header的MZ(4a5d)标志没啥好说的。发现了一个C盘下的 阅读全文

posted @ 2017-11-19 10:36 沉疴 阅读(340) 评论(0) 推荐(0) 编辑

01 病毒的自启动行为
摘要:(很久以前的学习记录,放到博客上来) 从github上下载了个exe来学习,下载在了F盘,exe运行,如图一下就被360 safe 截住了,我给它放行了。 直接到C盘下的Startup目录下了,想要开机自启动。这时候用Procmon查看进程信息,哗啦啦起来一大片: 先是ngen.exe在RegQue 阅读全文

posted @ 2017-11-19 10:26 沉疴 阅读(310) 评论(0) 推荐(0) 编辑

const & define & inline
摘要:0x01 const & define区别 宏定义#define发生在预编译期,而const,enum定义的常量发生在编译期,两者的重要差别在于编译期里的变量是进符号表的,而预编译期的宏是简单的替换,不进符号表。 宏#define没有数据类型,只是用来做文本替换,存在于程序的代码段,是一个Compi 阅读全文

posted @ 2017-11-17 14:35 沉疴 阅读(165) 评论(0) 推荐(0) 编辑

static作用
摘要:存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量。 0x01 (普通)全局变量与静态全局变量 (隐藏) 未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问,全局变量名或者函数名前加stati 阅读全文

posted @ 2017-11-17 13:56 沉疴 阅读(5990) 评论(0) 推荐(0) 编辑

minidebug学习分析 01 基本框架
摘要:0x01 基本框架 基本框架就是CreateProcess启动目标程序,再通过调试事件DEBUG_EVENT在调试循环中监控程序的行为。 (1)CreatProcess 双击一个EXE可执行文件时,Windows内核也就会自动调用CreatProcess 函数创建我们双击的文件所对应的进程。 Cre 阅读全文

posted @ 2017-11-13 16:35 沉疴 阅读(463) 评论(0) 推荐(0) 编辑

注册表操作
摘要:0x01 简介 注册表是windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心“数据库”,也可以说是一个非常巨大的树状分层结构的数据库系统。 注册表记录了用户安装在计算机上的软件和每个程序的相互关联信息,它包括了计算机的硬件配置,包括自动配置的即插即用的设备和已有的各种设备说明 阅读全文

posted @ 2017-11-12 13:15 沉疴 阅读(485) 评论(0) 推荐(0) 编辑

反射Dll注入分析
摘要:(源码作者:(HarmanySecurity)Stephen Fewer) 0x01 反射Dll注入的优点 1.反射Dll注入的主要优点是它没有以主机系统的任何方式(例如LoadLibrary和LoadLibraryEx)进行注册,因此在系统和进程级别上基本上都是不可检测的,并且反射DLL注入写入了 阅读全文

posted @ 2017-11-08 23:05 沉疴 阅读(1275) 评论(0) 推荐(0) 编辑

栈回溯简单实现(x86)
摘要:0x01 栈简介 首先局部变量的分配释放是通过调整栈指针实现的,栈为函数调用和定义局部变量提供了一块简单易用的空间,定义在栈上的变量不必考虑内存申请和释放。只要调整栈指针就可以分配和释放内存。 每个函数在栈中使用的区域叫做栈帧Stack Frame,在X86中,通常使用EBP寄存器作为帧指针使用,E 阅读全文

posted @ 2017-11-08 16:41 沉疴 阅读(1575) 评论(0) 推荐(0) 编辑