摘要:状态和控制寄存器组除了EFLAGS、EIP ,还有四个32位的控制寄存器,它们是CR0,CR1,CR2和CR3。这几个寄存器中保存全局性和任务无关的机器状态。CR0 中包含了6个预定义标志,0位是保护允许位PE(ProtedtedEnable),用于启动保护模式,如果PE位置1,则保护模式启动,如果...
阅读全文
摘要:x64下fs的角色已经换成了gs.暂时发现存储的一些感兴趣的东西,如果有其他的,希望能告知我.gs:[0x20] prcbgs:[0x30] TEBgs:[0x40] Pidgs:[0x48] Tidgs:[0x60] PEBgs:[0x68] LastErrorgs:[0x188] _et...
阅读全文
摘要:在win64里,只有一种调用约定。以下是通过寄存器来传递4个整数类型的例子: *RCX:第一个参数 *RDX:第二个参数 *R8:第三个参数 *R9:第四个参数 参数里开头的4个整数会这样传给栈。传递浮点数参数时,使用的是XMMO-XMM3寄存器。调用约定简化了:一律使用__fastcal...
阅读全文
摘要:1、fs寄存器在Ring0中指向一个称为KPCR的数据结构,即FS段的起点与KPCR结构对齐。2、对于Ring3的应用程序,fs:[0]的地址指向的是TEB结构,这个结构的开头是一个NT_TIB结构,NT_TIB结构的0x18偏移处是一个Self指针,指向这个结构自身,也就是指向TEB结构的开头。T...
阅读全文
摘要:函数名字修饰(Decorated Name)方式 函数的名字修饰(Decorated Name)就是编译器在编译期间创建的一个字符串,用来指明函数的定义或原型。LINK程序或其他工具有时需要指定函数的名字修饰来定位函数的正确位置。多数情况下程序员并不需要知道函数的名字修饰,LINK程序或其他工具会...
阅读全文
摘要:_NT_SYMBOL_PATH = symsrv*symsrv.dll*C:\symbols*http://msdl.microsoft.com/download/symbols
阅读全文
摘要:内核模式下查看导出表需要注意的事项比在用户模式下要考虑更加周详;X64环境倒不是变化太多,指针定是64位的,数据数据及指针指向的数据类型需要注意;不费话,直接上源码,VS2010+WDK7600下编译通过:////// @file aux_list.c/// @author cntom90151//...
阅读全文
摘要:VS2010+WDK配置要点可以配置user property sheet:1、常规:文件扩展名 .sys2、C/C++include目录;预处理器定义:WIN32;_CONSOLE;_X86_;_DDK_;_DEBUG;DBG=1高级:调用约定,_stdcall(/Gz)代码生成:基本运行时检查默...
阅读全文
摘要:1、测试模式: msconifg可配置2、gpedit.msc:关闭管理员类权限3、关闭“Program Compatibility Assistant Service”:net stop “Program Compatibility Assistant Service”4、启动时F8,禁用驱动签名...
阅读全文
摘要:列举PE文件的导入函数信息,功能与格式和 dumpbin /imports一模一样。不说空话,直接看代码: 1 void ListImports(DWORD dbase) 2 { 3 char szMsgImport[]="\n %s\n\t%8X Import Address Tabl...
阅读全文
摘要:看看 user32.dll里有哪些导出函数,大家都会,但准确性???以MS dumpbin为标准,要做出来结果一模一样,才表示代码完全正确。直接上代码: 1 // ListExport.cpp : Defines the entry point for the console applicatio...
阅读全文
摘要:其实vs2010真是神器:1、masm32+masm64可在VS2010中开发动态调试,这可以是一个单独的一个工程;2、上一步生成的有关函数obj文件直接添加到新的c/c++项目中,在项目中直接直接添加。3、汇编函数声明很关键,否则无法在c/c++中使用:如:extern "C" DWORD _st...
阅读全文
摘要:1、建新空项目2、build customizations....-->选中masm3、project property pages: a.macro assemble->general->include paths:->d:\masm32\include b.Linker->general->...
阅读全文
摘要:这是目前编译驱动程序,开发驱动程序最方便、最亲切、最自然的方法。1、制作一个文本文件,(名称如:wdkproperty.props);1.5、在VS2010中新建空项目,配置configuration manager,添加new-debug->wdk;在project->propertis相应wdk...
阅读全文
摘要:依照VS6样式,Listing file type:assembly,Machine Code,and Sourcesources文件中:TARGETNAME=firstTARGETTYPE=DRIVERSOURCES=first.cTARGETPATH=objUSER_C_FLAGS = /FAs...
阅读全文
摘要:在屏幕上输出%d:printf("%%d\n");printf("\%%d\n");
阅读全文
摘要:如今,新技术层出不穷,作为程序员的你,你究竟如何跟上时代的步伐?各种新语言不断出现,各种趋势不断演化,看花了眼吗?你是应该学习程序语法?还是程序算法?程序算法才是程序的核心与灵魂,通过语法,print几个三角形?通过算法,解决实际问题!上ACM网站吧!呵呵。
阅读全文
摘要:[root@localhost contest]# ./testhehe:10----------------------------------------before quick sort------------------------------------------------------...
阅读全文
摘要:#include #include #include /* accurate to usec*/void getusertime(){ static struct timeval tpstart,tpend; static float timeuse; static...
阅读全文
摘要:以一个数组作为示例,取区间第一个数为基准数。01234567897265788604283734885初始时,i = 0; j = 9; X = a[i] = 72由于已经将a[0]中的数保存到X中,可以理解成在数组a[0]上挖了个坑,可以将其它数据填充到这来。从 j开始向前找一个比X小或等于X的数...
阅读全文