- 博客(241)
- 资源 (34)
- 收藏
- 关注
原创 Windows中获取线程起始地址
偶尔碰到了一个小需求,要验证一个线程起始于某个模块,可以限制对代码的执行,起始于特定的线程。 线程的起始地址StartAddress,保存在了 _ETHREAD 结构中,无法从Ring3获取。kd> dt _ethread 80553740 ntdll!_ETHREAD +0x000 Tcb : _KTHREAD +0x1c0 Cre
2016-05-13 21:56:36
7425
原创 新年本应新气象
2016年了,转眼间10年了,没错,高中毕业十年了!(这人真孙子,还以为什么十年了呢!)高中毕业十年不行吗?那可是十年啊!十年是什么概念呢?一个年代,两个博士的学习年限,两届半的奥运会,三次多工作续签,六分之一的人生旅程!没错,这就是十年。 女朋友说,要在年初啊,回首一下过去,展望一下未来!其实也是,这篇文章应该写在2015年的最后一天,结果各种不情愿,也是各种没心情!就到了今天
2016-01-03 15:13:38
3416
原创 OllyDbg使用学习 笔记
1. 运行命令: F7 -- 单步执行,遇到Call跟进 F8 -- 单步执行,遇到Call跳过,不进入 F9 -- 运行起来,相当于Visual Studio的F5 Ctrl+F9-- 运行到本函数结束(Ret指令后) Alt+F9-- 跳出系统调用,回到应用程序中
2015-12-31 00:18:27
4859
转载 GetLastError错误码
参考http://msdn.microsoft.com/en-us/library/ms681381(v=vs.85).aspx【0|0】-操作成功完成。【0x1|1】-函数不正确。【0x2|2】-系统找不到指定的文件。【0x3|3】-系统找不到指定的路径。【0x4|4】-系统无法打开文件。【0x5|5】-拒绝访问。
2015-11-30 22:45:02
24260
原创 Linux基础 笔记(鸟哥私房菜第二版)
1. 常用的命令包括:ls 显示文件-la 显示所有文件bc 简单计算器date 显示日期时间cal 显示日历加参数可以看指定年月的 cal 7 2015man 查看命令帮助info 查看命令帮助帮助的使用方法:空格键 向下翻页[Page Up][Page Down] Home 第一页End 最后一页/string
2015-11-30 13:25:10
3588
原创 分享好用的命令行工具
分享一个好用的命令行,Babun。用官方的题目说就是 A Windows shell you will love! 这个工具是一个集大成者,并且易于安装,更新等。如下是Babun 的Github上的一些介绍。 Babun是一个类Unix的Shell控制台程序,用于Windows上。下载地址如下:http://babun.gihub.io 下
2015-11-27 20:48:51
6405
转载 Bochs调试指令
[执行控制]c|cont 向下执行,相当于WinDBG的"g"s|step|stepi [count] 单步执行,相当于WinDBG的"t",count 默认为 1p|n|next 单步执行,类似于WinDBG的"p"q|quit|exit
2015-11-14 13:39:06
2983
原创 Source Insight简易教程(自己收藏)
1. 常用窗口作用 及其使用 1. Clip Window 保存了最近的复制 剪切的内容 还有一个功能不太清楚 2. Relation Window 显示了与当前函数或变量相关的东西 调用了那些函数,变量在那个地方被引用了。 3. Context Window 显示了当前变量,类
2015-11-13 13:11:08
4107
原创 JNI原理与使用
1. Java中调用 C库函数 Java的JDK中包含了一份JNI使用的库文件。 在Java中调用C函数,相当于 Java中声明一个接口,在C中做实现。 1. 首先需要编写Java的源文件,同时在Java类中声明函数,如: class HelloJNI { // 本地方法声明
2015-11-02 16:25:05
2860
翻译 如何窥探PDB的秘密?(How to Inspect the Content of a Program Database (PDB) File)
How to Inspect the Content of a Program Database (PDB) File 翻译自:http://www.codeproject.com/Articles/37456/How-To-Inspect-the-Content-of-a-Program-Database-P 标题写的不好,没有文学家的气质与修养,瞎看吧!
2015-10-08 14:39:19
3323
原创 Git 学习笔记
Git 学习笔记1. 创建版本库 git init 将当前目录变为Git可管理的仓库2. 版本库操作 git add readme.txt 将readme.txt文件添加到版本库中,或者将修改过的文件添加到版本库 git commit -m "Wrote a readme file" 1. commit后面的 -m 输入的是本次提交的说明,说
2015-09-22 17:05:41
2940
原创 关于Detours/Minhook挂钩引擎的UnHook
关于Detours/Minhook挂钩引擎的UnHook 文章本身可能用处不大,很少有人会用到所说的这些,权当积累。 一直在使用Detours 和 MinHook 两个Hook引擎进行一些系统API的挂钩,实现特殊的功能。就如标题所用词,UnHook,很少将一个已经Hook的函数再次进行UnHook,所以一直没有注意到问题所在。同事的提醒,让自己有了一点兴趣
2015-09-19 11:43:55
5894
原创 X64编程总结
X64编程和X86还是有一些不同的地方,总结一下日常用到的东西,便于以后查看:1. 调用约定 调用约定对于函数调用有影响,不同的函数调用,在汇编中会因为函数调用后栈不平衡而崩溃,在C/C++语言中如果使用函数指针或以函数作为参数,造成调用栈的不平衡而崩溃。函数调用方式,说到底是函数调用栈不同。 X86的函数调用方式主要有:stdcall / cdecl /
2015-09-11 20:51:48
3544
原创 关于Windows系统调用
以Kernel32.dll 中的 ReadFile 方法为例:首先找到 kernel32!ReadFile 函数,从如下截取的汇编代码中可以看到,改函数会调用kernel32!_imp__NtReadFile指向的函数kernel32!ReadFile+0xd2:7c801962 bb03010000 mov ebx,103h7c801967 891e
2015-09-07 22:23:33
4113
原创 关于DLL导出函数的总结
一直在鼓捣DLL,每天的工作都是调试一个一个的DLL,往DLL里面添加自己的代码,但是对于DLL一直不太了解啊!今天一查资料,才发现自己对于DLL编写的一些基本知识也不了解。要学习,这篇文章先总结DLL的导出函数的方法。 首先说一下如何建立DLL工程!
2015-08-12 00:16:25
12193
1
原创 我看保护模式
保护模式,对于学过操作系统的人来说,是一个熟悉而又陌生的概念。之所以熟悉,就是所有的操作系统的书籍都会说到保护模式;之所以陌生,我敢说很多人学完了之后,压根不晓得什么是保护模式,怎么算是保护模式,再者就是它到底保护了什么东西。 “你说的不对,怎么能一棒子打死一帮人!保护模式就是进程相互隔离,实现多任务;就是有分页机制,可以节约内存。”,暂且不说对于不对,其实我也不知道我理解的是否
2015-08-02 16:01:10
4952
原创 使用IAT表注入模块到进程中 样例
模块注入到进程的方法有很多,想一一写例子,学习一下,也练习一下! 首先先从IAT表注入开始吧! 如果了解PE文件的格式的话,原理很简单。当一个模块被系统加载起来后,会遍历模块的导入表,将静态导入的函数地址填充到导入表中,以便进程执行起来后,调用到该模块时,能够使用导入函数。要获取导入函数地址,首先要将导出该函数的模块加载起来。 那方法来了,
2015-07-30 23:55:10
5424
原创 调试方法备份
1. 崩溃时自动挂接调试器可以使用如下的命令,将Windbg.exe挂接为即时调试工具。 C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe -I2. 程序启动时自动启动调试器 有时,可能需要调试由另一个进程启动的应用程序的启动代码。 这样的示例包括服务和自定义设置操作。 在这些情况
2015-07-29 17:53:10
3089
原创 常用函数/功能块 记录
1. 获取高精度时间戳 主要用于测试一段代码的执行时间。通过CPU的 tick-per-secs 来获取,可以精确到微秒甚至更高。比GetTickCount() API精确到毫秒要更加精确。 代码如下: LARGE_INTEGER StartingTime, EndingTime, ElapsedMicroseconds; LARGE_INTEGER Fr
2015-07-24 21:47:09
3933
原创 Vim 学习笔记
1.打开文件vim filename 直接使用vim命令打开一个文件。q! / quit! 强制退出ZZ 保存文件为常规的Unix文件ls 列举出当前目录下的文件w 写入文件,但是不退出vimwq 写入文件并离开vim,与ZZ类似 e! / q! 退出vim编辑器,不保存编辑结果w! filename 强制覆盖现有文件!rm filena
2015-07-11 12:03:00
3230
转载 ubuntu下安装bochs
转自:http://blog.youkuaiyun.com/lilongherolilong/article/details/76839521. 安装gcc编译环境 sudo apt-get install build-essential sudo apt-get install xorg-dev// X11 的包 sudo apt-get ins
2015-07-02 09:42:44
770
原创 MinHook源码阅读
MinHook x86/x64 API Hook 库。它既支持X86的API Hook 也支持X64的API Hook(微软Detours支持x64的API Hook的版本死贵),项目中应用,目前没发现不稳定因素。 源码所在的Git库:https://github.com/RaMMicHaeL/minhook
2015-04-11 20:27:27
3340
原创 Detours 源码阅读笔记
Detour库1. 源码 Detour库很小,直接编译成lib比较好,在用到的代码中做静态链接。 直接从微软官网 下载Detours: http://research.microsoft.com/en-us/projects/detours/ 目前免费下载的是 Detours Express 3.0。
2015-04-11 15:43:48
2478
原创 Windbg 专题学习
1. WinDbg 查看内存的情况: !address -summary : 内存概况,显示当前内存的使用情况 !address : 查看内存的情况,详细情况 !dh [module addres] : 查看模块的内存详细信息 !heap 查看堆的使用情况 !address -f:stack : 查看栈的使用情
2015-04-06 18:16:01
978
原创 Windbg 命令 总结
基本调试:0. 内置的帮助命令:? 显示常用的命令? /D 显示常用命令和DML.help 显示.命令.help /D 以DML形式显示'.'命令(顶部会给出链接).help /D a* 以DML形式显示a开头的'.'命令 (*为通配符).hh 打开帮助文件.hh dt 打开帮助文件,并在索引定位到 dt命令version 显示调试器以及加载
2015-04-06 17:54:41
3240
原创 编写可读,简洁代码的原则
1. 代码分块原则 a. 代码要进行分块,最基本的分块方法是写成函数。 函数功能要明确,且函数的长度不宜过长。切忌将一个函数写成大过程。 尽量少用多重循环,两重以上的循环,就需要将其拆分,将较深的循环放入到函数中。2. 职责单一原则 函数要简单,每个函数尽量只完成一个功能。(
2015-03-03 14:36:25
617
原创 汇编中的跳转
汇编语言中有很多跳转,简单总结一下,以备后用。 1. 相对跳转: JMP远跳,CALL编译成字节码的方法: jmp远跳与CALL指令都占5个字节 JMP 32位目标地址: E9 + (32位目标地址-下条指令地址) 或者说E9的下一条指令,加上 E9后面的值即为最终跳转目的地 E9 +
2015-02-09 09:54:55
3193
3
转载 x86平台转x64平台关于内联汇编不再支持的解决
x86平台转x64平台关于内联汇编不再支持的解决 2011/08/25 把自己碰到的问题以及解决方法给记录下来,留着备用! 工具:VS2005 编译器:cl.exe(X86 C/C++) ml64.exe(X64 ASM64)前提:X86下内联汇编是嵌在函数当中实现的 在X86平台下,可以轻松的在C/C++代码中嵌入汇编
2015-01-16 09:49:33
1592
转载 VC2008中影响exe大小和速度的全部编译选项
转自:http://www.cppblog.com/woaidongmao/archive/2009/10/19/98920.aspx我再次强调,完全脱离编程环境的C/C++学习方法,不是好的方法,现在所谓的环境中立理论就是“什么都不学”理论,VC、GCC,主流的就两个,精通其中一个就能吃遍天下,教材里就应该选择一个大讲特讲! 作为VC的代表,今天我给大
2014-10-22 13:46:32
585
转载 dll加载问题的解决方法
dll加载问题的解决方在使用LoadLibrary() 和LoadLibraryEx()加载dll文件的时候,会产生下面的错误:this application has failed to start because XXXXX.dll was not found. Re-installing the application may fix this problem.其中xxx
2014-09-14 10:01:07
1213
转载 调试方法和技巧
便于调试的代码风格:1.不用全局变量2.所有变量都要初始化,成员变量在构造函数中初始化3.尽量使用const4.详尽的注释VC++编译选项:1.总是使用/W4警告级别2.在调试版本里总是使用/GZ编译选项,用来发现在Release版本中才有的错误3.没有警告的编译:保证在编译后没有任何警告,但是在消除警告前要进行仔细检查调试方
2014-06-10 15:52:16
648
转载 对“仅通过崩溃地址找出源代码的出错行”一文的补充与改进
转自: http://www.vckbase.com/index.php/wv/1192.html读了老罗的“仅通过崩溃地址找出源代码的出错行”(下称"罗文")一文后,感觉该文还是可以学到不少东西的。不过文中尚存在有些说法不妥,以及有些操作太繁琐的地方 。为此,本人在学习了此文后,在多次实验实践基础上,把该文中的一些内容进行补充与改进,希望对大家调试程序,尤其是release版本的程序有帮
2014-06-10 12:59:50
822
转载 仅通过崩溃地址找出源代码的出错行
作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的——那就是,程序发生了崩溃!“该程序执行了非法操作,即将关闭。请与你的软件供应商联系。”,呵呵,这句 M$ 的“名言”,恐怕就是程序员最担心见到的东西了。有的时候,自己的程序在自己的机器上运行得好好的,但是到了别人的机器上就崩溃了;有时自己在编写和测试的过程中就莫名其妙地遇到了非法
2014-06-10 11:48:23
747
转载 在软件开发生命周期中使用应用程序验证器
zhuanzi在软件开发生命周期中使用应用程序验证器摘要Microsoft® Application Verifier (AppVerifier) 是针对非托管代码的运行时验证工具,它有助于找到细小的编程错误、安全问题和受限的用户帐户特权问题,使用常规的应用程序测试技术很难识别出这些错误和问题。本页内容 简介 什么是 AppVeri
2014-06-06 10:37:34
900
转载 Lua语言中pairs和ipairs的区别
Lua语言中pairs和ipairs的区别 tbl = {"alpha", "beta", ["one"] = "uno", ["two"] = "dos"}for key, value in ipairs(tbl) do print(key, value)end-pairs()函数基本和ipairs()函数用法相同, 区
2014-01-24 14:43:34
805
转载 文件读写、table库
Lua杂记:文件读写、table库、字符串库一、table的解释(云风说的很好,摘抄如下): lua 的整体效率是很高的,其中,它的 table 实现的很巧妙为这个效率贡献很大。 lua 的 table 充当了数组和映射表的双重功能,所以在实现时就考虑了这些,让 table 在做数组使用时尽量少效率惩罚。 lua 是这样做的。它把一个 tabl
2014-01-24 14:41:02
1018
原创 《Lua程序设计》笔记之三——标准库
18. 数学库 数学库由算术函数的标准集合组成:三角函数(sin,cos,tan,asin,acos,etc),幂指函数(exp,log, log10),舍入函数(floor,ceil),max,min加上常量pi。 数学库也定义了一个幂操作符(^) 所有的三角函数都在弧度单位下工作,可以使用deg和rad函数在度和弧度之间转换。如果想在degree
2014-01-01 15:03:53
2938
原创 《Lua程序设计》笔记之二——表和对象
7. 迭代器和泛型for 迭代器是一种支持指针类型的结构,便利集合的每一个元素。Lua中常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素。 闭包是一个内部函数,可以访问一个或者多个外部函数的局部变量。每次闭包的成功调用后,这些局部变量都保存他们的值,当然如果要创建一个闭包必须要创建其外部局部变量。一个典型的闭包的结构包含两个函数:一个闭包自己,另一个是工
2013-12-31 17:16:48
2274
InspectPDBContent
2015-10-08
MFC Window 应用程序设计 任哲等(完整的书,非分块)
2014-03-27
ActionScript 3.0安全沙箱及相关问题资料
2012-07-21
flashplayer debug 版
2012-03-02
RakNet 的DLL库文件
2012-02-21
MFC Windows 应用程序设计
2011-05-16
MFC Window 应用程序设计 任哲等
2011-05-16
MFC Windows 应用程序设计 任哲等
2011-05-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人