[9348] ttina:开始获取111 3fd30000,000000013FD30000
看吧 是dbg调试出来的信息,前面是用%11x调试出来的 后面是%p,为何会这样?有没有人懂得教一下,谢谢。
这个问题涉及到模块地址的差异和显示方式的问题。 模块地址是一个指针,通常用于表示动态链接库(DLL)或可执行文件(EXE)在内存中的起始位置。在32位系统中,地址可以是32位的十六进制数;在64位系统中,地址可以是64位的十六进制数。
Windows使用LoadLibraryA函数加载动态链接库时,返回的是模块的基址,即模块在内存中的起始地址。这个地址是以32位或64位的十六进制数形式表示的。
如果你在调试器(如CE)中看到的地址和LoadLibraryA函数返回的地址不一样,这可能是因为显示方式的差异导致的。调试器通常会对地址进行格式化和显示,可能会影响显示的位数。
对于第一个例子中的3FFE0000变成13FFE0000,少了一个1的情况,这可能是因为调试器在显示时错误地处理了这个地址。你可以尝试使用其他调试器来验证,或者尝试使用其他方法来获取模块地址。
对于第二个例子中的FEE70000变成7EEFEE70000,少了三位数的情况,这是因为64位系统的地址是64位的,但传统的32位调试器无法完整地显示这个64位地址。你可以尝试使用64位的调试器来查看完整的地址。
总的来说,LoadLibraryA函数返回的地址是正确的,但在显示时可能受到调试器或其他工具的限制。建议使用合适的工具进行验证和处理。
如果你需要获取模块的完整地址,可以使用其他方法来获取,如远程线程注入、运行时内存扫描等。具体实现方式取决于你的需求和环境。
16进制的8位就是32位了。再多就是64bit系统