• DLL注入技术(输入法注入)


    输入法注入原理

    IME输入法实际就是一个dll文件(后缀为ime),此dll文件需要导出必要的接口供系统加载输入法时调用。我们可以在此ime文件的DllMain函数的入口通过调用LoadLibrary函数来加载需要注入的dll。

    输入法注入实现

    ime文件需要导出必要的接口函数。

    ImeConversionList           //将字符串/字符转换成目标字符串/字符 
    ImeConfigure                //设置ime参数  
    ImeDestroy                  //退出当前使用的IME  
    ImeEscape                   //应用软件访问输入法的接口函数  
    ImeInquire                  //启动并初始化当前ime输入法  
    ImeProcessKey               //ime输入键盘事件管理函数  
    ImeSelect                   //启动当前的ime输入法  
    ImeSetActiveContext         //设置当前的输入处于活动状态  
    ImeSetCompositionString     //由应用程序设置输入法编码  
    ImeToAsciiEx                //将输入的键盘事件转换为汉字编码事件  
    NotifyIME                   //ime事件管理函数  
    ImeRegisterWord             //向输入法字典注册字符串  
    ImeUnregisterWord           //删除被注册的字符串  
    ImeGetRegisterWordStyle  
    ImeEnumRegisterWord  
    

    其中最重要的就是ImeInquire函数,当切换到此ime输入法时此函数就会被调用启动并初始化此ime输入法。
    参数lpIMEInfo用于输入对Ime输入法初始化的内容结构,参数lpszUIClass为输入法的窗口类。lpszUIClass对应的窗口类必须已注册,我们应该在ime的DllMain入口处注册此窗口类。

    BOOL WINAPI ImeInquire(LPIMEINFO lpIMEInfo,LPTSTR lpszUIClass,LPCTSTR lpszOption)
    

    我们通过调用ImmInstallIME来加载输入法,函数的两个参数分别为输入法IME文件的文件名和在控制面板的是输入法选项中显示的输入法名称。

    HKL ImmInstallIME(LPCTSTR lpszIMEFileName, LPCTSTR lpszLayoutText);
    

    当我们调用ImmInstallIME函数后只是将此ime输入法加载了而已,但是当进程没有切换到此输入法前,其DllMain函数都不会被调用输入法未被激活。我们可以通过手动切换,也可以通过向应用程序发送WM_INPUTLANGCHANGEREQUEST消息来切换。

    其次我们可以调用SystemParametersinfo将此IME输入法设为默认输入法,这样新进程创建时就会默认使用并激活此输入法。

    BOOL SystemParametersInfo(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinlni)
    

    当uiAction的值为SPI_SETDEFAULTINPUTLANG,其会将pvParam指向的输入法作为默认输入法。
    这样每次有进程创建就会默认将此ime文件加载并调用入口点函数,从而进一步在入口点注入我们的dll。

    参考:https://blog.csdn.net/swanabin/article/details/21473045

  • 相关阅读:
    HDU 1058 Humble Numbers
    HDU 1421 搬寝室
    HDU 1176 免费馅饼
    七种排序算法的实现和总结
    算法纲要
    UVa401 回文词
    UVa 10361 Automatic Poetry
    UVa 537 Artificial Intelligence?
    UVa 409 Excuses, Excuses!
    UVa 10878 Decode the tape
  • 原文地址:https://www.cnblogs.com/revercc/p/14683828.html
Copyright © 2020-2023  润新知