飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 8943|回复: 22

[原创] 使用 Baymax 工具固定函数的返回值

[复制链接]
  • TA的每日心情
    开心
    2016-11-3 14:57
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-5-18 01:19:59 | 显示全部楼层 |阅读模式
    本帖最后由 PYG官方论坛 于 2019-5-18 01:30 编辑

    首先说一下这个程序的验证模式,在N多个线程中,N多个模块中去调用某DLL的函数来进行验证,若函数返回值不为0,则认为验证失败!

    如果设置INT3断点,由于太多线程同时验证,将导致设置修改函数返回值失败(该方案不适合修改多线程频繁调用的函数返回值,在baymax的实现里,INT3断点是全局性的,多线程会打架,硬件断点是针对线程的,如果每个线程都给与设置,则所以不会有问题)。

    于是,我想了一个新方案,可以搞定这个函数返回,但是这个方案可以只针对某个系统:

    1. 首先HOOK你要返回的函数(这样就可以保证所有线程都被设置上硬件断点),
    1.png

    02. 然后再函数+5的位置设置断点,(因为HOOK后会执行到+5的地址)
    2.png

    03. 修改函数返回值,其中堆栈返回值偏移+4。(栈返回偏移需根据上方指令是否对堆栈进行调整来判定)
    3.png


    这样就解决不需要去寻找各个模块,各个线程都需要调用的API来间接对所有验证线程设置硬件断点,同事也无需关注各验证点返回地址在哪里,因为每个线程都可以设置4个硬件断点,绝对够用。
    因为baymax现在还没有提供一个真正的HOOK函数来修改参数或返回值的功能,只是利用断点模拟了改功能,所以以上方案再真正HOOK功能出现之前,算是一种折中替代方案。


    评分

    参与人数 7威望 +8 飘云币 +9 收起 理由
    wjzzhtgp + 1 + 1 校长V5!
    破匣求禅 + 1 + 1 请问校长 为啥我没有找到winvevrfytrus这个.
    speedboy + 1 + 1 吃水不忘打井人,给个评分懂感恩!
    HiPP + 1 + 2 感谢发布原创作品,PYG有你更精彩!
    666888tzq + 1 + 1 厉害了,校长。
    cxqdly + 2 + 2 原创精品 感谢分享!
    不破不立 + 1 + 1

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-11-3 14:57
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-5-18 01:29:29 | 显示全部楼层
    本帖最后由 PYG官方论坛 于 2019-5-18 01:32 编辑

    再提供一个hook方案,验证模块签名的时候用的是遍历文件,调用了FindFirstFileA,HOOK这个API然后设置硬件断点修改返回值就OK了。
    5.png
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2020-10-10 21:51
  • 签到天数: 108 天

    [LV.6]常住居民II

    发表于 2019-5-18 07:18:30 | 显示全部楼层
    02. 然后再函数+5的位置设置断点,(因为HOOK后会执行到+5的地址) //这里没看懂,为什么hook会执行到+5的地址?
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-3 14:57
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-5-18 09:33:13 来自手机 | 显示全部楼层
    hook 会把前5个字节修改为jmp xxxx 在hook中对该线程设置硬断 所以要在hook地址之后设置硬断就会生效 这里补丁后OD附加一下就明白了
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    半小时前
  • 签到天数: 2199 天

    [LV.Master]伴坛终老

    发表于 2019-5-18 09:34:41 | 显示全部楼层
    本帖最后由 不破不立 于 2019-5-18 09:43 编辑

    收藏,学习了,  HOOK你要返回的函数(这样就可以保证所有线程都被设置上硬件断点),很骚的方法
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-5-4 11:10
  • 签到天数: 23 天

    [LV.4]偶尔看看III

    发表于 2019-5-18 23:23:34 | 显示全部楼层
    收藏,学习了
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2023-11-26 00:05
  • 签到天数: 607 天

    [LV.9]以坛为家II

    发表于 2019-5-19 08:54:49 | 显示全部楼层
    感谢校长的帮助,已经收藏学习了,成功搞定那个软件了
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-3-24 23:08
  • 签到天数: 469 天

    [LV.9]以坛为家II

    发表于 2019-5-19 09:20:08 | 显示全部楼层
    学习学习,感谢
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 09:21
  • 签到天数: 2162 天

    [LV.Master]伴坛终老

    发表于 2019-5-19 17:16:40 | 显示全部楼层

    请问楼主会HOOK 64位系统的DLL吗
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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