PE文件头逻辑结构

PE文件头逻辑结构

学编程的最绝妙方法与最高境界

[转自百度百科] 1988年王江民接触计算机开始于工控。王江民意识到要搞光机电自动化,必须依靠计算机来控制,不学计算机肯定会落后。“我38岁开始学计算机,没有感觉我老了,没有感觉我不行,只感到我的英语基础不好。再说,计算机是实践性非常强的学科。我搞计算机是用计算机,不是学计算机。”
小知识 | 2008-08-24 22:59 | 阅读 5096 次 | 评论 1 条

利用单链表的头插入法,理解SEH的设置

在Win32汇编中,对于SEH异常处理回调函数的设置,只有3条简单的指令,但要真正理解起来,还真不容易. 指令如下: push offset _Handler ;回调函数地址入栈 push fs:[0] ;原先的EXCEPTION_REGISTRATION 结构地址入栈 mov fs:[0],esp ;把当前栈顶地址赋予fs:[0] 如果只看这3条指令是无法理解的,必须结合单链表的头插入法来理解它. 首先,可以把fs:[0] 当作头指针来看待;(注意:fs:[0]就是NT_TIB结构中ExceptionL...

初学PE文件的一些总结

初学PE文件,总结一些经验。1、为什么在PE文件中有DOS文件头和DOS块? 因为,防止PE文件在DOS系统下执行。PE文件是在Windows系统下的可执行文件格式。如果在DOS系统下执行,就会显示一句:This program cannot be run in DOS mode .这句话是在DOS块中的。当然,你也可以在DOS块中安排一个16位汇编的程序,使得PE文件在DOS系统下也有一定的功能。 2、Windows装载器装载PE文件的第一步简要过程是怎样的? 首先,要读取文件头的前两个字节4D 5A,从而知道这是DOS文件头(标记是MZ);遍历DOS文件头的结构IMAG...

看Intel手册很吃力

1. Opcode (operation code) :操作码 2. Instruction :指令 3. 64-Bit Mode :64位模式 4. compat/Leg mode :适用/支持 模式 ? 5. description :描述,说明 6. Valid :有效的 7. Invalid :无效的 8. r/m32 :寄存器或内存,32位(其它类推) 9. imm3...

菜鸟碎说指针

刚学习指针的时候,不知道它是什么;老是和其它的数据区别不出来~~ 过了好久,才知道,指针就是个地址而已~~ 现在看来,指针不只是个地址了~~ 指针啊~~你真的是无时不在、无处不有啊~~ EIP ,是指令指针寄存器;指令不是不等长的吗?EIP怎么知道每执行完一条指令就要增加(减少)多少字节呢? 呵呵~~我想,指令的长度一定是固定的,而每条指令读或写的数据长度也应该是有规定的~~比如,根据寄存器确定数据长度;要是没有寄存器参与,就要WORD PTR 或DWORD PTR 了~~ 在处理字符串中,常用某个变量或寄存器来记录 字符个数 ,其实它也算个指针...
小知识 | 2008-08-05 09:07 | 阅读 4515 次 | 评论 4 条

lodsb 和 stosb 指令

lodsb 指令:从esi 指向的源地址中逐一读取一个字符,送入AL 中; (然后,可以先判断这个字符是什么字符,如0dh,0ah 之类等,再执行相应的操作); stosb 指令:一般跟随在lodsb 指令后面,将AL 中的字符逐一写入edi 指向的目的地址; 如果是lobsw ,表明要处理的是字,而不是字符;则采用的相应指令是:stosw ;那么要判断的寄存器是AX,而不是AL 了. 如果是lobsd ,表明要处理的是双字;则采用的相应指令是: stosd ;这时候,要判断的寄存器就是EAX 了.

今天认识了两个函数(lstrcpy,lstrcat)

好久不摸C语言了。 所以,在学习WIN32汇编的时候,不小心被两个函数给唬住了:lstrcpy ,lstrcat 在排毒(BAIDU)上搜了一下,才知道它们的原形竟然在C语言里! strcpy 原形:char *strcpy(char *str1,char *str2) 功能:将str2字符串复制到str1中; strcat 原形:char *strcat(char *str1,char *str2) 功能:把字符串str2连接到str1后面,原“\0”被取消。 返回值都是:str1 .