为了让Uranus能注入到x86和x64进程中,Uranus必须知道x86和x64平台中loadlibrary函数的地址。
我们将Uranus设定为32位,则x86平台的loadLibrary地址可以简单的获得。
下一步,检测操作系统平台是x86还是x64(方法下面提到),若为x64,则启动一个新的x64进程,在新的进程中取得loadlibrary的位置,并将其传送到Uranus中。
然后,就分别为x86和x64的进程进行注入即可。注意注入的dll也需要相同平台。
如何得知一个进程是x86还是x64呢,我们可以利用API isWow64Process()。当32位进程在x64的WIndows上运行时,它会在Wow64这个兼容平台上运行,此时isWow64Process返回True。其他情况返回false。所以,若之前已经判定操作系统为x64,用此API可以判定进程是否是64位。而若操作系统是32位,则所有进程必然是32位的。
利用isWow64Process也可以判定操作系统是否为64位。因为Uranus是已知32位的。细节不赘述了。