
汇编
nailgo
这个作者很懒,什么都没留下…
展开
-
OD 跟踪调试经验
如你要跟ebx,跟到某层遇到mov ebx, [ebp-430]之类的,不用讲,局部变量,此时在ebx下断,看ebx的值,再ctrl+f9, f8,到上一层看是怎么传进来这个参数的。比如是最后一次push传进来的,就向上一直跟最后一次push的寄存器。 向上跟数值时,遇到ebp,esp之类的,一定要仔细看。仔细分析堆栈。并不要认为上一个函数一定是堆栈平衡。 遇到跟转载 2012-03-25 23:16:05 · 3611 阅读 · 0 评论 -
SYSENTER系统服务调用过程
SYSENTER系统服务调用过程 以NtReadFile调用为例。一.NtDll.Dll中,NtReadFile过程如下:ntdll!NtReadFile:7c92d9b0 b8b7000000 mov eax,0B7h7c92d9b5 ba0003fe7f mov edx,offset SharedUserData!SystemCa转载 2012-03-08 21:55:03 · 696 阅读 · 0 评论 -
SYSENTER——快速系统调用
SYSENTER——快速系统调用 SYSENTER用来快速调用一个0层的系统过程。SYSENTER是SYSEXIT的同伴指令。该指令经过了优化,它可以使将由用户代码(运行在3层)向操作系统或执行程序(运行在0层)发起的系统调用发挥最大的性能。 在调用SYSENTER指令前,软件必须通过下面的MSR寄存器,指定0层的代码段和代码指针,0层的堆栈段和堆栈指针:1. IA转载 2012-03-08 21:59:43 · 791 阅读 · 0 评论 -
新汇编指令sysenter 和sysexit
单说来就是User模式向System模式的一种调用。做过Native API编程的话应该就知道,即使是看起来像内核的NTDLL.dll也只不过是Ring3级的,最终的系统调用是由ntoskrnl.exe程序向内核发送IO请求,然后内核与驱动程序返回执行结果。这个调用的中间步骤就是用SYSENTER和SYSEXIT来实现,以达到保护模式的作用。SYSENTER——快速系统调用 SYSEN转载 2012-03-08 21:53:42 · 756 阅读 · 0 评论 -
Windows 系统调用
Windows 系统调用 Windows 2K 通过 2Eh 中断来实现系统调用的,但是在 XP 后使用 SysEnter 来实现系统调用了,同时 2Eh 中断还是保存着的。不管是 2EH 中断还是 SYSENTER , Windows 对所有的系统调用都会生成下面的 KTRAP_FRAME 堆栈框架。 KTRAP_FRAME 框架结构图 用户态下使用转载 2012-03-08 21:56:10 · 721 阅读 · 0 评论 -
微软编译器中寄存器的使用
微软编译器中寄存器的使用原文地址:http://www.skullsecurity.org/wiki/index.php/Registers翻译:本文是汇编语言指南的第一篇,若你准备阅读整个指南,你必将有所收获。一个寄存器就像变量,只是这种变量的数量是固定的。寄存器是CPU中用来保存数据的地方。数学计算(加法、减法..)只能在寄存器中进行;寄存器常常保存着内存地址;寄存器与内存转载 2012-03-08 21:57:34 · 556 阅读 · 0 评论 -
SYSEXIT——快速系统调用的快速返回
SYSEXIT——快速系统调用的快速返回 SYSEXIT用来快速调用返回至3层的用户代码。SYSEXIT是SYSENTER的同伴指令。该指令经过了优化,它可以使将由操作系统或执行程序(运行在0层)至用户代码(运行在3层)的返回发挥最大的性能。该指令只能在0层的权限执行。 在调用SYSEXIT指令前,软件必须通过MSR寄存器和通用寄存器,指定3层的代码段和代码指针,3层的堆栈段和堆栈转载 2012-03-08 22:00:43 · 625 阅读 · 0 评论 -
GetTickCount的实现
GetTickCount的实现Kernel32.dll的GetTickCount返回机器启动后的毫秒数。一直不知原理,今天看了资料才知道。写下来。反汇编GetTickCount函数:kernel32!GetTickCount:7c80932e ba0000fe7f mov edx,offset SharedUserData (7ffe0000)7c80转载 2012-03-08 22:01:29 · 818 阅读 · 0 评论 -
城里城外看SSDT
城里城外看SSDT引子2006年,中国互联网上的斗争硝烟弥漫。这时的战场上,先前颇为流行的窗口挂钩、API挂钩、进程注入等技术已然成为昨日黄花,大有逐渐淡出之势;取而代之的,则是更狠毒、更为赤裸裸的词汇:驱动、隐藏进程、Rootkit……前不久,我不经意翻出自己2005年9月写下的一篇文章《DLL的远程注入技术》,在下面看到了一位名叫L4bm0s的网友说这种技术已经过时了。转载 2012-03-08 22:20:44 · 413 阅读 · 0 评论