- 博客(10)
- 收藏
- 关注
原创 win32汇编语言程序设计——union结构
在汇编语言遇到上述结构定义时,对union u1这样的表述没有做出解释,从而造成理解困难。其实union的意思是一个联合体,也就是联合体内的所有字段占用相同的空间,而表示的意义是不相同的。
2023-06-23 10:56:25 130
原创 WIN32汇编语言程序设计——在PE文件上添加执行代码
这里的技术目标是这样的,我们打算使用JMP指令的一种用法:转移地址在内存中的JMP指令。比如,在PE文件中,一个典型的对齐值是200h ,这样,每个区块都将从200h 的倍数的文件偏移位置开始,假设第一个区块在400h 处,长度为90h,那么从文件400h 到490h 为这一区块的内容,而由于文件的对齐值是200h,所以为了使这一区块的长度为FileAlignment 的整数倍,490h 到 600h 这一个区间都会被00h 填充,这段空间称为区块间隙,下一个区块的开始地址为600h。
2023-05-09 21:05:53 285
原创 WIN32汇编语言程序设计——API和动态链接
最后有一个最重要的概念一定要牢记:动态链接库是被映射到其他应用程序的地址空间中执行的,它和应用程序可以看成是“一体”的,动态链接库可以使用应用程序的资源,它所拥有的资源也可以被应用程序使用,它的任何操作都是代表应用程序进行的,当动态链接库进行打开文件、分配内存和创建窗口等操作后,这些文件、内存和窗口都是为应用程序所拥有的。1. 在程序中声明函数。当PE文件被执行的时候,Windows装载器将文件装入内存并将导入表中登记的DLL文件一并装入,再根据DLL文件中的函数导出信息对被执行文件的IAT表进行修正。
2023-04-23 21:26:00 1041
原创 WIN32汇编语言程序设计—— 在Richedit控件中添加字符串的通用子程序 _AppendInfo
分析_AppendInfo子程序是如何实现在Richedit控件的末尾添加字符串的。
2023-04-13 12:34:37 173
原创 WIN32汇编语言程序设计——查看PE资源列表
这么多种类型的不同ID的资源是用类似于磁盘目录结构的方式组织起来的。也就是按照根目录→资源类型→资源ID的3层树型目录结构来组织资源,只不过在第3层目录中放置的代码页“文件”不是资源本身而是一个用来描述资源的结构罢了,通过这个结构中的指针才能最后找到资源数据。PE文件资源中的内容包括光标、图标、位图、菜单等十几种标准的类型,除此之外,还可以使用自定义的类型。每种类型的资源中可能存在多个资源项,这些资源项用不同的ID或者名称来分辨,在某个资源ID下,还可以同时存在不同代码页的版本。
2023-03-29 17:26:37 351
原创 WIN32汇编语言程序设计——查看PE文件导出表
当PE文件被执行的时候,Windows装载器将文件装入内存并将导入表中登记的DLL文件一并装入,再根据DLL文件中的函数导出信息对被执行文件的IAT表进行修正。在这些包含导出函数的DLL文件中,导出信息被保存在导出表中,通过导出表,DLL文件向系统提供导出函数的名称、序号和入口地址等信息,以便Windows装载器通过这些信息来完成动态链接的过程。通过打开文件后拿到的句柄,用GetFileSize函数拿到文件的长度。(1) 子程序参数1:已经读取到内存中的文件头的地址。2. 获取数据块的文件偏移地址。
2023-03-24 22:28:14 531
原创 WIN32汇编语言程序设计——取出导入表的函数及引用DLL名称信息(CHA17)
值得一提的是访问数据目录表的时候地址是DataDirectory[8].VirtualAddress,这里要说明一下:在MASM中,不管数组中的单个数组项字节数是多少,括号中的数值都是字节地址而不是数组下标,所以数据目录表结构的长度是8的时候,访问第n个结构时要寻址的就是DataDirectory[n*8],所以上面的DataDirectory[8]实际上是DataDirectory[1*8]的意思,表示访问的是索引号为1的数组项。(1) 子程序参数1:已经读取到内存中的文件头的地址。
2023-03-22 22:54:19 276
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人