输入法注入:把DLL伪装成输入法DLL,并添加到语言栏.在被激活的窗口内切换输入法到伪装的输入法时将DLL注入当前窗口。IME是什么? IME是在Windows平台上使用的标准的输入法接口规范。它实质是一个DLL,Windows为这个DLL定义一系列的接口,不同的接口实现指定的功能。
它没有自己的进程,它可以在游戏中打开,输入法注入原理是利用Windows系统中在切换输入法需要输入字符时,系统就会把这个输入法需要的ime文件装载到当前进程中,而由于这个Ime文件本质上只是个存放在C:\WINDOWS\system32目录下的特殊的DLL文件,因此我们可以利用这个特性,在Ime文件中使用LoadLibrary()函数待注入的DLL文件。
输入法注入步骤顺序
1、将输入法文件复制到C:\Windows\System32\目录下
2、安装输入法( ImmInstallIME)
3、向输入法注入DLL(IMESetPubString)
4、激活目标进程输入法(PostMessageA)
5、卸载输入法(UnloadKeyboardLayout)
输入法用到的API
安装输入法( ImmInstallIME)
函数的两个参数分别为输入法IME文件的文件名和在控制面板的是输入法选项中显示的输入法名称。函数调用后将返回一个被安装输入法的输入法标识符(或称做输入法句柄)。
.版本 2 .DLL命令 ImmInstallIME, 整数型, "imm32.dll", "ImmInstallIMEA", , 该函数的两个参数分别为输入法IME文件的文件名和在控制面板的是输入法选项中显示的输入法名称。函数调用后将返回一个被安装输入法的输入法标识符(或称做输入法句柄)。 .参数 lpszIMEFileName, 文本型, , 输入法的安装目录 .参数 lpszLayoutText, 文本型, , 输入法的名称
向输入法注入DLL(IMESetPubString)
.版本 2 .DLL命令 IMESetPubString, 整数型, "EIme.dll", "IMESetPubString", , 此函数为输入法文件下的库命令名。 .参数 dll文件名, 文本型, , 欲注入DLL的文件名(全路径) .参数 是否卸载, 整数型, , 输入法退出时是否同时卸载注入的DLL 0代表是 1代表否 .参数 是否切换, 整数型, , 当切换到目标输入法时自动切换到下一个输入法 0代表否 1代表是 .参数 参数一, 整数型, , 0 .参数 参数二, 整数型, , 0 .参数 参数三, 整数型, , 0
卸载输入法(UnloadKeyboardLayout)
.版本 2 .DLL命令 UnloadKeyboardLayout, 逻辑型, "user32.dll", "UnloadKeyboardLayout", , 该函数移去一个键盘布局。 .参数 hkl, int, , 将被卸载的键盘布局句柄。
输入法注入缺点
1、杀毒拦截厉害
2、最大的缺点就是无法调试注入的DLL。
3、失败率高
4、得有一个合适的输入法程序