飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7477|回复: 2

[x64] 关于64位系统劫持syswow64中的dll

[复制链接]

该用户从未签到

发表于 2016-1-2 00:02:04 | 显示全部楼层 |阅读模式
环境是win10 64位,我在注入TX某游戏登陆程序的时候被TP加载的CreateProcess和CreateThread回调拦截了,所以考虑dll劫持注入。拿PCHUNTER看了下登录器是32位的,加载的dll都是SysWOW64的。
然后我拿win10的SysWOW64/rasadhlp.dll用aheadlib生成了一波劫持代码,放到登录器所在目录下没反应(win10),换成xp、win7 32位都劫持成功了。

拿PCH看了一下模块列表发现没有加载我的rasadhlp.dll,而是只加载了SysWOW64/下的rasadhlp.dll
请问这是因为aheadlib生成的代码不兹茨WOW64的缘故吗?讲道理都是32位的dll应该没问题才对。或者说是因为win10的安全策略导致不加载未签名/非系统目录下的dll?
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-11-3 14:57
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-1-28 22:28:39 | 显示全部楼层
    系统有一个DLL默认加载列表,各系统不同。
    各系统同模块的导出表可能不同,需要分区去编译生成。

    点评

    麻烦问下超版, 系统有一个DLL默认加载列表,各系统不同。 虽然各系统不同,但是加载的顺序第一个就是当前目录下的DLL吧。 各系统同模块的导出表可能不同,需要分区去编译生成。 WIN7 64位下sysWOW6  详情 回复 发表于 2017-11-24 12:31
    PYG19周年生日快乐!
  • TA的每日心情

    昨天 12:06
  • 签到天数: 915 天

    [LV.10]以坛为家III

    发表于 2017-11-24 12:31:17 | 显示全部楼层
    PYG官方论坛 发表于 2016-1-28 22:28
    系统有一个DLL默认加载列表,各系统不同。
    各系统同模块的导出表可能不同,需要分区去编译生成。

    麻烦问下超版,
    <1>
    系统有一个DLL默认加载列表,各系统不同。
    虽然各系统不同,但是加载的顺序第一个就是当前目录下的DLL吧。



    <2>
    各系统同模块的导出表可能不同,需要分区去编译生成。

    WIN7 64位下sysWOW64文件夹下的32位的LPK

    #pragma comment(linker, "/EXPORT:LpkTabbedTextOut=_AheadLib_LpkTabbedTextOut,@1")
    #pragma comment(linker, "/EXPORT:LpkDllInitialize=_AheadLib_LpkDllInitialize,@2")
    #pragma comment(linker, "/EXPORT:LpkDrawTextEx=_AheadLib_LpkDrawTextEx,@3")
    #pragma comment(linker, "/EXPORT:LpkEditControl=_AheadLib_LpkEditControl,@4")
    #pragma comment(linker, "/EXPORT:LpkExtTextOut=_AheadLib_LpkExtTextOut,@5")
    #pragma comment(linker, "/EXPORT:LpkGetCharacterPlacement=_AheadLib_LpkGetCharacterPlacement,@6")
    #pragma comment(linker, "/EXPORT:LpkGetTextExtentExPoint=_AheadLib_LpkGetTextExtentExPoint,@7")
    #pragma comment(linker, "/EXPORT:LpkInitialize=_AheadLib_LpkInitialize,@8")
    #pragma comment(linker, "/EXPORT:LpkPSMTextOut=_AheadLib_LpkPSMTextOut,@9")
    #pragma comment(linker, "/EXPORT:LpkUseGDIWidthCache=_AheadLib_LpkUseGDIWidthCache,@10")
    #pragma comment(linker, "/EXPORT:ftsWordBreak=_AheadLib_ftsWordBreak,@11")

    xp下system32下的32位LPK

    #pragma comment(linker, "/EXPORT:LpkInitialize=_AheadLib_LpkInitialize,@1")
    #pragma comment(linker, "/EXPORT:LpkTabbedTextOut=_AheadLib_LpkTabbedTextOut,@2")
    #pragma comment(linker, "/EXPORT:LpkDllInitialize=_AheadLib_LpkDllInitialize,@3")
    #pragma comment(linker, "/EXPORT:LpkDrawTextEx=_AheadLib_LpkDrawTextEx,@4")
    #pragma comment(linker, "/EXPORT:LpkEditControl=_AheadLib_LpkEditControl,@5")
    #pragma comment(linker, "/EXPORT:LpkExtTextOut=_AheadLib_LpkExtTextOut,@6")
    #pragma comment(linker, "/EXPORT:LpkGetCharacterPlacement=_AheadLib_LpkGetCharacterPlacement,@7")
    #pragma comment(linker, "/EXPORT:LpkGetTextExtentExPoint=_AheadLib_LpkGetTextExtentExPoint,@8")
    #pragma comment(linker, "/EXPORT:LpkPSMTextOut=_AheadLib_LpkPSMTextOut,@9")
    #pragma comment(linker, "/EXPORT:LpkUseGDIWidthCache=_AheadLib_LpkUseGDIWidthCache,@10")
    #pragma comment(linker, "/EXPORT:ftsWordBreak=_AheadLib_ftsWordBreak,@11")


    @1,@8序号导出的函数就不一样,


    估计WIN7 64上,sysWOW64文件夹下的msimg32.dll和XP上的msimg32.dll,导出函数也不一样,
    如果对一个32位的程序做补丁劫持,而这个msimg32.dll要在WIN7 64和XP上都能劫持,,

    按您所说,需要生成两份劫持补丁吗?论坛飘老大的劫持补丁神器,在生成msimg32劫持的时候,
    就生成了一份msimg32.dll,这个就能在XP下和WIN7上都能劫持成功,它不可能智能判断是
    WIN7还是XP吧。

    望超版解惑,谢谢。

    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表