自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 收藏
  • 关注

原创 PDB不一致

一、pdb文件简介英文:Program Data Base,即程序的基本数据,是VS编译链接时生成的文件。pdb文件主要存储了如下调试信息:(1)public, private,和static函数地址。(2)全局变量的名称和地址。(3)参数和局部变量的名称及它们在栈中的偏移量。(4)类型定义,包括class, structure,和 data definitions。(...

2019-09-10 00:25:25 1513

原创 脱壳常见问题

脱壳常见问题:内存dump之后图标无显示, 资源文件不见了?产生原因: 内存中的数据大小大于文件中的大小, 导致dump时, 将资源节数据后移, 而原始的资源节的指针还是指向之前的位置, 此时的数据为0.解决方案: 修改资源节的指针指向资源数据往下移动后的位置, 或者删除多余的数据, 将资源节的数据剪切到原始位置.内存dump的时机, 程序停在OEP后进行dump, 程序能够...

2019-07-26 19:56:41 344

原创 IDA中SIG文件

静态链接库(Lib): 重命名为.7z, 记录了函数的符号信息.使用dumpbin /exports XXX.lib > XXX.txtFLIRT签名识别库函数:创建模式文件: PCF XXX.lib XXXX.bat 创建符号文件:SIGMAKE XXXX.bat XXXX.sig将生成的XXXX.sig文件放到ida中sig文件夹下OD动态调试时.可以先通...

2019-07-26 19:52:49 434

原创 IDAF5常见错误

问题一: JMPOUT问题产生原因: IDA是一款静态分析工具, 从上到下进行扫描.问题二: return 函数问题产生原因: 函数返回值通常为寄存器EAX, IDA无法识别函数的调用约定.解决方案: 修改函数的调用约定, Y, USERCALL(IDA特有), 修改为函数返回值 __USERCALL 函数名称<函数返回值寄存器>(函数参数)问题三...

2019-07-26 00:01:40 2480

原创 TCP协议

TCP: 传输控制协议.基于TCP的应用层协议:HTTP: 80HTTPS: 443FTP: 21SSH: 22TELNET: 23SMPTP/POP : 25/110TCP 三次握手, 四次挥手(flags: SYN , ACK, FIN):TCP三次握手的原理:TCP四次握手:TCP可靠传输(Seq, ACK, 超时重传...

2019-07-21 21:14:30 97

原创 DHCP协议

DHCP协议: 动态主机配置协议, 用于实现对终端设备的动态IP的分配.DHCP协议的流程:DCHP Discover/Offer 数据包通常发生在某台设备新加入某个网络时, 为该设备分配IP地址.WireShark下DHCP协议解析: 可以再命令行下使用命令ipconfig /release和ipconfig /renew来抓取DHCP协议数据包.如果处于无线网卡可以先设置为固...

2019-07-21 03:32:22 135

原创 DNS协议

UDP协议:源端口: 发送者的端口目标端口: 接收端的端口数据包长度:校验和:DNS协议: 域名解析协议.用于域名与IP地址的解析.DNS-RequestDNS-Reply:端口范围: 1-65535; 通信过程中,源端口一般属于随机高端口, 目的端口一般为知名端口(1-1023)....

2019-07-20 23:54:32 772

原创 ICMP协议

ICMP协议:互联网信息控制协议, 用于实现链路连通性和链路追踪, 可以实现链路差错报告.ICMP-Request:ICMP-Reply:Type Code: 8 0 标识ICMP请求 0 0 标识ICMP应答ID: 用于标识ICMP数据的进程Seq: 标识数据包的序号, 使用ping命令可以实现网络延迟的测试Tracert/Traceroute的使用及抓包分...

2019-07-20 22:56:05 330

原创 ARP协议

ARP(地址解析协议),用于实现从IP地址到MAC地址的映射ARP Request:ARP Reply:ARP缓存表:ARP Request/Reply图解:免费ARP: 通常发送系统引导阶段或者IP地址发生变化时发送, 用于局域网内其它主机更新ARP缓存表.ARP攻击:某ARP攻击工具的数据抓包及分析:1. 局域网扫描, 发...

2019-07-20 21:04:44 96

原创 IP协议

IP协议:用于实现数据的不可靠的面向无连接的通信IP协议中的字段:WireShark中IP协议中的数据:Version/版本号: 表示IP协议的版本头部长度: 表示IP协议头部长度DSCP/TOS: Qos服务质量用于实现流量标记总长度: 表示IP协议的总长度标识符: 用于标志分片的进程标志符: MF标志符用于告诉接收方是否还有分片, 0表示没有, 1表示有...

2019-07-20 14:51:33 209

原创 Ethernet协议

Ethernet以太网协议,用于实现链路层的数据传输和地址封装.字段含义:Destination/目的字段:标识目标通信方的MAC地址Source/源字段:标识发送端的MAC地址Type/类型值:标志上层协议MAC地址:1. 所有设备的MAC地址是全球唯一的.2. MAC地址大小为6字节3. MAC地址的前半部分被称为"OUI代码"厂商唯一标识符, 后...

2019-07-20 13:04:43 3698

原创 检查动态库文件是否存在,或者文件是否一个合法的动态库

Cant Load lib:biznomgr, Please Check is this file exist?Cant Load lib:packer, Please Check is this file exist? Level:ERROR Module:插件容器 Message:PLUGIN[biznomgr] ...

2018-11-27 18:00:06 913

原创 调用约定

__cdcel //调用方平衡堆栈可以使用复写传播进行优化, 函数内部通常为ret printf("%s\n", "hhe122h");00BE1002 xor eax,0BE2090h 00BE1007 push 0BE2100h 00BE100C push 0BE2108h ...

2018-11-21 20:25:58 144

原创 swtich...case反汇编分析

int a = 0; AB1448 mov dword ptr [a],0 //a初始化为0 scanf("%d\n", &amp;a); ...

2018-11-21 20:24:15 161

原创 全局变量,局部变量,静态局部变量

局部变量 作用域在函数内部 变量的寻址 通过esp寻址或者ebp寻址全局变量 整个进程 通过绝对地址寻址静态局部变量可以被多次赋值, 其值为最近一次赋值的值但静态局部变量的初始化只能初始化一次, 如果对多次初始化,其实质也只会进行一次初始化, 因此其值也只是第一次初始化的值. 通过绝对地址寻址 static int sum = i;00F33A1E mov e...

2018-11-21 20:19:54 314

原创 vs如何对堆空间进行管理

//释放空间是只需要执行断链操作,当某个堆空间被释放后,再次申请堆空间时会检查这个被释放的堆空间能够满足的用户要求.如果能满足,则再次申请的堆空间的地址将会是刚释放过的堆空间地址typdef struct _CrtMemBlockHeader{ struct _CrtMemBlockHeader *pBlockHeaderNext; //下一块堆空间首地址(指向的是前一次申请的内存信...

2018-11-21 20:18:00 568

原创 do...while, while, for循环效率PK

debug版本:do{sum++;01321471 mov eax,dword ptr [sum]01321474 add eax,101321477 mov dword ptr [sum],eax} while (sum &lt; a);0132147A mov eax,dword ptr [sum]0132147D cmp eax,dword ptr [a]...

2018-11-21 12:15:53 3389

原创 定长硬编码

定长硬编码                 50 51 52 53 54 55 56 57   push eax push ecx push edx push ebx push esp push ebp push esi push edi   ...

2018-08-17 11:17:09 1304

原创 远程线程注入

在win32进程中,每个进程都有自己独立的4GB地址空间,各个进程之间相互不影响,win32API中提供能够了2个函数,writeProcessMemory和readProcessMemory,这两个函数可以在指定进程的内存中进行读写操作。HANDLE CreateRemoteThread(     HANDLE hProcess,     LPSECURITY_ATTRIBUTES ...

2018-08-17 11:08:41 2338

原创 windows线程Context

线程;操作系统会维护该线程的CPU寄存器的状态,该结构为上下文结构。Context线程创建时可以指定线程为暂停状态,这样操作系统在调度时便不会进行调度该线程。当线程的运行坏境作出修改时,必须是线程成为可调度进程。ResumeThread如果该函数运行成功返回线程的前一个暂停计数。 每个线程内核对象都维护着一个CONTEXT结构,里面保存了线程运行的状态,线程也就是eip。使得C...

2018-08-10 09:51:13 3366

原创 事件 信号量 临界区 互斥锁

HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,// 安全属性BOOL bManualReset,// 复位方式BOOL bInitialState,// 初始状态 FALSE创建时为未通知状态 TRUE创建时为已通知状态LPCTSTR lpName // 对象名称);bManualReset 为TRUE...

2018-08-10 09:50:07 2297

原创 利用c++11tuple实现多级排序

最近在做存储过程改造为内存数据库的服务的过程中,遇到了很多需要进行排序的地方,而利用sql语言本身的特性,可以很方便的对数据库查找出来的数据进行排序,而在使用c++语言进行改造的过程中,每次需要进行排序的地方,使用lambda或者函数对象去实现相应的功能,对于存储中只针对少许字段进行排序时,还可以很方便的实现,但是当涉及到字段很多时,需要写很多的逻辑判断,而且代码的阅读性很差,因此,想着有没有什么...

2018-06-28 20:47:11 2378 2

原创 stl边遍历边删除

#include &lt;iostream&gt;//非序列式容器#include &lt;set&gt;#include &lt;map&gt;#include &lt;list&gt;//序列式容器#include &lt;vector&gt;#include &lt;deque&gt;using namespace std;int main(){ std::vect...

2018-06-05 19:31:41 797

原创 加密解密基础

信息 --- 0,1 --- 高低电平 1. 可逆算法(ex:网络通信)2. 不可逆算法(ex:密码的加密)1.字符移位加密算法y a n g l k假设秘钥为yanglk ,明文为 too young to simpley a n g l k6 1 5 2 4 3 t o o y o un g t o s im p...

2018-06-05 00:49:23 1065

原创 gdb调试基础

##调试基础获取core dump(内核转储)文件,保存了问题发生时的状态。  大多数Linux发行版默认情况下关闭了内核转储的功能。通过使用ulimit命令可以查看当前的内核转储功能是否有效。  ulimit -c  0  -c表示内核转储文件的大小限制,为0表示内核转储无效。可以使用ulimit -c ulimited,设为无限制之后,发生问题时进程的内存就可以全部转储到内核转储文件中。  通...

2018-06-01 22:53:28 132

原创 do...while(0)的使用

为什么需要使用do...whie(0),我们都知道do{...}while(condition)可以表示循环,但我们会遇见一些宏定义中可以不用循环的地方,使用到了do{...}while(0)。ex:#define foo(x) do{\statement1;\statement2;\}while(0)在初次遇见这样的宏定义的过程中会觉得比较奇怪,既然循环里面的语句只执行了一次,为什么会需要看似多...

2018-05-27 23:36:35 265

原创 map简单分析

map中数据的插入操作//方式1:map.insert(pair&lt;T1,T2&gt;());//方式2:map.insert(map&lt;T1,T2&gt;::value_type());//方式3:map[key] = value;上面两种方式和下面的方式,虽然都可以实现数据的插入操作,但在数据的插入性上涉及集合的唯一性。即当map中有这个关键字时,insert操作是插入不了数据的,...

2018-05-27 23:35:06 232

原创 GIt

1 分布式版本控制系统基本概念1.1 版本库用来存储所有历史数据的地方。大多数版本库中存储了文件的当前状态,历史修改时间,修改者以及修改的原因。Git分布式版本库,每个人都会在本地有自己的版本库,而不是服务器上公共的版本库。版本库中其他存储的常见内容有Makefile,配置文件,设计文档,使用文档,运行脚本,单元测试脚本等信息。1.2 工作目录树开发项目中所需要的全部文件,...

2018-03-26 12:23:37 182

原创 gPRC基础教程

1.什么是RPC? RPC 远过程调用.在理解远程调用之前,首先我们来了解一下本地调用,只有更好的理解了本地调用,才能更好的理解RPC.1.1 本地调用 ex:本地的函数调用 在函数调用的时候,一般会经过几个步骤 返回地址入栈 参数入栈 提升堆栈空间 函数参数的复制 执行函数调用 清空堆栈1.2.为什么需要RPC?

2018-01-05 20:02:16 11629

原创 STL学习笔记-模板知识

基础知识泛化templateclass Test{};特化templateTest{};偏特化个数偏特化templateclass Test{};templateclass Test{};范围偏特化templateclass Test{};templateclass Test{};templatec

2017-12-17 00:25:28 115

原创 STL学习笔记

容器的结构序列式容器array 连续的储存空间 且大小固定vector 连续的储存空间 起始位置固定 动态向后扩容 每次增长的大小为2倍增长动态增长的过程中 需要重新找到空间 需要转移元素deque 双向 分段连续空间 每次新增时扩充一个buffer 内部可以实现队列 和 栈 list  非连续的储存空间 双向链表

2017-12-16 21:57:11 161

原创 线程类基本封装

线程类面向对象风格:通过子类重写run方法 实现多态 从而实现依赖反转但我们要提供抽象类和接口将run()方法和startThread()方法声明的私有的 其实本没有有必要声明为公有的 我们在start------>startThread ---->runclass Thread{Thread();virtual ~Thread();void s

2017-12-15 15:38:18 921

原创 muduo学习异常类

头文件#include 获取程序的堆栈信息的函数/* Store up to SIZE return address of the current program state in   ARRAY and return the exact number of values stored.  */int backtrace(void **array, int size);

2017-12-15 15:36:59 220

原创 Linux下原子操作函数

Linux 下gcc内置的原子操作函数头文件#include编译时需要加上-march= cpu-type(可以设置为native 让系统自动去检测)//先获取值再操作type __sync_fetch_and_add (type *ptr, type value, ...)type __sync_fetch_and_sub (type *ptr, type

2017-12-15 15:34:18 2313

原创 Linux下时间相关

/*与时间相关的定义所在的文件夹/usr/include/time.h /usr/include/bits/time.hstruct timeval { time_t tv_sec; susecond_t tv_usec; //当前妙内的微妙数 };struct tm   {   int tm_sec; //当前秒    int tm_m

2017-12-15 15:33:02 258

原创 rabbitmq

最近在看后台框架的源码中,在初次看到系统的三层架构中使用了中间件rabbitmq,可能之前没有使用过相关的中间件,一时之间在看到rabbitmq中间件的使用的时候,没有看懂,于是看了相关的博客,发现很多博客都只是很抽象的描述了,但我们在看代码的过程中,里面的数据其实还是比较复杂的,导致了第一次直接看源码的时候并没有了解到其真正的含义,如果想更好的了解,其实根本不用看相关的博客,rabbitmq官网的

2017-12-11 21:05:13 272

原创 设计模式之单例模式

GOF 单例模式class Singleton{public:static Singleton * getInstance(){if(pInstance == NULL){pInstance = new Singleton();return pInstance;}}void releaseInstanc

2017-12-10 18:11:19 103

原创 ref

在C++的算法和函数之间,以类对象作为参数的情况很非常常见的问题,一般情况下传值语义是可行的,但也有很多特殊情况,作为参数的函数对象拷贝代价过高(具有复杂的内部状态),或者不希望拷贝对象(内部状态不应该被改变),甚至拷贝是不可行的(noncopyable、单件)。templateclass T> class reference_wrapper  {   public:

2017-12-03 23:04:46 184

原创 智能指针

1.内存泄漏2.野指针3.访问越界boost智能指针(RAII资源获取及初始化 在构造函数中初始化 在析构函数中释放资源) class RAIIClass{public:RAIIClass(){InitializeCriticalSection(&cs);EnterCriticalSection(&cs);

2017-12-03 22:58:38 166

原创 静态链接库与动态链接库

静态链接库会生成lib文件(实现)和.h文件 (声明)使用静态链接库的方法1.将这两个文件复制到项目工程目录下 包含头文件 #pragma comment(lib,".lib")2.在项目设置中,链接是将.lib文件也链接进来静态链接库只是单纯将代码全部生成在项目中,并没有实现真正的模块化。动态链接库的生成 (windows下

2017-12-03 17:43:57 120

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除