2015年9月1日

NewBluePill源码学习 <一>

摘要: NewBluePill的源码也看的差不多了,一直说等有时间了再写学习的一些心得,拖来拖去弄到现在了,时间不是等来的,慢慢开始吧。0x00 初识硬件虚拟化硬件虚拟化对大数人来讲还是比较陌生。什么是硬件虚拟化?因为早期的虚拟机都是进程级虚拟机,也就是作为已有操作系统的一个进程,完全通过软件的手段来模拟... 阅读全文

posted @ 2015-09-01 13:46 _懒人 阅读(2455) 评论(0) 推荐(1) 编辑

2015年8月28日

深入理解Windows X64调试

摘要: 随着64位操作系统的普及,都开始大力进军x64,X64下的调试机制也发生了改变,与x86相比,添加了许多自己的新特性,之前学习了Windows x64的调试机制,这里本着“拿来主义”的原则与大家分享。本文属于译文,英文原文链接:http://www.codemachine.com/article_x... 阅读全文

posted @ 2015-08-28 00:54 _懒人 阅读(22769) 评论(3) 推荐(3) 编辑

2015年8月16日

x64 结构体系下的内存寻址

摘要: 欢迎转载,转载请注明出处:http://www.cnblogs.com/lanrenxinxin/p/4735027.html 在阅读NewBluePill源码的时候,看内存的那一块简直头疼,全是x64下的寻址,之前根本就没有接触过x64的内存寻址上的内容,看的晕头转向,决定先把x64下的寻址给弄明 阅读全文

posted @ 2015-08-16 22:47 _懒人 阅读(13944) 评论(6) 推荐(3) 编辑

Windows PAE 寻址

摘要: PAE 就是物理地址扩展。我们常规的寻址方式是之前的将虚拟地址化为10 10 12的方式来寻址页目录,页表,页偏移,但是在开始PAE之后的寻址方式发生了改变,将32位的虚拟地址转化成 2 9 9 12的方式来寻址:理论就不赘述了,和普通的寻址方式没有太大的差别,具体可以参考之前的文章:x86虚拟地址... 阅读全文

posted @ 2015-08-16 03:23 _懒人 阅读(2146) 评论(0) 推荐(2) 编辑

x86虚拟地址到物理地址的映射学习

摘要: 这里只谈分页管理的机制,也是目前最重要的内存管理机制。最初的设计想法:结构图如下:页的尺寸是4KB,虚拟地址的前20位用于指定一个物理页,后12位用于访问页内偏移。页表项的结构:各个位的含义:P--位0是存在(Present)标志,用于指明表项对地址转换是否有效。P=1表示有效;P=0表示无效。在页... 阅读全文

posted @ 2015-08-16 03:02 _懒人 阅读(1745) 评论(1) 推荐(1) 编辑

2015年8月15日

Windows 回调监控 <二>

摘要: 在之前的文章Windows 回调监控 总结了关于CreateProcessNotify,CreateProcessNotifyEx和LoadImageNotify一些用法,之后产生了一个思路,既然在进程创建的时候加载.exe文件会执行我们的回调函数,那么如果在我们回调函数之中对内存中的.exe文件的... 阅读全文

posted @ 2015-08-15 17:04 _懒人 阅读(2425) 评论(1) 推荐(1) 编辑

2015年8月12日

Windows 回调监控 <一>

摘要: 在x86的体系结构中,我们常用hook关键的系统调用来达到对系统的监控,但是对于x64的结构,因为有PatchGuard的存在,对于一些系统关键点进行hook是很不稳定的,在很大几率上会导致蓝屏的发生,而且在Vista之后的操作系统中,还提供了ObRegisterCallbacks()函数注册自定义... 阅读全文

posted @ 2015-08-12 13:04 _懒人 阅读(7039) 评论(2) 推荐(5) 编辑

2015年8月10日

浅析dex文件加载机制

