随笔分类 - ASM
汇编相关的文档
摘要:在显示函数时,多是如下显示:f_install_start proc near ; CODE XREF: f_mainentry:loc_4021B6p.text:00401EF9.text:00401EF9 String2 = byte ptr -468h.text:00401EF9 var_467 = byte ptr -467h.text:00401EF9 Filename = byte ptr -364h.text:00401EF9 var_363 = byte ptr -363h.text:00401EF9 String = byte ptr -260h.text:00401EF9
阅读全文
摘要:用IDA分析程序时,经常可以看到__alloc_probe(malloc.h中的alloca函数)这个函数,这个函数有什么用呢!现在分析一下这个函数。seg000:004042E0 __alloca_probe proc nearseg000:004042E0 arg_0 = byte ptr 4seg000:004042E0seg000:004042E0 push ecxseg000:004042E1 cmp eax, 1000h ; 判断申请的大小是为小于1000hseg000:004042E6 lea ecx, [esp+4+arg_0] ; 取得原来参数在栈中的地址,用于用来提升栈空间
阅读全文
摘要:FS寄存器指向当前活动线程的TEB结构(线程结构)偏移 说明000 指向SEH链指针004 线程堆栈顶部008 线程堆栈底部00C SubSystemTib010 FiberData014 ArbitraryUserPointer018 FS段寄存器在内存中的镜像地址020 进程PID024 线程ID02C 指向线程局部存储指针030 PEB结构地址(进程结构)034 上个错误号得到KERNEL32.DLL基址的方法assume fs:nothing ;打开FS寄存器mov eax,fs:[30h] ;得到PEB结构地址mov eax,[eax + 0ch] ;得到PEB_LDR_DATA结构
阅读全文
摘要:一、test属于逻辑运算指令功能: 测试(两操作数作AND[与]运算,仅修改标志位,不修改寄存器内的结果).test对两个参数(目标,源)执行AND逻辑操作,并根据结果设置标志寄存器,结果本身不会保存。test AX,BX 与 and AX,BX 命令有相同效果语法: TEST r/m,r/m/data影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0)运用举例:1.Test用来测试一个位,例如寄存器:test eax, 100b; b后缀意为二进制jnz ******; 如果eax右数第三个位为1,jnz将会跳转2.Test的一个非常普遍的用法是用来测试一方寄存器是否为空:test
阅读全文
摘要:http://www.editplus.com/javacpp.htmlhttp://www.editplus.com/dn.php?n=masm.rar
阅读全文
摘要:标志寄存器80X86的标志寄存器的结构如下部分标志位说明ZFZF==Zero Flag,是零标志位,记录指令执行结果是事为零。如果一条指令执行后结果为零,ZF置位,也就是ZF的值为1,否则为0 。比如1 mov ax, 12 sub ax, 1ax-1=0,所以ZF=0 。http://blog.csdn.net/waitforc/article/details/6905209http://blog.kingsamchen.com/archives/tag/asm
阅读全文
摘要:mov eax, 30则eax里面放置的是十进制的30如果要用十六进制表示,则应该是:mov eax, 30hdwNum dd 10h此时eax里面放的是十进制的48同理:mov eax, 30o 八进制mov eax, 10b 二进制
阅读全文
摘要:每一种语言都有一些字符串操作函数,反汇编后的代码也不例外。网上讲的都比较零碎,我将它们收集起来,并配上自己的理解,形成本文。一、字节操作指令:lodsb和stosb1.lodsd需要寄存器esi配合使用。每执行一次lodsb,就将[esi]中的一个字节复制到al寄存器中。 即:lodsd == [esi] --> al2.stosb需要寄存器edi配合使用。每执行一次stosb,就将al中的内容复制到[edi]中。 即:stosb == al --> [edi]3.ecx和cld指令。以上两条指令,一次只能复制一个字节。要是有多个字节需要复制该怎么办呢?那就需要用到一个计数器,所以
阅读全文

浙公网安备 33010602011771号