1. 有时候我们书写的工具函数会有ANSI和UNICODE两个版本分别与相应ANSI或者UNICODE版本的Windows API配合使用。这种不同的编码版本其实是对于函数的"字符串参数"的编码方式来区分。在Windows2000以上的版本中系统都是使用UNICODE来处理的,所以我们通常是在ANSI版本的函数里面将"字符串参数"转换成UNICODE然后调用UNICODE版本就行了(模仿Windows的做法)。而且在UNICODE版本里面调用函数的时候并不需要显式调用UNICODE的Windows API,因为编译器会自动根据是否有UNICODE定义来选择Windows API函数的版本的。
注意:如果我们使用GetProcAddress API,我们应该总是使用特定的ANSI或者UNICODE版本,因为这两个是真正存在于系统DLL中的API函数。(所以这种情况也通常需要我们的函数分成两个版本来实现)

2. 在调用VirtualAllocEx和malloc等函数来分配字符串空间的时候,都应该分配字符串长度加1(可能加2,若为UNICODE),这个多出来的字符是为'0'(L'0')准备的。

3. VirtualQuery调用的结果如果State为MEM_FREE,则MEMORY_BASIC_INFORMATION.AllocationBase将会是0,这点要特别注意,最好使用
if(mbi.State==MEM_FREE)
{
 mbi.AllocationBase=mbi.BaseAddress;
}
来进行改变。
我们还可以通过mbi.AllocationBase是否等于mbi.BaseAddress来判断当前查询的地址是否在这个Region中的第一个Block中。

4. Tips from Image Walker dll:
因为一个Module的Handle其实就是这个模块的首地址,所以我们可以通过将一个模块的首地址强转成HINSTANCE类型然后传递给GetModuleFileName来获取此模块所对应的文件路径。
若传入的地址并不是一个模块的首地址,这个函数并不会失败,而只是返回的植为0。

转载于:https://www.cnblogs.com/jeffreytan/archive/2005/02/19/105931.html

Some tips from Inject Lib sample application相关推荐

  1. Building Seam 2.0 Application with NetBeans 6.1

    Building Seam 2.0 Application with NetBeans 6.1 转载请保留作者信息: Author: 88250 Blog: http:/blog.csdn.net/D ...

  2. Externalizing Session State for a Spring Boot Application Using Spring-Session

    为什么80%的码农都做不了架构师?>>>    Spring-session is a very cool new project that aims to provide a si ...

  3. ASP.NET Core:CMD命令行+记事本 创建Console程序和Web Application

    今天看了Scott关于ASP.NET Core的介绍视频,发现用命令行一步一步新建项目.添加Package.Restore.Build.Run 执行的实现方式,更让容易让我们了解.NET Core的运 ...

  4. Z-Stack Home Developer's Guide—3. The Home Automation Profile and the Sample Applications中文翻译

    下面是Z-Stack Home 1.2.0开发资料中的Z-Stack Home Developer's Guide-3. The Home Automation Profile and the Sam ...

  5. Z-Stack Home Developer's Guide—4.Using the sample applications as base for new applications 中文翻译

    本章节是官方提供的文档说明 如何将样例程序改为我们自己需要开发的程序,下面是中文翻译 4.使用样例程序为基础开发一个新的应用程序 HA样例程序旨在用作用户开的应用程序的基础,修改他们需要遵循如下步骤: ...

  6. 如何运行android sdk sample中的单元测试

    引用于:http://www.51testing.com/?17144/viewspace-197415.html (转自http://www.williamhua.com/2009/05/07/us ...

  7. 为WebSphere Application Server开发企业OSGi应用程序

    与软件开发相关的绝大多数成本与新应用程序的初始设计,开发和测试无关-尽管这些成本可能很高-但与此后应用程序的维护和发展无关. 通过仅通过定义明确的接口访问的一致,版本化,可重用的模块设计和构建应用程序 ...

  8. Exploring Heap-Based Buffer Overflows with the Application Verifier

    转自:http://blogs.cisco.com/security/exploring_heap-based_buffer_overflows_with_the_application_verifi ...

  9. Sending e-mail with Spring MVC--转载

    原文地址:http://www.codejava.net/frameworks/spring/sending-e-mail-with-spring-mvc Table of contents: 1.S ...

  10. MFC90条技巧-带目录

    1."属性页的添加: 2."List Control中标题栏(Column)的添加: 3."ToolBar和StatusBar中控件的添加: 4."通过Cont ...

最新文章

  1. 【译】缓存最佳实践 max-age的陷阱
  2. FireDac 的数据库批量语句提交(高效)
  3. Opengl-模型(告别箱子加载模型)
  4. [JSOI2008]火星人
  5. 广播变量kyro_Spark简介
  6. 2022年4月8日体检
  7. 统信uos系统考试题_148款!富士通及旗下晟拓品牌系列打印机适配统信UOS
  8. codeforce 606A - Magic Spheres
  9. 【PAT - 甲级1009】Product of Polynomials (25分)(模拟,细节)
  10. 第五章 基元类型,引用类型和值类型
  11. centos 6.3最小化安装,无法上网解决方法
  12. [Docker] 03 AUFS
  13. 对于Keli-μVision,Error:Could not load file“*.axf” Debugger aborted!解决方案
  14. 数据治理:数据血缘关系分析
  15. 微信小程序开发入门教程 含视频 有源码
  16. python 白噪声函数_干货 | 20个教程,掌握时间序列的特征分析(附代码)
  17. 打印机软件未通过电脑测试,打印机测试错误 原因administrator解决办法
  18. 关于LCR表和万用表测电容容值不一样的怪事
  19. AD软件解决 Unknown Pin 和Failed to add class member 问题
  20. MATLAB图像处理_YUV格式详解

热门文章

  1. 如何从Windows中访问Linux硬盘,干货:如何从 Windows 系统访问 Linux 文件
  2. go-mysql数据-查询--输入数据--实战2
  3. Canonical发布信息图:Ubuntu Linux连接一切
  4. 在CNN网络中roi从原图映射到feature map中的计算方法
  5. javascript内置属性
  6. python笔记2-冒泡排序
  7. 精华阅读第 13 期 |常见的八种导致 APP 内存泄漏的问题
  8. C#:数据库操作(待补充)
  9. 设备管理(最近考试有考到,就转一下)
  10. 图的更多相关算法-2(最小生成树)