飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 16965|回复: 13

[原创] Baymax大白补丁快速入门(上篇)某菜鸟的成长经历

[复制链接]
  • TA的每日心情
    无聊
    2024-12-4 16:27
  • 签到天数: 644 天

    [LV.9]以坛为家II

    发表于 2020-3-7 14:33:32 | 显示全部楼层 |阅读模式

    Baymax大白补丁快速入门(上卷)
    故事从拖入文件后说起,难点在“异常中断补丁”菜单中,点【添加补丁】
    出现下面的窗口
    我们先从圈8,反调试说起,这个工具确实强大到不行不行。
    你有两种添加定位到修改的VA地址的方法:
    1种是直接输入+内存基址
    1种是通过特征码(机器码的形式输入)
    之后伟大的Nisy校长,又写了EXE版本的特征码学习工具和Ollydbg/x32dbg/x64dbg特征码转换工具
    可谓是相当的便利!
    =====================================================================
    添加反调试检测,这个还是比较简单的。
    找一个地址使用就行了。
    这个程序中用不着使用,关于 添加反调试检测 我们就说到这里吧
    -------------------------------------------------------------------------------------------------------------
    接下来,我们找个地址进行第一个简单的任务:弹框训练 ,地址选择00408818好了
    如果多行就要加\r\n(最多三行哟)
    点添加,点保存。
    回到主界面中,选择 圈9号  或 圈10号 都行。强烈建议选择圈9,创建劫持调试补丁(因为在调试过程中,不仅有log日志文件输出,程序还会转化成第二种模式,可谓相当的人性化设计)
    生成EXE并补丁后,再生成dll后,再运行主程序后,就会像上图这个样子。
    我们发现编辑框里啥也没有?是的,因为那个地方主要是放入注册码用的。
    -----------------------------------------------------------------------
    接下来,我们的任务是弹出00408824       |.  6>PUSH MageBros.00457570    ;Software\SaitoGames\MageBros这个地方的注册表键值
    我们先来猜一猜,这次会不会成功呢?
    测试后发现还是上图中的那个弹框,并没有成功,这是为什么呢?
    因为00408824     PUSH 00457570是一个压栈的语句
    当F8执行后值才能传入其中!
    所以正确的伏击地点应该是:00408829
    00408829       |.  E>CALL MageBros.0042AB00             ;  对,就是这里!这里我们在堆栈窗口中才能真正意义的得到
    光添加完了,别忘记,你还要再展示给观众才行的。这里只是添加,并没有得到哟~~
    我们发现这次我们成功了。
    为啥要加【】呢?
    大家可以参考下校长语录和温馨提示。呵呵,菜鸟最笨的方法就是多试了。不明白就用实践来检验真理。见多识广,吃得多了,用得多了,一样可以进步的
    关键得坚持,不能气馁。
    ==================================================
    接下来,我们继续弹框练习。。。
    刚才我们弹出了一个Software\SaitoGames\MageBros
    如果它是带有连接符号的注册码呢?
    所以练习3:在这个后面加上★▲◆字样
    这样我们又学会了连接字符在内存注册机中的使用
    ===================================================
    我们添加 内存 添加寄存器数值
    这次我们成功得到了EAX的数值
    还可以得到里边的其他数值,比如截图的这些哟 ~~
    改变这两项就可以了哟~~

    多多弹框,多多测试,好处多多。
    ========================================
    在【内存注册机】下拉菜单中,我们还有一项【使用存储数据】没有演示其功能
    接下来我们就来说 这个!
    这个东东要怎么用呢?
    这又得从【存储当前数据】说起了。
    校长Nisy对于内存注册机的设计理念是:①存 ②读 ③展
    我们可以利用弹框做许多其他的事情,比如遍历控件,遍历注册表键值,搞个弹窗炸弹~~
    这种效果也是意外测试出来的,实际想想就跟你在用OD调试到某个循环的汇编命令一样的
    只不过,大白补丁扮演了夹三儿(注入和劫持)这样的强大功能。
    明白了原理,我们就可以继续测试和学习了。
    ============================================================
    接下来,我们00458574这个存真码的地方设个硬件访问断点
    然后我们就来到了另一个地方,这个地方在一个循环中!
    这个地方有一个特点,如果你用的是硬件访问断点,那么一次就断到了,并且第一次的数值就是我们要得到的真码!
    这次我们要练习的是条件断点+注册机+弹真码!
    我们说干就干,试验开始。
    经过试验,这样是不行的。因为该地址会被反复的读取到。
    所以还得来个条件。而且上面的次数并不适用。
    所以用004062B2的时候,我们用eax 或edi 都是可以的,同时我们发现eax=458574 ,edi=458574
    也就是说
    B1:内存注册机>添加寄存器指向内存
    1-1)可设上硬件断点,或选择智能都行,建议选择上硬件断点!
    1-2)取edi寄存器指向的内存地址的数据(因为是寄存器窗口中看到的,所以不加中括号,即[edi]
    1-3)条件断点为:edi=00458574 (edi即dword)
    B2:内存注册机>弹窗展示记录信息
    2-1)可设上硬件断点,或选择智能都行,建议选择上硬件断点!
    2-2)同1-3

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    这是一种条件设置方法,还有另外的那种我们也可以试一下。
    我们再一次得胜了。
    到这里我们已经学会了【内存注册机】下拉菜单中的1235、神奇的条件断点、添加反调试检测。

    接下来,我们学习修改寄存器标志位在大白补丁中是如何使用的:
    我们运行程序,来到注册的地方!
    接下来,我们就对这个JE下手。
    为了让每次都能弹框,所以上面的1次,得改成【每次】截图失误了,抱歉!寄存器值我们取反就行(OD中z=1,你就输入0,反之也个道理)
    =================================================================================
    接着,我们再来说一下【存储当前数据】->保存寄存器/保存寄存器指向内存
    它分为两种情况:保存寄存器 就是说,你打算要寄存器里边的byte ? word ? dword? qword?(x64dbg中使用)
    它们对应 1  2   4   8 字节,跟咱们用bph xxxxxxxx, r, 2(x32dbg/x64dbg中的硬件断点一个道理,很容易理解了吧?
    这校长Nisy的黑科技还是相当给力的。
    也就是说,可以得到这个里边的东东~~
    是不是弹出了Thank you很高兴呢?然而这个地方是不行的。为什么呢?
    0042AE5C   CALL MageBros.0042A9F0        ;  显然这里的返回值,决定下面cmp和下面的je跳转(所以必F7一探究竟
    0042AE61   MOV EAX,DWORD PTR DS:[0x46ABE>;  这句是赋值
    0042AE66   CMP DWORD PTR DS:[EAX+0x28],0>;  这句是比较
    0042AE6A   JE SHORT MageBros.0042AE7F    ;  NOP
    0042AE6C   PUSH 0x40                     ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
    0042AE6E   PUSH MageBros.004575A4        ; |Mage Bros.
    0042AE73   PUSH MageBros.004585A8        ; |Thank you改成  PUSH 0x458574
    0042AE78   PUSH ESI                      ; |hOwner
    0042AE79   CALL DWORD PTR DS:[<&USER32.M>; \MessageBoxA

    我们看上面的代码,就会发现,起决定的作用的在0042A9F0里,所以F7之后,我们看到了下面的代码!
    0042A9F0  /$  6A FF                   PUSH -0x1
    0042A9F2  |.  68 4A5F4500             PUSH MageBros.00455F4A
    0042A9F7  |.  64:A1 00000000          MOV EAX,DWORD PTR FS:[0]
    0042A9FD  |.  50                      PUSH EAX
    0042A9FE  |.  83EC 1C                 SUB ESP,0x1C
    0042AA01  |.  53                      PUSH EBX
    0042AA02  |.  A1 508F4600             MOV EAX,DWORD PTR DS:[0x468F50]
    0042AA07  |.  33C4                    XOR EAX,ESP
    0042AA09  |.  50                      PUSH EAX
    0042AA0A  |.  8D4424 24               LEA EAX,DWORD PTR SS:[ESP+0x24]
    0042AA0E  |.  64:A3 00000000          MOV DWORD PTR FS:[0],EAX
    0042AA14  |.  C74424 08 00000000      MOV DWORD PTR SS:[ESP+0x8],0x0
    0042AA1C  |.  A1 ECAB4600             MOV EAX,DWORD PTR DS:[0x46ABEC]
    0042AA21  |.  85C0                    TEST EAX,EAX
    0042AA23  |.  0F84 C3000000           JE MageBros.0042AAEC
    0042AA29  |.  50                      PUSH EAX
    0042AA2A  |.  8D4C24 10               LEA ECX,DWORD PTR SS:[ESP+0x10]
    0042AA2E  |.  E8 5DB8FDFF             CALL MageBros.00406290
    0042AA33  |.  68 74854500             PUSH MageBros.00458574                ;  MB-3186-2945
    0042AA38  |.  8D4C24 20               LEA ECX,DWORD PTR SS:[ESP+0x20]
    0042AA3C  |.  C74424 30 00000000      MOV DWORD PTR SS:[ESP+0x30],0x0
    0042AA44  |.  E8 47B8FDFF             CALL MageBros.00406290
    0042AA49  |.  8D4424 1C               LEA EAX,DWORD PTR SS:[ESP+0x1C]
    0042AA4D  |.  BB 01000000             MOV EBX,0x1
    0042AA52  |.  50                      PUSH EAX
    0042AA53  |.  8D4C24 10               LEA ECX,DWORD PTR SS:[ESP+0x10]
    0042AA57  |.  C64424 30 01            MOV BYTE PTR SS:[ESP+0x30],0x1
    0042AA5C  |.  895C24 0C               MOV DWORD PTR SS:[ESP+0xC],EBX
    0042AA60  |.  E8 FBBAFDFF             CALL MageBros.00406560
    0042AA65  |.  85C0                    TEST EAX,EAX
    0042AA67  |.  75 31                   JNZ SHORT MageBros.0042AA9A
    0042AA69  |.  68 68854500             PUSH MageBros.00458568                ;  MB31862945
    0042AA6E  |.  8D4C24 18               LEA ECX,DWORD PTR SS:[ESP+0x18]
    0042AA72  |.  E8 19B8FDFF             CALL MageBros.00406290
    0042AA77  |.  8D4C24 14               LEA ECX,DWORD PTR SS:[ESP+0x14]
    0042AA7B  |.  51                      PUSH ECX
    0042AA7C  |.  BB 03000000             MOV EBX,0x3
    0042AA81  |.  8D4C24 10               LEA ECX,DWORD PTR SS:[ESP+0x10]
    0042AA85  |.  C74424 30 02000000      MOV DWORD PTR SS:[ESP+0x30],0x2
    0042AA8D  |.  895C24 0C               MOV DWORD PTR SS:[ESP+0xC],EBX
    0042AA91  |.  E8 CABAFDFF             CALL MageBros.00406560
    0042AA96  |.  85C0                    TEST EAX,EAX
    0042AA98      74 05                   JE SHORT MageBros.0042AA9F            ;  正确的地方是这里!NOP
    0042AA9A  |>  B8 01000000             MOV EAX,0x1
    0042AA9F  |>  F6C3 02                 TEST BL,0x2
    0042AAA2  |.  8B15 ECAB4600           MOV EDX,DWORD PTR DS:[0x46ABEC]
    0042AAA8  |.  8942 28                 MOV DWORD PTR DS:[EDX+0x28],EAX
    0042AAAB  |.  C74424 2C 01000000      MOV DWORD PTR SS:[ESP+0x2C],0x1
    0042AAB3  |.  74 10                   JE SHORT MageBros.0042AAC5
    0042AAB5  |.  83E3 FD                 AND EBX,0xFFFFFFFD
    0042AAB8  |.  8D4C24 14               LEA ECX,DWORD PTR SS:[ESP+0x14]
    0042AABC  |.  895C24 08               MOV DWORD PTR SS:[ESP+0x8],EBX
    0042AAC0  |.  E8 FBB9FDFF             CALL MageBros.004064C0
    0042AAC5  |>  F6C3 01                 TEST BL,0x1
    0042AAC8  |.  C74424 2C 00000000      MOV DWORD PTR SS:[ESP+0x2C],0x0
    0042AAD0      74 09                   JE SHORT MageBros.0042AADB
    0042AAD2  |.  8D4C24 1C               LEA ECX,DWORD PTR SS:[ESP+0x1C]
    0042AAD6  |.  E8 E5B9FDFF             CALL MageBros.004064C0
    0042AADB  |>  8D4C24 0C               LEA ECX,DWORD PTR SS:[ESP+0xC]
    0042AADF  |.  C74424 2C FFFFFFFF      MOV DWORD PTR SS:[ESP+0x2C],-0x1
    0042AAE7  |.  E8 D4B9FDFF             CALL MageBros.004064C0
    0042AAEC  |>  8B4C24 24               MOV ECX,DWORD PTR SS:[ESP+0x24]
    0042AAF0  |.  64:890D 00000000        MOV DWORD PTR FS:[0],ECX
    0042AAF7  |.  59                      POP ECX
    0042AAF8  |.  5B                      POP EBX
    0042AAF9  |.  83C4 28                 ADD ESP,0x28
    0042AAFC  \.  C3                      RETN
    我们这次用0042AA98再来尝试下上述操作。
    z依旧填0
    这次成功了吧? 未注册标志去除了吧?我们得到了第二次练手的机会了。
    ==================================================================================
    接着我们再尝试下【修改EIP(NOP)】
    依旧是这里!补丁过后,我们依旧变成了注册版。
    我们再来看下帮助中是怎么说的?  原来它的原理是这样的啊 ~~  也就是说,那个地方并非只能填写一个NOP,还有个【偏移量数值这么一说】
    So,那我们【0042AA9A-0042AA98=2】行不行呢?
    保存过后,补丁 ~~~ 我们又胜利了 ~~
    果然可以啊 ~~~~ 兴奋吧 ~~~  幸福吧 ~~~  Nisy万岁 ~~~
    我们又学会了两招 ,不错吧 ~~
    不仅复习了OD中灵活多样的条件断点 ~~
    我们的条件断点生成器也快重新出炉了 ~~
    这得益于对校长Nisy ’s Baymax Patch Tools的深度拆解和汇编中一些概念的重新认识和补足 ~~
    工具会了,下条件断点会了,编程进一步扩展自己的断点生成器也有了新的想法了 ~~
    真是一举数得啊 ~~

    ===================================================================================

    ==========================================================


    00408EC3        .  6>PUSH 0x30                          ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
    00408EC5        .  6>PUSH MageBros.004575A4             ; |Mage Bros.
    00408ECA        .  6>PUSH MageBros.00457664             ; |MageBros is already running.
    00408ECF        .  6>PUSH 0x0                           ; |hOwner = NULL
    00408ED1        .  F>CALL DWORD PTR DS:[<&USER32.Messag>; \MessageBoxA


    ==================================================
    0042A8C0        .  8>MOV EAX,DWORD PTR SS:[ESP+0x8]
    0042A8C4        .  3>CMP EAX,0x110
    0042A8C9        .  5>PUSH ESI
    0042A8CA        .  0>JNZ MageBros.0042A950
    0042A8D0        .  8>MOV EAX,DWORD PTR SS:[ESP+0x14]
    0042A8D4        .  8>TEST EAX,EAX
    0042A8D6        .  A>MOV DWORD PTR DS:[0x46ABF0],EAX
    0042A8DB        .  0>JE MageBros.0042A9AF
    0042A8E1        .  5>PUSH EBX
    0042A8E2        .  8>MOV EBX,DWORD PTR DS:[<&USER32.Get>;  USER32.GetDlgItem
    0042A8E8        .  5>PUSH EDI
    0042A8E9        .  8>MOV EDI,DWORD PTR SS:[ESP+0x10]
    0042A8ED        .  6>PUSH 0x400                         ; /ControlID = 400 (1024.)
    0042A8F2        .  5>PUSH EDI                           ; |hWnd
    0042A8F3        .  F>CALL EBX                           ; \GetDlgItem
    0042A8F5        .  6>PUSH 0x1                           ; /ControlID = 0x1
    0042A8F7        .  5>PUSH EDI                           ; |hWnd
    0042A8F8        .  8>MOV ESI,EAX                        ; |
    0042A8FA        .  F>CALL EBX                           ; \GetDlgItem
    0042A8FC        .  6>PUSH 0x0                           ; /lParam = 0x0
    0042A8FE        .  6>PUSH 0x1E                          ; |wParam = 0x1E
    0042A900        .  6>PUSH 0xC5                          ; |Message = EM_LIMITTEXT
    0042A905        .  5>PUSH ESI                           ; |hWnd
    0042A906        .  8>MOV EDI,EAX                        ; |
    0042A908        .  F>CALL DWORD PTR DS:[<&USER32.SendMe>; \SendMessageA








    后面还有一个存储,三个寄存器修改,一个HOOK还得再好好研究下,才能补足下面的知识点
    那好,就先到这里吧 ~~ 几十张截图够喝一壶的了 ~~  
    毕竟 学了 快两周时间了 ~~
    笔记做了一箩筐 ~~ 又是思维导图,又是列表,又是笔记 ,又是表格,又是电脑,又是本本,收益很多啊 ~~
    最后最后祝校长Nisy姐姐福寿年年 ~~开发出更牛X的工具来 ~~

    评分

    参与人数 3威望 +3 飘云币 +2 收起 理由
    pygcnm + 1 可惜图片都看不了了!因为图片没有文章残了
    飞天 + 1 + 1 赞一个,这个帖子很给力!
    smallhorse + 1 + 1 分享精神,是最值得尊敬的!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2024-12-4 16:27
  • 签到天数: 644 天

    [LV.9]以坛为家II

     楼主| 发表于 2020-3-7 14:35:16 | 显示全部楼层
    沙发,只能是我的。
    试验内容太多了,不能全部贴全,抱歉。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2025-1-14 09:16
  • 签到天数: 2422 天

    [LV.Master]伴坛终老

    发表于 2020-3-7 17:19:58 | 显示全部楼层

    楼主请问有视频吗?
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2024-12-4 16:27
  • 签到天数: 644 天

    [LV.9]以坛为家II

     楼主| 发表于 2020-3-7 17:59:41 | 显示全部楼层
    2020-03-07_175829.gif
    @xie83544109
    这只是学习过程中的一部分而已 。

    点评

    亲!头发不要了?  详情 回复 发表于 2020-3-7 18:44
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-1-12 18:24
  • 签到天数: 1515 天

    [LV.Master]伴坛终老

    发表于 2020-3-7 18:44:16 | 显示全部楼层
    哥又回来了 发表于 2020-3-7 17:59
    @xie83544109
    这只是学习过程中的一部分而已 。

    亲!头发不要了?
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2024-12-4 16:27
  • 签到天数: 644 天

    [LV.9]以坛为家II

     楼主| 发表于 2020-3-7 22:42:08 | 显示全部楼层
    还差返回值 和 HOOK时机 没摸透。其他的已经很熟练了。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-1-14 09:56
  • 签到天数: 1143 天

    [LV.10]以坛为家III

    发表于 2020-3-8 05:57:34 来自手机 | 显示全部楼层
    向表哥学习,总结很详细地址,对于加壳的 hook api的查找方法以及解码时机得给我们讲讲
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-1-13 21:11
  • 签到天数: 1570 天

    [LV.Master]伴坛终老

    发表于 2020-3-8 09:53:17 | 显示全部楼层
    什么时候表哥能出个学习视频好运就更完美了
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-1-14 16:50
  • 签到天数: 1592 天

    [LV.Master]伴坛终老

    发表于 2020-3-8 10:34:36 | 显示全部楼层
    FW大婶牛掰,只能膜拜了。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-11-29 10:27
  • 签到天数: 795 天

    [LV.10]以坛为家III

    发表于 2020-3-9 09:28:59 | 显示全部楼层
    不知道怎么回事,帖子中的图片打不开啊
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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