易语言hook自身保护 易语言,写的32位DLL能注入64位进程吗?
易语言,写的32位DLL能注入64位进程吗?
位的进程或同为64位的进程可以假定彼此进程内的LoadLibrary函数的地址是相同的。
并且CreateRemoteThread的线程过程函数和LoadLibrary的参数个数相同,且参数都是指针,因此通常都是直接将LoadLibrary作为CreateRemoteThread的过程函数。然后使用VirtualAllocEx在目标进程中分配内存,使用WriteProcessMemory往这块内存中写入DLL文件路径,将这块内存的地址作为线程过程函数(LoadLibrary)的参数。在64位的Windows操作系统上32位进程中的LoadLibrary函数地址与64位进程的函数地址不同,因此如果想对64位进程注入DLL,简单的做法就是使用64位进程来执行注入工作。但是如果能让32位进程注入DLL到64位进程显然更好。为什么好多软件都区分32位和64位,到底有什么区别?
在回答这个问题前,有必要对中央处理器CPU的相关知识普及一下,很多人嘴上常讲16位,32位,64位速度如何如何,但概念上很模糊。在此厘清一下。
1,常说的计算机是多少位的,到底指的什么?
一般讲计算机是8/16/32/64位,是指的数据位,而不是地址位。大多数人理解为地址位,如32位,马上就会说寻址空间为4GB。这是不严肃的。照此理论,16位机只有2^16=64K寻址空间吗?事实上,即使最早的16位机,也有20根地址线,寻址1MB。
2,处理器CPU与数据位有什么关系?
一般处理器多少位是指通用寄存器的长度,与数据线位数相同。
再次强调,地址线则不需要与之相等。
好比 intel 64 位处理器则是 40 位地址总线,最大支持 1TB 的内存寻址。
32位宏汇编, 32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。所以,32和64表示CPU一次性可以读/写的最大位数,在主频率等外部条件一样的情况下,理论上64位的执行速度是32位的两倍。
3,寻址能力决定可支持的最大内存。32位的CPU只能寻址最大4GB的内存,这是因为其地址线也正好是32位。有的厂家做成40位地址线,可支持1TB内存。
4,操作系统向下兼容。即64的CPU可安装32位的操作系统win10 for32。当然,对CPU来说,是一种浪费,有一半的性能未发挥出来。
5,在win10 for 64系统上开发的app,都是64位的吗?非也。它还与集成开发及编绎环境IDE有直接关系。现在大部分app都是32位的,64位app很少。原因是软件开发滞后。
易语言hook自身保护 易语言 hook 易语言hook注入
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。