- 博客(138)
- 资源 (55)
- 收藏
- 关注
转载 debian默认中文输入法不可用,配置方法如下
转自:http://tieba.baidu.com/p/4219409566#今天装了个debian系统,开始输入法问题折腾了好久,总算折腾出来了。1配置源# vim /etc/apt/source.list最后增加中国科学技术大学的源(其他的应该也可以):deb http://mirrors.ustc.edu.cn/debian stable main contrib
2016-01-30 13:18:20
8343
转载 Delphi逆向
Delphi反汇编内部字符串处理函数/过程不完全列表名称参数返回值作用等价形式 / 备注 _PStrCatEAX :目标字符串EDX :源字符串EAX连接两个 Pascal 字符串s:=copy(s+s1,1,255) _PStrNCatEAX :目标字符串EDX :源字符串CL :结果字符串最大长度EAX连接两个
2015-02-02 22:01:10
3682
转载 Win7中的页目录
转自:http://user.qzone.qq.com/31731705/blog/1324046552文章 PAE下的虚拟内存映射 分析 ( http://user.qzone.qq.com/31731705/blog/1323414733 ) 和 PAE下的虚拟内存映射 实践 (http://user.qzone.qq.com/31731705/blog/1323426
2014-10-26 22:47:31
2490
转载 PAE下的虚拟内存映射 分析
转自:http://user.qzone.qq.com/31731705/blog/1323414733PAE 即为物理地址扩展(Physical Address Extension),详细的内容请Google。 我的电脑是Win7,CPU是双核处理器,信息如下,0: kd> !sysinfo cpuinfo [CPU Information]~MHz =
2014-10-26 22:29:33
1574
转载 PAE ( Physical Address Extension )
首先,内存访问和管理是一个跨越应用程序,操作系统,硬件平台的一个复杂过程,不能单纯的讲32bit系统就支持4G内存,从而认为这个过程只是OS和内存两者之间的关系 理论上:32位系统,32bit的地址总线位数,寻址空间2^32B=4GB。 64位系统,寻址空间2^64。至于在实际应用环境中,对于有4G物理内存而OS最多只能识别3G的情况,主要是主板的问题,丢掉的内存被PCI设
2014-10-26 22:06:38
2996
转载 Windows下的分页模式- 页目录和页表从物理内存到虚拟映射求值
标 题: 【原创】Windows下的分页模式- 页目录和页表从物理内存到虚拟映射求值作 者: hrpirip时 间: 2012-12-06,12:45:36链 接: http://bbs.pediy.com/showthread.php?t=159554昨天在网上看到一段代码令大为不解,大家都知道一个虚拟地址到物理地址的转换伪公式为:*(*(*PD[(VirtualAd
2014-10-26 22:05:49
2809
转载 [经典文章翻译]A Crash Course on the Depths of Win32 Structured Exception Handling
转自:原文题目: >原文地址: http://www.microsoft.com/msj/0197/Exception/Exception.aspx 原作者: Matt Pietrek 在Win32的核心, 结构化异常处理(Structured Exception Handling)(SEH) 是操作系统提供的一种服务. 你能找到的所有关于SEH的文档都会描述
2014-08-20 12:05:26
1224
转载 关于句柄表的一些文章
wrk1.2中ExpLookupHandleTableEntry的内部流程1) 取 Handle(EXHANDLE类型) 值为tHandle,并将TagBit(低两位)置02) 取 HandleTable->NextHandleNeedingPool为MaxHandle , 如果 tHandle大于等于MaxHandle,则返回NULL,查询失败 (由此可见, Next
2014-08-09 23:51:57
1663
转载 页表项(PTE)地址计算公式的解释
转自: 在《JIURL玩玩Win2k内存篇 分页机制 (三)》中提到计算虚拟地址对应PTE地址的公式,如下:代码:PTE_Addr = (VirtualAddr >> 12) * 4 + 0xC0000000从虚拟地址转换到物理地址的过程来看,计算PTE需要虚拟地址的高10位做页目录索引,还需要第12 - 21位做页表索引,上面的公式晃眼看起来,貌似是错的
2014-07-27 19:19:43
4979
1
转载 静态分析nt!KiFastCallEntry
转载: http://bbs.pediy.com/showthread.php?t=89407在XP系统中, 系统服务在内核的入口是KiFastCallEntry,我们从该入口开始,分析这一段代码都做了什么工作。 由于水平有限和背景知识不够,本人没有完全读懂它们,作为抛砖引玉,我先将我所看懂的和大家分享,希望大家多多指教! KiFastCallEn
2014-07-26 10:19:32
1811
转载 AVL树(一)之 图文解析 和 C语言的实现
概要本章介绍AVL树。和前面介绍"二叉查找树"的流程一样,本章先对AVL树的理论知识进行简单介绍,然后给出C语言的实现。本篇实现的二叉查找树是C语言版的,后面章节再分别给出C++和Java版本的实现。建议:若您对"二叉查找树"不熟悉,建议先学完"二叉查找树"再来学习AVL树。目录1. AVL树的介绍2. AVL树的C实现3. AVL树的C实现(完整源码)4. AVL树的
2014-07-19 22:09:41
9304
转载 伸展树(一)之 图文解析 和 C语言的实现
概要本章介绍伸展树。它和"二叉查找树"和"AVL树"一样,都是特殊的二叉树。在了解了"二叉查找树"和"AVL树"之后,学习伸展树是一件相当容易的事情。和以往一样,本文会先对伸展树的理论知识进行简单介绍,然后给出C语言的实现。后序再分别给出C++和Java版本的实现;这3种实现方式的原理都一样,选择其中之一进行了解即可。若文章有错误或不足的地方,希望您能不吝指出!目录1. 伸展树的介
2014-07-19 22:02:08
1127
转载 DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)
(转载于breaksoftware的csdn博客)之前几篇文章主要介绍和分析了为什么会在DllMain做出一些不当操作导致死锁的原因。本文将总结以前文章的结论,并介绍些DllMain中还有哪些操作会导致死锁等问题。 DllMain的相关特性 首先列出《DllMain中不当操作导致死锁问题的分析--进程对DllMain函数的调用规律的研究和分析》中论证的1
2014-03-18 15:54:17
914
转载 DllMain中不当操作导致死锁问题的分析——线程中调用GetModuleFileName、GetModuleHandle等导致死锁
(转载于breaksoftware的csdn博客)之前的几篇文章已经讲解了在DllMain中创建并等待线程导致的死锁的原因。是否还记得,我们分析了半天汇编才知道在线程中的死锁位置。如果对于缺乏调试经验的同学来说,可能发现这个位置有点麻烦。那么本文就介绍几个例子,它们会在线程明显的位置死锁掉。 DLL中的代码依旧简单。它获取叫EVENT的命名事件,然后等待这个事件被激活。激
2014-03-18 15:51:55
1035
转载 DllMain中不当操作导致死锁问题的分析--线程退出时产生了死锁
(转载于breaksoftware的csdn博客)我们回顾下之前举得例子[cpp] view plaincopycase DLL_PROCESS_ATTACH: { printf("DLL DllWithoutDisableThreadLibraryCalls_A:\tProcess attach (tid = %d)\n", tid);
2014-03-18 15:50:38
794
转载 DllMain中不当操作导致死锁问题的分析--加载卸载DLL与DllMain死锁的关系
(转载于breaksoftware的csdn博客)前几篇文章一直没有在源码级证明:DllMain在收到DLL_PROCESS_ATTACH和DLL_PROCESS_DETACH时会进入临界区。这个论证非常重要,因为它是使其他线程不能进入临界区从而导致死锁的关键。我构造了在DLL被映射到进程地址空间的场景,请看死锁时加载DLL的线程的堆栈 如果仔细看过《DllMai
2014-03-18 15:47:13
929
转载 DllMain中不当操作导致死锁问题的分析--DisableThreadLibraryCalls对DllMain中死锁的影响
(转载于breaksoftware的csdn博客)《windows核心编程》作者在讨论DllMain执行序列化的时候,曾说过一个他的故事:他试图通过调用DisableThreadLibraryCalls以使得新线程不在调用DllMain从而解决死锁问题。但是该方案最后失败了。思考作者的思路,他可能一开始认为:因为线程要调用DllMain而加锁,于是windows在发现DllMain不用调用
2014-03-18 15:38:58
1662
转载 DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子2
本文介绍使用Windbg去验证《DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子》中的结论,调试对象是文中刚开始那个例子。(转载请指明出于breaksoftware的csdn博客) 1 g 让程序运行起来 2 ctrl+break 中断程序 3 ~ 查看线程数 其实该程序自己运行起来
2014-03-18 15:31:53
883
转载 DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子
(转载于breaksoftware的csdn博客)有了前面两节的基础,我们现在切入正题:研究下DllMain为什么会因为不当操作导致死锁的问题。首先我们看一段比较经典的“DllMain中死锁”代码。[cpp] view plaincopy//主线程中 HMODULE h = LoadLibraryA(strDllName.c_str());
2014-03-18 15:31:11
1053
转载 DllMain中不当操作导致死锁问题的分析--进程对DllMain函数的调用规律的研究和分析
转载于breaksoftware的csdn博客不知道大家是否思考过一个过程:系统试图运行我们写的程序,它是怎么知道程序起始位置的?很多同学想到,我们在编写程序时有个函数,类似Main这样的名字。是的!这就是系统给我们提供的控制程序最开始的地方(注意这儿是提供给我们的,而实际有比这个还要靠前的main)。于是看到DllMain就可以想到它是干嘛的了:Dll的入口点函数。那何时调用这个函数的呢
2014-03-18 15:30:10
1012
转载 DllMain中不当操作导致死锁问题的分析--死锁介绍
最近在网上看到一些关于在DllMain中不当操作导致死锁的问题,也没找到比较确切的解答,这极大吸引了我研究这个问题的兴趣。我花了一点时间研究了下,正好也趁机研究了下进程对DllMain的调用规律。因为整个研究篇幅比较长,我觉得还是分开写比较能突出重点。本文先说说死锁。(转载请指明出于breaksoftware的csdn博客) 介绍死锁之前,我说一个我小时候听过的一个故事:
2014-03-18 15:28:22
922
原创 中断和异常的处理
本文为 第17章笔记中断和异常中断和异常概述中断和异常的作用是指示系统中的某个地方发生一些事件, 需要引起处理器(包括正在执行中的程序和任务)的注意. 当中断和异常发生时, 典型的结果是迫使处理器将控制从当前正在执行的程序或任务转移到另一个历程或任务中去. 该例程叫做中断处理程序, 或者异常处理程序. 如果是一个任务, 则发生任务切换.1. 中断(Interrupt)
2014-03-15 18:14:47
12709
原创 分页机制
本文为 第16章笔记因为段的长度不定, 在分配内存时, 可能会发生内存中的空闲区域小于要加载的段, 或者空闲区域远远大于要加载的段. 在前一种情况下, 需要另外寻找合适的空闲区域; 在后一种情况下, 分配会成功, 但太过于浪费. 为了解决这个问题, 从80386处理器开始, 引入了分页机制. 分页功能从总体上来说, 是用长度固定的页来代替长度不一定的段, 藉此解决因段长度不同而带来的内
2014-03-15 10:51:01
19564
3
原创 任务切换
本文为 第15章笔记 由两种基本的任务切换方式, 一种是协同式额, 从一个任务切换到另一个任务, 需要当前任务主动地请求暂时放弃执行权, 或者在通过调用门请求操作系统服务时, 由操作系统"趁机"将控制转移到另一个任务. 这种方式依赖于每个任务的"自律"性, 当一个任务失控时, 其他任务可能得不到执行的机会. 另一种是抢占式的, 在这种方式下, 可以安装一个定时器中断, 并在中
2014-03-12 23:28:03
5668
原创 任务和特权级保护
本文为 第14章笔记任务的隔离和特权级保护任务, 任务的LDT和TSS程序是记录在载体上的指令和数据, 总是为了完成某个特定的工作, 其正在执行中的一个副本, 叫做任务(Task). 这句话的意思是说, 如果一个程序有多个副本正在内存中运行, 那么, 它对应着多个任务, 每一个副本都是一个任务. 为了有效的在任务之间实施隔离, 处理器建议每个任务都应当具有自己的描述
2014-03-12 20:06:12
3382
原创 存储器的保护
本文为 第12章笔记别名技术我们都已经知道, 在保护模式下, 代码段是不可写入的. 所谓不可写入, 并非是说改变了内存的物理性质, 使得内存写不进去, 而是说, 通过该段的描述符来访问这个区域时, 处理器不允许向里面写入数据或者更改数据. 但是, 很多时候又需要修改代码段, 如调试时加入断点指令int3. 不管怎么样, 如果需要访问代码段内的数据, 只能重新为该段安装一个新的描
2014-03-07 16:21:00
1778
原创 进入保护模式
本文为 第11章笔记全局描述符表全局描述符表中存放着段描述符, 每个段描述符8个字节.为了跟踪全局描述符表, 处理器内部有一个48位寄存器, 叫做全局描述符表寄存器(GDTR), GDTR分为两部分,分别为32位的线性地址和16的边界, 32位线性基地址部分保存的是全局描述符表在内存中的起始线性地址, 16位边界部分是全局描述符表的边界(界限), 其值等于表的大小(总字节数)
2014-03-06 19:41:12
2448
转载 Dll注入技术之输入法注入
转自:黑客反病毒DLL注入技术之输入法注入 输入法注入原理是利用Windows系统中在切换输入法需要输入字符时,系统就会把这个输入法需要的ime文件装载到当前进程中,而由于这个Ime文件本质上只是个存放在C:\WINDOWS\system32目录下的特殊的DLL文件,因此我们可以利用这个特性,在Ime文件中使用LoadLibrary()函数待注入的DLL文件。1.编写
2014-02-06 23:36:59
11608
转载 Dll注入技术之APC注入
转自:黑客反病毒APC注入的原理是利用当线程被唤醒时APC中的注册函数会被执行的机制,并以此去执行我们的DLL加载代码,进而完成DLL注入的目的,其具体流程如下: 1)当EXE里某个线程执行到SleepEx()或者WaitForSingleObjectEx()时,系统就会产生一个软中断。 2)当线程再次被唤醒时,此线程会首先执行APC队列中的被注册的函数。 3
2014-02-06 23:27:12
2321
转载 Dll注入技术之劫持进程创建注入
转自:黑客反病毒DLL注入技术之劫持进程创建注入 劫持进程创建注入原理是利用Windows系统中CreateProcess()这个API创建一个进程,并将第6个参数设为CREATE_SUSPENDED,进而创建一个挂起状态的进程,利用这个进程状态进行远程线程注入DLL,然后用ResumeThread()函数恢复进程。1.创建挂起的进程 下面是创建一个挂起
2014-02-06 23:22:13
5288
转载 Dll注入技术之依赖可信进程注入
转自:黑客反病毒DLL注入技术之依赖可信进程注入 依赖可信进程注入原理是利用Windows 系统中Services.exe这个权限较高的进程,首先将a.dll远线程注入到Services.exe中,再利用a.dll将b.dll远线程注入到待注入进程中。具体过程如下图所示:这里提供一个小技巧,当注入到Services.exe里的DLL时,想在做完事情
2014-02-06 23:20:13
3444
转载 Dll注入技术之远程线程注入
转自:黑客反病毒DLL注入技术之远线程注入 DLL注入技术指的是将一个DLL文件强行加载到EXE文件中,并成为EXE文件中的一部分,这样做的目的在于方便我们通过这个DLL读写EXE文件内存数据,(例如 HOOK EXE文件中的API),或以被注入EXE的身份去执行一些操作等等。 远线程注入原理是利用Windows 系统中CreateRemoteThread()这
2014-02-06 23:16:15
3237
转载 Dll注入技术之消息钩子
转自:黑客反病毒DLL注入技术之消息钩子注入 消息钩子注入原理是利用Windows 系统中SetWindowsHookEx()这个API,他可以拦截目标进程的消息到指定的DLL中导出的函数,利用这个特性,我们可以将DLL注入到指定进程中。主要流程如下图所示1.准备阶段 需要编写一个DLL,并且显式导出MyMessageProc()函数,主要代码如
2014-02-06 23:14:07
7726
转载 Dll注入技术之ComRes注入
转自:黑客反病毒DLL注入技术之ComRes注入 ComRes注入的原理是利用Windows 系统中C:\WINDOWS\system32目录下的ComRes.dll这个文件,当待注入EXE如果使用CoCreateInstance()这个API时,COM服务器会加载ComRes.dll到EXE中,我们利用这个加载过程,移花接木的把ComRes.dll替换掉,并在伪造的ComR
2014-02-06 23:09:18
1621
转载 Dll注入技术之注册表注入
DLL注入技术之REG注入 DLL注入技术指的是将一个DLL文件强行加载到EXE文件中,并成为EXE文件中的一部分,这样做的目的在于方便我们通过这个DLL读写EXE文件内存数据,(例如 HOOK EXE文件中的API),或以被注入EXE的身份去执行一些操作等等。 REG注入原理是利用在Windows 系统中,当REG以下键值中存在有DLL文件路径时,会跟随EXE文件的启动加载这
2014-02-06 23:00:12
6886
原创 前置病毒感染方式学习笔记
前置病毒,和资源感染类似,资源感染是病毒把宿主程序添加到程序的资源中,替换覆盖原程序,运行时将宿主程序释放成一个临时文件运行。前置病毒是读取病毒和宿主程序数据,然后将病毒和宿主程序数据再以病毒 --> 宿主程序的顺序写入宿主程序文件,运行时创建一个临时文件,读取程序中宿主程序的数据写入临时文件运行。文件型病毒至少有这四个模块:1> 条件模块:判断触发条件和寻找符合条件的宿主文件2>
2013-11-17 19:28:07
1630
原创 病毒资源感染方式学习笔记
本文学习自:关于感染型病毒的那些事(三) by gaa_ra 代码也来自gaa_ra资源感染,就是将宿主程序作为病毒程序的一个资源来保存,将附加了宿主程序的病毒程序覆盖原来的宿主程序,当打开病毒文件时,病毒发作并将宿主程序释放出来运行。进行资源感染后,打开感染文件的过程大致如下:CreateFile创建资源文件,用于存放要被释放出来的宿主文件 --> FindResource查
2013-11-15 23:17:39
1142
原创 打造DLL内存加载引擎学习笔记
首先看下我们内存加载引擎的流程。 1. 申请一段大小为dll映射内存后的映像大小的内存空间。 2. 移动各个区段的数据到申请的内存。 2. 修复引入表结构的地址表。 4. 通过重定位结构修复需要重定位的地址。 5. 调用DllMain入口点流程解析:pe结构中nt header结构当中的ImageSize存放的是我们整个文件
2013-11-14 18:19:37
2126
Programming the Microsoft Windows driver model中文
2013-01-25
Windows用户态程序高效排错
2012-05-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人