摘要: 我们可以利用DexClassLoader来实现动态加载dex文件,而很多资料也只是对于DexClassLoader的使用进行了介绍,没有深入讲解dex的动态加载机制,我们就借助于Android4.4的源码来探索。先从一个简单的动态加载dex文件开始 具体实现细节可以参考这篇文章AndroidDex数... 阅读全文

posted @ 2015-08-10 18:12 _懒人 阅读(14551) 评论(2) 推荐(2) 编辑

2015年8月8日

Android 注入详解

摘要: Android下的注入的效果是类似于Windows下的dll注入,关于Windows下面的注入可以参考这篇文章Windows注入术。而Android一般处理器是arm架构,内核是基于linux,因此进程间是弱相互作用,不存在Windows下类似于CreateRemoteThread 作用的函数,可... 阅读全文

posted @ 2015-08-08 18:12 _懒人 阅读(7539) 评论(2) 推荐(2) 编辑

2015年8月3日

Android JNI初体验

摘要: 欢迎转载,转载请注明出处:http://www.cnblogs.com/lanrenxinxin/p/4696991.html 开始接触Android JNI层面的内容,推荐一本不错的入门级的书《Android的设计与实现:卷一》,这两天看了一下关于Java层和Native层函数映射的章节,加深对J 阅读全文

posted @ 2015-08-03 20:53 _懒人 阅读(4516) 评论(1) 推荐(1) 编辑

2015年7月31日

IDTHook 深入学习

摘要: 在之前的一篇文章中介绍了替换IDT向量表中的地址来达到Hook的目的IDT hook KiTrap03但是这样很容易就可以被检测了。接下来要学习就是通过patch GDT来达到Hook IDT的目的。首先,我们要了解一下,当触发INT 3号中断之后,CPU是如何找到接下来要执行的指令的地址。CPU ... 阅读全文

posted @ 2015-07-31 19:58 _懒人 阅读(4253) 评论(0) 推荐(0) 编辑

2015年7月28日

硬件断点 DrxHook

摘要: 硬件断点的实现需要依赖于调试寄存器DR0~DR7 调试寄存器DR0~DR3-----调试地址寄存器DR4~DR5-----保留DR6 -----调试状态寄存器 指示哪个调试寄存器被命中DR7 -----调试控制寄存器关于Dr7寄存器每个标志位的解释:总结如下DR7调试控制寄存器: R... 阅读全文

posted @ 2015-07-28 22:56 _懒人 阅读(4103) 评论(0) 推荐(0) 编辑

2015年7月27日

访问其他进程内存

摘要: 在Ring3 是提供了两个API函数,WriteProcessMemory和ReadProcessMemory来读取其他进程的内存BOOL WINAPI WriteProcessMemory( __in HANDLE hProcess, __in LPVOID lpBaseAddress... 阅读全文

posted @ 2015-07-27 15:21 _懒人 阅读(8409) 评论(3) 推荐(2) 编辑

2015年7月25日

ARM 汇编指令

摘要: ARM汇编程序特点:l所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通用寄存器来完成.因此代码中大量看到LDR,STR指令来传送值.lARM汇编语句中.当前语句很多时候要隐含的使用上一句的执... 阅读全文

posted @ 2015-07-25 08:29 _懒人 阅读(17859) 评论(1) 推荐(2) 编辑

2015年7月23日

由枚举模块到ring0内存结构 (分析NtQueryVirtualMemory)

摘要: 是由获得进程模块而引发的一系列的问题,首先,在ring3层下枚举进程模块有ToolHelp,Psapi,还可以通过在ntdll中获得ZwQuerySystemInformation的函数地址来枚举,其中ZwQueryInformationProcess相当于是调用系统服务函数,其内部实现就是遍历PE... 阅读全文

posted @ 2015-07-23 19:33 _懒人 阅读(6593) 评论(0) 推荐(0) 编辑

导航