
学习过程中
文章平均质量分 84
花熊
毕业于西安交通大学
展开
-
7.driverbase-驱动编译环境--x86 Checked Build Environment
x86:Windows是32位版本,和CPU是32位还是64位无关x64:64位版本的WindowsIA64:Intel的与x86不兼容的64位平台原创 2013-12-17 15:50:25 · 2989 阅读 · 0 评论 -
6.windbg script -.shell搜索字符串
.shell 命令启动一个shell进程并将他的输出重定向到调试器或指定的文件语法.shell [Options] [ShellCommand] .shell -i InFile [-o OutFile [-e ErrFile]] [Options] ShellCommand 看下FIND的解释:Options 可以是任意多个下面的选项:原创 2013-07-11 15:36:56 · 1289 阅读 · 0 评论 -
48.windbg---.block 语句块(windbg script)
.block 关键字不执行任何动作;只是用来引入一个语句块Commands ; .block { Commands } ; Commands 由大括号括住每个语句块。当进入每个语句块时,所有块中的别名都被重新计算。如果你在块中某个命令处修改了别名的值,往下的命令不会使用新的别名值,除非它们处在一个下属子语句块中如果你希望创建一个语句块只是为了计算别名,你应该带上原创 2013-06-07 11:12:47 · 1076 阅读 · 0 评论 -
46.windbg-条件断点(windbg script)
使用j命令的条件断点的基本语法如下:0:000> bp Address "j (Condition) 'OptionalCommands'; 'gc' "使用.if命令的条件断点的基本语法如下:0:000> bp Address ".if (Condition) {OptionalCommands} .else {gc}"其实结合起来看就是双引号括起来了判断条件原创 2013-06-03 21:58:04 · 2816 阅读 · 0 评论 -
44.windbg-??、?(c++表达式语法、当前表达式语法)
双问号(??)命令根据C++表达式规则来计算和显示表达式的值??命令根据当前线程和进程上下文来对表达式中的符号进行求值所以用??后,就不用显式@@c++指定了如果要使用MASM表达式规则来为Expression 表达式的一部分进行求值,可以将这部分用圆括号括起来并在前面添加两个at符号( @@ )。(?) 命令可用于计算和显示一个表达式的值?命令的输入和输出原创 2013-05-29 21:02:10 · 2212 阅读 · 0 评论 -
45.windbg-j、.if条件表达式(windbg script)
当一个条件断点的末尾包含一个执行命令时,需要使用gc命令例如,如果使用g (Go)命令来到达该断点,则恢复为自由执行。但是如果使用单步或跟踪来到达该断点,也会以单步或跟踪的方式来恢复执行j Expression Command1 ; Command2j Expression 'Command1' ; 'Command2' Expression 要求值的表达式。如原创 2013-05-29 21:40:42 · 3206 阅读 · 0 评论 -
7.asm-shellcode流程
shellcode就是汇编的opcode,一般以子函数形式出现:取得shellcode的方便方式是:1.写一个函数如:void __stdcall code(LONG &a, LONG &b, DWORD &c, LONG &d, DWORD &e)取得它的汇编码:如: push ebp mov ebp,esp sub原创 2014-02-19 21:54:12 · 1508 阅读 · 0 评论 -
__declspec(naked)详解
__declspec(naked)是用来告诉编译器函数代码的汇编语言为自己的所写,不需要编译器添加任何汇编代码注意点:void __declspec(naked) funname(){_asm{...ret}}注意,__declspec(naked)是编译器直接拿来用的汇编函数代码,所以一定要记得在开始的时候保存上下文标志位(压栈),在结束的时候要记得恢原创 2012-08-29 20:45:25 · 16452 阅读 · 0 评论 -
gtest学习---最简单的test
gtest使用的是1.6版本可以在这里下载gtest:目前又出了1.7版本https://code.google.com/p/googletest/downloads/list在msvc文件夹下,运行gtest.sln,生成对应的lib库,这里生成的lib会存在gtest-1.6.0\msvc\gtest\Debug目录下,叫gtestd.lib注意:如果测试程序使用的原创 2013-11-07 01:08:34 · 3293 阅读 · 0 评论 -
48.VC(custom)-SetThreadAffinityMask 把线程限定在CPU上运行
很简单的函数:比如把当前线程限制在CPU0(第一个processor)上运行:SetThreadAffinityMask(GetCurrentThread(), 1)第0位是1又比如要把当前线程限制在CPU1,CPU2这两个上运行:SetThreadAffinityMask(GetCurrentThread(), 6)第1,2位同时为1 If the funct原创 2012-10-07 09:14:52 · 2692 阅读 · 0 评论 -
49.VC(custom)-操作系统分类
引用MSDN:http://msdn.microsoft.com/en-us/library/ms724833.aspxOperating systemVersion numberdwMajorVersiondwMinorVersionOtherWindows 8.16.3*63OSVERSIONINFOEX.wProductType原创 2013-12-19 10:19:42 · 1519 阅读 · 0 评论 -
1.windbg script-执行脚本文件
1.把所有语句写在脚本文件的单行中,每个语句和命令之间用分号隔开,然后用$>2.在脚本文件中输入所有语句,每条语句占一行,然后使用$>bu kernel32!LoadLibraryW "as /mu ${/v:$dllname} poi(@esp+4);.block{ .if(1==$spat(@\"${$dllname}\", @\"*mm*\")) { du原创 2013-06-13 19:37:02 · 2007 阅读 · 0 评论 -
57.windbg-MASM vs C++表达式
在 MASM 表达式中,任何符号的数值都是它的内存地址。在 C++ 表达式中,变量的数值就是它的实际值,不是地址。数据结构没有数值;它们必须声明为实际结构再使用。函数名或者任何其它入口点的值是内存地址,当作为函数指针。没有 C++ 数据类型与之对应的符号(例如没有修饰的模块名)会导致语法错误。 0:000> .exprCurrent expression evaluator: MASM -原创 2013-07-23 14:35:51 · 9180 阅读 · 0 评论 -
56.windbg-s、#(搜索字符串、地址、汇编)
s(Search Memory)s 命令搜索内存查找指定模板1. 寻找内存泄露的线索。比如知道当前内存泄漏的内容是一些固定的字符串,就可以在 DLL 区域搜索这些字符串出现的地址,然后再搜索这些地址用到什么代码中,找出这些 内存是在什么地方开始分配的。 2. 寻找错误代码的根源。比如知道当前程序返回了 0x80074015 这样的一个代码,但是不原创 2013-07-16 15:28:55 · 11141 阅读 · 0 评论 -
55.windbg-!dh、!lmi(显示映像的头部)
!dh!dh 扩展显示指定映像的头部。语法!dh [Options] Address !dh -h参数Options 下面的选项之一:-f显示文件头。 0:000> !dh kernel32 -fFile Type: DLLFILE HEADER VALUES 14C machine (i386) 4 numb原创 2013-07-15 15:07:29 · 2377 阅读 · 0 评论 -
54.windbg-a、.dvalloc (直接写反汇编和new内存,实例:加入附加的printf)
a(Assemble)a 命令对指令助记符进行汇编,并将指令代码的结果放入内存。如果没有指定地址,汇编会从指令指针的当前值所指向的地址开始。要汇编新的指令,可以输入需要的助记符并按下ENTER。要结束汇编,直接按下ENTER.dvalloc.dvalloc 命令使得Windows在目标进程中分配附加的内存。加入附加的printf以下是原创 2013-07-05 16:38:07 · 2674 阅读 · 0 评论 -
52.windbg-Call Function调试技巧(调用函数)
.call 命令使得目标进程执行一个函数。语法.call [/v] Function( Arguments ) .call /c .call /C .call /s Prototype Function( Arguments )指定函数是被当前进程的当前线程调用的。只支持 cdecl、 stdcall、 fastcall和thiscall 调用约原创 2013-07-03 21:04:38 · 4205 阅读 · 0 评论 -
51.windbg---Gflags(辅助工具)
C:\Program Files\Debugging Tools for Windows (x86)>gflags -p /enable L2.bin /full /unalignedpath: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options l2.bin: page heap enab原创 2013-06-20 15:50:27 · 3665 阅读 · 0 评论 -
50.windbg-.foreach循环输入(windbg script)
.foreach.foreach 关键字分析一个或多个命令的输出并将该输出中每一个值作为另一个或多个命令的输入.foreach [Options] ( Variable { InCommands } ) { OutCommands } .foreach [Options] /s ( Variable "InString" ) { OutCommands }原创 2013-06-14 11:24:06 · 2496 阅读 · 0 评论 -
41.windbg-调试技巧(解决Type information missing error for)
今天用vc6时,发现有些函数用x显示不了:0:000> x ThisCall!Cat::*Type information missing error for Cat::Fun0歪招:用bm直接下断点:0:000> bm ThisCall!Cat::* 1: 00401090 @!"ThisCall!Cat::Func1" 2: 00401060 @!"ThisC原创 2013-05-13 15:53:30 · 2036 阅读 · 0 评论 -
CURL---常见问题
http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html原创 2013-09-17 10:55:46 · 2051 阅读 · 0 评论 -
经济学原理---10 外部性-- 读书笔记
1原创 2013-09-27 17:00:39 · 1946 阅读 · 0 评论 -
经济学原理---8应用:税收的代价--- 读书笔记
买者和卖者由税收受到的损失大于政府收入的增加由于税收扭曲了激励,就引起市场资源配置无效率税收引起无谓损失是因为它使部分买者和卖者不能实现贸易的好处供给和需求弹性越大,税收的无谓损失也就越大随着税收规模提高,无谓损失迅速扩大原创 2013-09-24 15:03:21 · 1253 阅读 · 0 评论 -
一种保护应用程序的方法 模拟Windows PE加载器,从内存资源中加载DLL
一种保护应用程序的方法-模拟Windows PE加载器,从内存资源中加载DLL 作者:老实和尚 coverlove@163.com 1、前言目前很多敏感和重要的DLL(Dynamic-link library) 都没有提供静态版本供编译器进行静态连接(.lib文件),即使提供了静态版本也因为兼容性问题导致无法使用,而只提供DLL版本,并且很多专业软件的授权部分的API,都转载 2012-10-02 14:33:39 · 1920 阅读 · 0 评论 -
WOW64(判断32位程序运行在64位环境下)
WOW64 是 Windows-32-on-Windows-64 的缩写。它为现有的 32 位应用程序提供了 32 位的模拟,可以使大多数 32 位应用程序在无需修改的情况下运行在 Windows 64 位版本上。它类似于旧的 WOW32 子系统,负责在 Windows 32 位版本下运行 16 位的代码typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (H原创 2012-09-12 13:27:41 · 3989 阅读 · 0 评论 -
通过关键系统文件判断正确的操作系统版本
typedef struct tagTRANSLATION{ WORD langID; // language ID WORD charset; // character set (code page)} TRANSLATION;#define KeyFILENAMECHECK "\\kernel32.dll"DWOR原创 2012-09-12 12:49:31 · 1376 阅读 · 0 评论 -
LNK2005
这个问题在编译Detours时遇到两次了,总结下:显示为:1.MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMTD.l原创 2012-09-12 17:38:08 · 1516 阅读 · 0 评论 -
rand和srand
标准库 提供两个帮助生成伪随机数的函数: int rand(void); 从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff)间的随机整数。 void srand(unsigned seed); 参数seed是rand()的种子,用来初始化rand()的起始值。 可以认为rand()在每次被调用的时候,原创 2012-09-12 11:02:20 · 632 阅读 · 0 评论 -
Detour注意点及原理
DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourAttach((PVOID *)&g_pPresent, New_Present); DWORD nErr = DetourTransactionCommit(); DetourTransactionBegin();原创 2012-09-06 19:34:10 · 8714 阅读 · 1 评论 -
GetProcessImageFileNam取得EXE所在目录
一般是用GetModuleFileName,但这个函数需要对进程有可读可查询的权限,所以当进程只有可查询权限时,使用: HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, PID); if (hProcess) { char szPath[MAX_PATH] = {0}; GetProcessIma原创 2012-09-11 19:13:12 · 1275 阅读 · 0 评论 -
Hook IDirect3DDevice9::Present
其实很简单.主要针对D3D游戏.主要思路:Hook IDirect3DDevice9::Present,在其中加入sleep函数.让系统获得更多的CPU时间片.试验游戏:剑网三(以D3D9为例) 学习各种外挂制作技术,马上去百度搜索 "魔鬼作坊" 点击第一个站 去那里学习喽。 具体实现步骤: 1.HOOK Direct3DCreate9来获得类型为LPDIRECT3D9的D转载 2012-09-05 19:54:36 · 9889 阅读 · 4 评论 -
打LOG宏控制
可以用这样的宏控制:#ifdef _DBG#define MyOutputDebugStringA _MyOutputDebugStringA#else #define MyOutputDebugStringA /##/ // /##/就是注释符原创 2012-08-30 14:37:29 · 1033 阅读 · 0 评论 -
Detour Hook COM成员函数present和Hook 类成员函数
void * pPresent=NULL;//IDirect3DDevice9::Present函数地址指针 pPresent=(void*)*(DWORD*)(*(DWORD*)Device+0x44);//IDirect3DDevice9* Device DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread(原创 2012-09-06 15:06:36 · 6012 阅读 · 2 评论 -
LIST_ENTRY结构
typedef struct _LIST_ENTRY { struct _LIST_ENTRY *Flink; struct _LIST_ENTRY *Blink; } LIST_ENTRY, *PLIST_ENTRYLIST_ENTRY是一个常见的 Windows 2000 数据类型是 LIST_ENTRY 结构,内核使用该结构将所有原创 2012-09-17 10:41:10 · 1779 阅读 · 0 评论 -
经济学原理---9应用:国际贸易--- 读书笔记
贸易增加了一国的经济福利,因为赢家的收益超过了输家的损失当一国允许贸易并成为一种物品的出口者时,该物品的国内生产者状况变好,而该物品的国内消费者状况变坏当一国允许贸易并成为一种物品的进口者时,该物品的国内消费者状况变好,而国内该物品生产者状况变坏关税和进口限额都提高了物品的国内价格并减少了国内消费者的福利,增加了国内生产者的福利,并引起了无谓损失国家安全论,当一个行业对因家原创 2013-09-24 17:01:15 · 1824 阅读 · 0 评论 -
经济学原理---7 消费者.生产者与市场效率--- 读书笔记
每个人能出的最高价格称为支付意愿消费者剩余是买者愿意为一种物品支付的量减去买者为此实际支付的量它表示了消费者从一种物品中得到的买者自己感觉到的收益同样,生产者剩余是卖者得到的量减去生产成本比如A愿意以500元的价格从事一项工作,但得到了600块的报酬,我们说它得到了100块的生产者剩余需求曲线以下和价格以上的面积衡量市场的消费者剩余供给曲线以上和价格以下的面积衡量市场的原创 2013-09-24 13:43:50 · 1803 阅读 · 0 评论 -
经济学原理---6 供给.需求与政府政策--- 读书笔记
1原创 2013-09-24 11:22:33 · 1470 阅读 · 0 评论 -
经济学原理---5 弹性及其应用 --- 读书笔记
1原创 2013-09-18 15:48:28 · 1995 阅读 · 0 评论 -
win7下VC6的安装
因工作需要,安装VC6,注意以下几点:1.安装当然是选custom,先全部选中,再选Tools,更改选项,把OLE/Com Object Viewers去掉2.一般自己用不到vss,那就把Mircrosoft Visual SourceSafe 6.0勾去掉3.安装完了,要安装SP64.安装支持V6的PSDK2003Feb,装完后设置下include和lib在最前面(这个是在IE上原创 2012-11-11 10:27:43 · 810 阅读 · 0 评论 -
通过取得MAC地址判断是否在VM中
自己随手写的,自测试通过:bool AntiVMware::AD_VM_CheckMacAddr(){ const long MAX_COMMAND_SIZE = 10000; TCHAR szFetCmd[] = _T("ipconfig /all");// 获取MAC的命令行 SECURITY_ATTRIBUTES sa = {sizeof(SECURITY_ATT原创 2012-10-17 17:29:13 · 2227 阅读 · 0 评论