- 博客(540)
- 资源 (38)
- 收藏
- 关注
原创 Blockchain-搜集资料
区块链入门教程(阮一峰)Blockchain入门 - 可视化演示比特币的原理有没有想过比特币(和其他加密货币)是如何工作的?
2018-03-22 11:11:16 235
原创 chrome-RefCountedThreadSafe所谓的线程安全是什么?
RefCountedThreadSafe的引用计数是原子操作的,所以网上查到的统一的说法线程安全,RefCountedThreadSafe也有很多非原子操作,它所谓的线程安全是什么意思 比如用scoped_refptr操作RefCountedThreadSafe跨线程会线程安全吗?写个简单的示例测试:class Test : public base::RefCountedThreadSa...
2017-12-24 14:25:41 1318
原创 chrome-智能指针的用法
scoped_ptr代码来自:base\memory\scoped_ptr.h 它包装了new操作符,保证在析构时会删除这个对象: 构造一般用法:// The input parameter must be allocated with new. explicit scoped_ptr(C* p = NULL) : ptr_(p) { }// Resetvoid reset(...
2017-12-22 13:39:29 923
原创 SVN迁移到GIT后续推送
SVN迁到GITgit svn init xxxgit svn fetch或者git svn clone xxx关联到远程服务器,如果已存在,以下二选1git remote rm origin //删除origingit remote add origin xxx.git //重新添加origingit remote 查看所有的远端git remote set-url origin x...
2017-12-17 20:33:27 2197 1
原创 23.driverbase-易错点:CreateFile返回1
原因:未定义IRP_MJ_CREATE的派遣函数,I/O管理器并没有收到一个成功的返回,所以它会返回错误
2017-08-17 17:10:48 589
原创 22.DriverBase-ObReferenceObjectByHandle通过Ring3句柄获得Ring0对象
ObReferenceObjectByHandle通过Ring3句柄获得Ring0对象
2017-08-17 17:06:58 1334
原创 21.driverbase-多线程PsCreateSystemThread
NTKERNELAPINTSTATUSPsCreateSystemThread( __out PHANDLE ThreadHandle,// 得到新创建的线程句柄 __in ULONG DesiredAccess,// 创建的权限 __in_opt POBJECT_ATTRIBUTES ObjectAttributes,// 线程属性,一般设为NULL __in_
2017-08-17 14:53:39 514
原创 77.windbg-!drvobj、.devstack(驱动对象,设备栈,AttachedDevice)
!drvobj、.devstack(驱动对象,设备栈)演示
2017-08-10 11:58:08 2170
原创 73.windbg-调试UnhandleExceptionHandler
代码如下:LONG __stdcall _UnhandledExceptionFilter(_EXCEPTION_POINTERS* ExceptionInfo){ MessageBox(0,NULL,NULL,0); return EXCEPTION_EXECUTE_HANDLER;}int main(){ SetUnhandledExceptionFilter(&_Un...
2017-06-04 14:20:41 1458
原创 53.VC(Custom)-vs项目依赖项
用了这么久项目依赖项,居然没注意到这个小细节:如果项目依赖项是lib库,你不需要在工程配置指明lib名字,或直在代码中包含lib名字,直接就可以用了
2016-03-07 20:53:42 884 1
原创 20.IDA-修改二进制文件、显示修改点
1.功能选项Edit▶Patch Program菜单是GUI版本的IDA的一项隐藏功能,用户需要编辑idagui.cfg配置文件才能激活该菜单 可用选项如图所示 1.1.Change byte用于编辑IDA数据库中的字节值。相关的字节编辑对话框如图所示 这个对话框显示了从光标所在位置开始的16个字节的值。你可以更改显示的部分或全部字节。 同时,Address表示了虚拟地址,File of
2016-02-10 21:06:41 23261 3
原创 11.IDA-this指针
所有非静态C++成员函数都使用this指针。任何时候调用这样一个函数,this都被初始化,指向用于调用该函数的对象. 最好是把this看成是传递到所有非静态成员函数的第一个隐藏参数.this存放的地方1.Visual C++利用thiscall调用约定,并将this传递到ECX寄存器中 2.GNU g++编译器则把this看做是函数的第一个(最左边)参数,并在调用该函数之前将用于调用函数的对象的
2016-02-09 17:11:37 2302
原创 72.windbg-命令行选项(command-line options)
WinDbg的快捷方式属性中的“目标(T)”栏里输入参数可以执行不同的命令,如前面提到的VM双机调试特别注意 除了-j 之外所有命令行参数都是大小写敏感的 -aExtension 设置默认的扩展DLL。默认值为kdextx86.dll或kdexts.dll。在”a”之后不能加入空格,并且不能包含.dll 扩展名。-b (仅ring0模式) 该选项有两个作用: 1.调试器在连接
2016-02-09 16:49:03 3006 1
原创 19.IDA-栈指针调节、设置函数特性
栈指针调节 IDA会尽其所能跟踪函数内每一条指令上的栈指针的变化。IDA跟踪这种变化的准确程度,在很大程度上影响着函数的栈帧布局的准确程度。如果IDA无法确定一条指令是否更改了栈指针,你就需要手动调整栈指针 如果一个函数调用了另一个使用stdcall调用约定的函数,就会出现上述情况,这是最简单的一种情况。如果被调用的函数位于IDA无法识别的共享库中(IDA拥有与许多常用库函数的签名和调用约
2016-02-03 11:26:17 6262
原创 18.IDA-创建自己的sig
工具flirt68.zip pcf.exe/pcf: 生成一个模式文件.pat sigmake.exe: 生成一个签名文件.sig流程创建PAT生成pat文件,pat.txt文件说明各个模式的格式。第一部分列举了它所代表的函数的初始字节序列,最长为32个字节。一些字节因为重定位的入口而有所不同,这些字节将得到“补偿”,每个字节以两点显示。。如果一个函数短于32个字节(例如前面代码中的_
2016-01-30 21:16:25 6045 1
原创 17.IDA-基本块的定义
基本块是一条或数条指令的组合,它拥有唯一一个指向块起始位置的入口点和唯一一个指向块结束位置的退出点,通常,为判定基本块,应忽略函数调用指令并未将控制权转交到当前函数这一事实,除非已知被调用的函数无法正常返回。 基本块在行为方面有一个重要的特点 一旦基本块中的第一条指令开始执行,块中的其他指令都会执行,直到最后一条指令 因此,你可以为每个基本块的第一条指令设置断点,当这些断点被触发时,相关
2016-01-28 17:17:50 2142
原创 16.IDA-列出函数中存在的全部call
有时待分析的函数反汇编太长,需要确认此函数调用了哪些call 选择View▶Open Subviews▶Function Calls窗口 窗口的上半部分列出了所有调用当前函数(由打开窗口时光标所在位置决定)的位置 窗口的下半部分列出了当前函数做出的全部调用如,查看fopen的反汇编调用
2016-01-28 10:30:25 5055
原创 15.IDA-查看XREF列表
查看XREF列表在某个位置显示的交叉引用注释的数量由ida.cfg控制,其默认设置为2,当然你可以改变它SHOW_XREFS = 2 // Show 2 cross-references (the rest is accessible by Ctrl-X)示例代码:int read_it; int write_it; int ref_it; void callflow() {} int
2016-01-27 18:09:57 3301
原创 14.IDA-XREF(交叉引用)概述
XREF分类 CODE XREF:代码交叉引用 DATA XREF:数据交叉引用XREF描述含义这是个代码交叉引用sub401000是被引用者,main+2A是引用者(引用sub401000的位置)下箭头表示引用者的地址比sub401000高,你需要向下滚动才能到达引用者地址(main+2A),上行反之~ 4.每个交叉引用注释都包含一个单字符后缀(箭头后面),用以说明交叉引用的类
2016-01-27 16:35:16 18856
原创 13.IDA-显示正确的函数名称(去掉c++后缀命名)
随便看一段IDA的反汇编: C++编译器用于区分重载函数的机制。为了给重载函数生成唯一的名称,编译器用其他字符来修饰函数名称 图左就是C++的后缀命名法,图右是正常的函数名字为了显示正常的函数名字,使用Options▶Demangled Names 比如,我们选中Names,反汇编将显示为: 附 如果一个二进制文件使用了后缀命名,IDA的取消改编功能会立即展示函数的参数类型和返回
2016-01-26 21:34:43 8000
原创 12.IDA-虚函数和虚表
vtable编译器会为每一个包含虚函数的类(或通过继承得到的子类)生成一个表,其中包含指向类中每一个虚函数的指针,这样的表就叫做虚表(vtable)__vfptr每个包含虚函数的类对象都获得__vfptr指针,并且是对象的第一个数据成员 编译器必须要保证虚函数表的指针存在于对象实例中最前面的位置在计算对象的总大小时,也必须考虑到虚表指针。比如new,传递给new的大小值不仅包括类(以及任何超类
2016-01-26 17:29:12 5464
原创 71.windbg-转换shellcode为汇编
很简单的小操作 1.创建一块内存 2.写入shellcode 3.看汇编以下面的shellcode为例: 0x55 0x8b 0xec 0x56 0x8b 0x75 0x08 0x33 0xc0 0x85 0xf6 0x74 0x1c 0x8b 0x0e 0x85 0xc9 0x74 0x16 0x39 0x46 0x04 0x74 0x11 0x57 0xff 0xd1 0x8b 0xf
2015-12-26 12:33:51 1469
原创 P2P-BT对端管理协议(附BT协议1.0)
对端管理指的是远端peer集合的管理(虽然自身client也可以视为一个peer,但对端管理不包括自身peer)一个客户端(client)必须维持与每一个远程peer连接的状态信息,即1V1关系(本端对某个远端peer) 在本代码中PcPeer指这种1V1关系,而不是仅指远程peer 对于每个连接连接来说,每一端的peer应该是4种状态之一:一端是interested或者not...
2015-12-14 19:07:08 6458 3
原创 52.VC(Custom)-vc助手–支持预生成宏、注释
1.打开Vistual Assist X options2.在Advanced–>Suggestions页面选中Edit VA Snippets3.右键任一选项,New一个,在左边编缉如下:之后,在VC中使用#pra就会自动弹出头文件保护生成#ifndef __$FILE_BASE_UPPER$_H__#define __$FILE_BASE_UPPER$_H__
2015-10-30 15:49:59 1825
原创 51.VC(Custom)-__super简介
http://msdn.microsoft.com/zh-cn/library/94dw1w7x.aspx__super允许您显式说明要为正在重写的函数调用基类实现。如__super::member_function();备注在重载阶段将考虑所有可访问的基类方法,可提供最佳匹配项的函数就是调用的函数。 1.__super 只能在成员函数体内显示。2.__super
2015-10-30 15:41:19 580
原创 51.VC(Custom)-__super简介
http://msdn.microsoft.com/zh-cn/library/94dw1w7x.aspx __super允许您显式说明要为正在重写的函数调用基类实现。如__super::member_function();备注 在重载决策阶段将考虑所有可访问的基类方法,可提供最佳匹配项的函数就是调用的函数。__super 只能在成员函数体内显示。__super 不能与声明一起使用。 有关更
2015-10-30 15:37:40 563
原创 50.VC(custom)-解决VS启动时activityLog.xml文件报错
在运行破解版的VisualGDB时,因为原来安装过更新的试用版本,所以activityLog.xml文件报错解决方案:1.搜索到devenv.exe所在路径2.cmd切换到对应路径3.运行devenv /resetuserdata ,4.运行devenv /log5.如果还报错,就在tools里把插件清掉 //----------------------------
2015-10-11 11:53:34 1472
原创 24.c++-lib文件简述
1.LIB可以链接其他LIB,比如:lib2依赖于lib1,libTest.exe依赖于lib2,这样肯定是OK的2.lib文件其实就是obj文件的打包而已,所以使用lib.exe可以组合它们:比如下面就是直接把lib1和lib组合成liball
2015-09-14 19:18:38 665
原创 2.DB-Mysql++实例
以下为自己写过的测试代码,确认OK以下为自己的数据库:遍历查询代码#include "stdafx.h"#include #include #include #include using std::cout; using std::endl; #ifdef _DEBUG#pragma comment(lib, "..\\debug\\mysqlpp.lib"
2015-08-21 16:00:20 2006
原创 1.DB-Mysql++、Mysql的c++封装类的编译
Mysql的语法规则可参考:http://dev.mysql.com/doc/refman/5.0/en/c-api-function-overview.htmlMysql++的官网为http://tangentsoft.net/mysql++/,下载Source Codemysql++-3.2.2.tar.gz (3.1 MB, 2015.03.18) — Library
2015-08-20 17:24:33 2111
debug.exe在win7-64下模拟
2015-08-25
SetStretchBltMode测试
2011-09-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人