相关文章  
  • 部署Windows XP SP2后出现问题怎么办
  • 超一流软硬件资料检测大师AIDA32
  • 创建检测和更新Framework 的MSI软件包
  • 使用新的代码和标记模型创建真实的应用程序
  • 如何优化 Tablet PC 的功能应用程序
  • 为 Windows XP Embedded 创建自定义组件
  • 企业用户应当如何利用Windows XP SP2
  • 将现存的信息系统移植到组件化架构
  • 应用程序互操作性:互用性基本原理
  • SP2升级了哪些Windows XP支持工具
  •   推荐  
      科普之友首页   专利     科普      动物      植物        天文   考古   前沿科技
     您现在的位置在:  首页 >>文献 >>培训

    动态汉化Windows技术的一些简要分析7


      四、"陷阱"技术
      讨论"陷阱"技术,还要回到前面的两个发现。发现之二,已能解释为修改的Windows函数,而发现之一却仍是一个迷。
      
      数据段存放的是变量及常量等内容,如果这里面包含有重定位信息,那么,必定要在变量说明中将函数指针赋给一个FARPROC类型的变量,于是,在变量说明中写下:
      
      FARPROC FarProcFunc=ExtTextOut;
      
      果然,在自己程序的数据段中也有了重定位信息。这样,当程序调入内存时,变量FarPro cFunc已是函数ExtTextOut的地址了。
      
      要直接修改代码段的内容,还遇到一个难题,就是代码段是不可改写的。这时,需要用到一个未公开的Windows函数AllocCStoDSAlias,取得与代码段有相同基址的可写数据段别名, 其函数声明为:
      
      WORD FAR PASCAL AllocCStoDSAlias(WORD code_sel);
      
      参数是代码段的句柄,返回值是可写数据段别名句柄。
      
      Windows中函数地址是32位,高字节是其模块的内存句柄,低字节是函数在模块内的偏移。将得到的可写数据段别名句柄锁定,再将函数偏移处的5个字节保留下来,然后将其改为转向替代函数(用 EA Jmp):
      
      *(lpStr+wOffset) =0xEA;
      
      四通利方(RichWin)、中文之星(CStar)是大家广为熟知的汉化Windows产品,"陷阱"技术即动态修改Windows代码,一直是其对外宣称的过人技术。本文从Windows的模块调用机制与重定位概念着手,介绍了"陷阱"技术的实现,并给出了采用"陷阱"技术

    页码:[1] [2] [3] [4] [5] [6] [7] [8]7页、共8页

         

          设为首页       |       加入收藏       |       广告服务       |       友情链接       |       版权申明      

    Copyriht 2007 - 2008 ©  科普之友 All right reserved