
汇编
zacklin
这个作者很懒,什么都没留下…
展开
-
汇编语言超浓缩教程
“ 哎哟,哥们儿,还捣鼓汇编呢?那东西没用,兄弟用VB"钓"一个API就够你忙活个十天半月的,还不一定搞出来。”此君之言倒也不虚,那吾等还有无必要研他一究呢?(废话,当然有啦!要不然你写这篇文章干嘛。)别急,别急,让我把这个中原委慢慢道来:一、所有电脑语言写出的程序运行时在内存中都以机器码方式存储,机器码可以被比较准确的翻译成汇编语言,这是因为汇编语言兼容性最好,故几乎所有跟踪、调试工具(包括WI原创 2012-03-23 17:27:22 · 657 阅读 · 0 评论 -
Inline Hook 之(监视任意函数)
前面已经写过两次inline hook的博文了,第一篇为:《C/C++ HOOK API(原理深入剖析之-LoadLibraryA)》,这篇博文的方法是通过修改任意函数的前面N个字节,实现跳转并进入到我们自定义的hook函数里,执行完毕我们的hook函数之后,再直接调用被hook的函数。第一篇的方法没有考虑多线程的情况,所以在多线程环境下会有问题。第二篇为:《 Inline HOOK API原创 2012-04-19 16:10:09 · 2289 阅读 · 1 评论 -
用C语言编写复杂的中断干扰处理器
当从外部的硬件或者处理器向CPU发出异常信号的时候,中断就会发生了。CPU通过传递执行流来响应中断服务程序,其中CPU响应的过程是这样的:首先对事件进行处理,处理之后再返回中断代码。ISR本质上是一个不设任何参数和不返回任何值得函数。但是,和一般的规则函数不一样,你几乎可以在任何情况下调用ISR函数,因此在调用的时候要特别小心,特别是登陆和退出ISR函数时,要严格按照特定的执行规则和执行顺序来原创 2012-04-13 17:41:02 · 1007 阅读 · 0 评论 -
Windows 自旋锁分析(四)
5,KeAcquireInStackQueuedSpinLock的实现机制 在单核处理器(WindowsXP)下观察KeAcquireInStackQueuedSpinLock的实现hal!KeAcquireInStackQueuedSpinLock: mov eax,dword ptr ds:[FFFE0080h] shr eax,4 mo原创 2012-04-10 15:27:27 · 1521 阅读 · 0 评论 -
Win32 汇编 [23] - 位测试指令: BT、BTC、BTR、BTS
BT、BTS、BTR、BTC;BT(Bit Test): 位测试 ;BTS(Bit Test and Set): 位测试并置位 ;BTR(Bit Test and Reset): 位测试并复位 ;BTC(Bit Test and Complement): 位测试并取反 ;它们的结果影响 CF ;它们的指令格式相同: BT r16/r32,原创 2012-04-10 15:11:17 · 7659 阅读 · 0 评论 -
汇编程序框架
data SEGMENT "数据段,编程者可以把数据都放到这个段里....数据部分"数据格式是: 标识符 db/dw 数据。data ENDS"数据段结束处。edata SEGMENT "附加数据段,编程者可以把数据都放到这个段里....附加数据部分edata ENDS"附加数据段结束处。code SEGMENT"代码段,实际的程序都是放这个段里。 AS原创 2012-03-23 14:58:26 · 934 阅读 · 0 评论 -
汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp
汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, espwww.diybl.com 时间 : 2011-03-30 作者:网络 编辑:hawk 点击: 233[ 评论 ] eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言原创 2012-03-23 10:21:17 · 595 阅读 · 0 评论 -
关于汇编跳转指令的说明
虽然jmp指令提供了控制转移,但是它不允许进行任何复杂的判断。80x86条件跳转指令提供了这种判断。条件跳转指令是创建循环和实现其他条件执行语句,如if…endif的基本要素。条件跳转指令检查一个或多个标志位,判断它们是否匹配某个特殊条件(就像setcc指令):如果标志匹配成功,该指令就将控制转移到目标位置;如果匹配失败,CPU忽略该条件跳转指令而继续执行下一条指令。一些条件跳转指令只是简单测原创 2012-03-23 11:17:38 · 850 阅读 · 0 评论 -
原子操作与 x86 上的 lock 指令前缀
原子操作是不可分割的操作,在执行完毕时它不会被任何事件中断。在单处理器系统(UniProcessor,简称 UP)中,能够在单条指令中完成的操作都可以认为是原子操作,因为中断只能发生在指令与指令之间。在多处理器系统(Symmetric Multi-Processor,简称 SMP)中情况有所不同,由于系统中有多个处理器在独立的运行,即使在能单条指令中完成的操作也可能受到干扰。原创 2012-04-10 14:51:08 · 21640 阅读 · 1 评论 -
用汇编实现原子操作
原子操作(1) - 用汇编实现原子操作“最轻量级的锁”,通常也叫”原子操作”,之所以加引号是因为他们在汇编级别并不是原子操作,是用多条指令完成的,这些操作大多都是利用CPU支持的汇编指令.在某些构架过时的CPU体系结构上,它们应该是用比较重量级的线程内锁实现的吧(我的猜测).最常见的原子操作有Compare and Exchange,Self Increase/Decrease等等80原创 2012-04-10 14:46:02 · 4269 阅读 · 0 评论 -
免杀汇编教程(汇编花指令)
相信很多朋友都做过木马免杀,早期的免杀都是加壳和改特征码,现在免杀技术已经发展到花指令免杀,改壳之类的,而这些需要一定的汇编知识,但是汇编却不是一块容易啃的骨头,所以我写了这篇菜鸟版的免杀汇编教程,帮助小菜们快速入门,掌握免杀必备的汇编知识,改花指令,改特征码的技巧和编写自己的花指令。 一、免杀必备的汇编知识 push 压栈,栈是一种数据结构,记住四个字:先进后出。压栈就是把数原创 2012-03-27 17:42:54 · 2725 阅读 · 0 评论 -
GCC内嵌汇编
AT&T手册里面的,我整理了下,方便阅读 内核代码绝大部分使用C 语言编写,只有一小部分使用汇编语言编写,例如与特定体系结构相关的代码和对性能影响很大的代码。GCC提供了内嵌汇编的功能,可以在C代码中直接内嵌汇编语言语句,大大方便了程序设计。 简单的内嵌汇编很容易理解 例如:__asm____volatile__("hlt");“__asm__”表示后面的代原创 2012-03-26 16:26:34 · 387 阅读 · 0 评论 -
汇编命令及OD常用命令及断点设置
汇编32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。寄存原创 2012-07-12 10:23:31 · 8398 阅读 · 1 评论