Baymax大白补丁快速入门(上篇)某菜鸟的成长经历
Baymax大白补丁快速入门(上卷)https://img2018.cnblogs.com/blog/990686/202003/990686-20200305091730402-385920036.png故事从拖入文件后说起,难点在“异常中断补丁”菜单中,点【添加补丁】出现下面的窗口https://img2018.cnblogs.com/blog/990686/202003/990686-20200305091731052-487002805.pnghttps://img2018.cnblogs.com/blog/990686/202003/990686-20200305091731816-596232109.png我们先从圈8,反调试说起,这个工具确实强大到不行不行。你有两种添加定位到修改的VA地址的方法:1种是直接输入+内存基址1种是通过特征码(机器码的形式输入)之后伟大的Nisy校长,又写了EXE版本的特征码学习工具和Ollydbg/x32dbg/x64dbg特征码转换工具可谓是相当的便利!=====================================================================添加反调试检测,这个还是比较简单的。找一个地址使用就行了。这个程序中用不着使用,关于 添加反调试检测 我们就说到这里吧-------------------------------------------------------------------------------------------------------------https://img2018.cnblogs.com/blog/990686/202003/990686-20200305091732654-674397157.png接下来,我们找个地址进行第一个简单的任务:弹框训练 ,地址选择00408818好了https://img2018.cnblogs.com/blog/990686/202003/990686-20200305091733373-1052294505.png如果多行就要加\r\n(最多三行哟)点添加,点保存。https://img2018.cnblogs.com/blog/990686/202003/990686-20200305091734032-1524601475.png回到主界面中,选择 圈9号或 圈10号 都行。强烈建议选择圈9,创建劫持调试补丁(因为在调试过程中,不仅有log日志文件输出,程序还会转化成第二种模式,可谓相当的人性化设计)https://img2018.cnblogs.com/blog/990686/202003/990686-20200305091734785-214079491.png生成EXE并补丁后,再生成dll后,再运行主程序后,就会像上图这个样子。我们发现编辑框里啥也没有?是的,因为那个地方主要是放入注册码用的。-----------------------------------------------------------------------接下来,我们的任务是弹出00408824 |.6>PUSH MageBros.00457570 ;Software\SaitoGames\MageBros这个地方的注册表键值https://img2018.cnblogs.com/blog/990686/202003/990686-20200305091735491-1656020928.png我们先来猜一猜,这次会不会成功呢?测试后发现还是上图中的那个弹框,并没有成功,这是为什么呢?因为00408824 PUSH 00457570是一个压栈的语句当F8执行后值才能传入其中!所以正确的伏击地点应该是:00408829 00408829 |.E>CALL MageBros.0042AB00 ;对,就是这里!这里我们在堆栈窗口中才能真正意义的得到https://img2018.cnblogs.com/blog/990686/202003/990686-20200305091736259-1451201661.png光添加完了,别忘记,你还要再展示给观众才行的。这里只是添加,并没有得到哟~~https://img2018.cnblogs.com/blog/990686/202003/990686-20200305094408048-1773399098.pnghttps://img2018.cnblogs.com/blog/990686/202003/990686-20200305094408861-1547176193.png我们发现这次我们成功了。为啥要加【】呢?https://img2018.cnblogs.com/blog/990686/202003/990686-20200305094409547-1944386610.png大家可以参考下校长语录和温馨提示。呵呵,菜鸟最笨的方法就是多试了。不明白就用实践来检验真理。见多识广,吃得多了,用得多了,一样可以进步的关键得坚持,不能气馁。==================================================接下来,我们继续弹框练习。。。刚才我们弹出了一个Software\SaitoGames\MageBros如果它是带有连接符号的注册码呢?所以练习3:在这个后面加上★▲◆字样https://img2018.cnblogs.com/blog/990686/202003/990686-20200305094410289-1216198983.pnghttps://img2018.cnblogs.com/blog/990686/202003/990686-20200305094411013-2106211539.pnghttps://img2018.cnblogs.com/blog/990686/202003/990686-20200305094411651-646831488.png这样我们又学会了连接字符在内存注册机中的使用===================================================https://img2018.cnblogs.com/blog/990686/202003/990686-20200305094412510-1351334147.png我们添加 内存 添加寄存器数值https://img2018.cnblogs.com/blog/990686/202003/990686-20200305094413289-1073077134.pnghttps://img2018.cnblogs.com/blog/990686/202003/990686-20200305094413875-153059675.pnghttps://img2018.cnblogs.com/blog/990686/202003/990686-20200305094414358-747084532.png这次我们成功得到了EAX的数值https://img2018.cnblogs.com/blog/990686/202003/990686-20200305094414903-36364806.png还可以得到里边的其他数值,比如截图的这些哟 ~~https://img2018.cnblogs.com/blog/990686/202003/990686-20200305094415726-1580152767.png改变这两项就可以了哟~~
https://img2018.cnblogs.com/blog/990686/202003/990686-20200305131437268-1094463753.pnghttps://img2018.cnblogs.com/blog/990686/202003/990686-20200305131438045-1625705250.png多多弹框,多多测试,好处多多。========================================在【内存注册机】下拉菜单中,我们还有一项【使用存储数据】没有演示其功能https://img2018.cnblogs.com/blog/990686/202003/990686-20200305131438610-1359605724.png 接下来我们就来说 这个!这个东东要怎么用呢?https://img2018.cnblogs.com/blog/990686/202003/990686-20200305131439112-1865441288.png这又得从【存储当前数据】说起了。校长Nisy对于内存注册机的设计理念是:①存 ②读 ③展我们可以利用弹框做许多其他的事情,比如遍历控件,遍历注册表键值,搞个弹窗炸弹~~这种效果也是意外测试出来的,实际想想就跟你在用OD调试到某个循环的汇编命令一样的只不过,大白补丁扮演了夹三儿(注入和劫持)这样的强大功能。明白了原理,我们就可以继续测试和学习了。============================================================接下来,我们00458574这个存真码的地方设个硬件访问断点https://img2018.cnblogs.com/blog/990686/202003/990686-20200307101702182-2073988579.png然后我们就来到了另一个地方,这个地方在一个循环中!这个地方有一个特点,如果你用的是硬件访问断点,那么一次就断到了,并且第一次的数值就是我们要得到的真码!这次我们要练习的是条件断点+注册机+弹真码!我们说干就干,试验开始。https://img2018.cnblogs.com/blog/990686/202003/990686-20200307112128889-787225652.png经过试验,这样是不行的。因为该地址会被反复的读取到。所以还得来个条件。而且上面的次数并不适用。https://img2018.cnblogs.com/blog/990686/202003/990686-20200307112129669-1063201417.png所以用004062B2的时候,我们用eax 或edi 都是可以的,同时我们发现eax=458574 ,edi=458574也就是说B1:内存注册机>添加寄存器指向内存
1-1)可设上硬件断点,或选择智能都行,建议选择上硬件断点!
1-2)取edi寄存器指向的内存地址的数据(因为是寄存器窗口中看到的,所以不加中括号,即
1-3)条件断点为:edi=00458574 (edi即dword)B2:内存注册机>弹窗展示记录信息
2-1)可设上硬件断点,或选择智能都行,建议选择上硬件断点!
2-2)同1-3https://img2018.cnblogs.com/blog/990686/202003/990686-20200307112130465-299543902.png
https://img2018.cnblogs.com/blog/990686/202003/990686-20200307112131332-2043609806.pngXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX这是一种条件设置方法,还有另外的那种我们也可以试一下。https://img2018.cnblogs.com/blog/990686/202003/990686-20200307113818051-904693408.pnghttps://img2018.cnblogs.com/blog/990686/202003/990686-20200307113818938-754554180.pnghttps://img2018.cnblogs.com/blog/990686/202003/990686-20200307113936509-243781108.png我们再一次得胜了。到这里我们已经学会了【内存注册机】下拉菜单中的1235、神奇的条件断点、添加反调试检测。https://img2018.cnblogs.com/blog/990686/202003/990686-20200307122125201-1579691096.png
接下来,我们学习修改寄存器标志位在大白补丁中是如何使用的:https://img2018.cnblogs.com/blog/990686/202003/990686-20200307122125991-240186002.png我们运行程序,来到注册的地方!https://img2018.cnblogs.com/blog/990686/202003/990686-20200307122126808-1930723228.png接下来,我们就对这个JE下手。https://img2018.cnblogs.com/blog/990686/202003/990686-20200307122127584-302694867.png为了让每次都能弹框,所以上面的1次,得改成【每次】截图失误了,抱歉!寄存器值我们取反就行(OD中z=1,你就输入0,反之也个道理)=================================================================================接着,我们再来说一下【存储当前数据】->保存寄存器/保存寄存器指向内存它分为两种情况:保存寄存器 就是说,你打算要寄存器里边的byte ? word ? dword? qword?(x64dbg中使用)它们对应 12 4 8 字节,跟咱们用bph xxxxxxxx, r, 2(x32dbg/x64dbg中的硬件断点一个道理,很容易理解了吧?这校长Nisy的黑科技还是相当给力的。https://img2018.cnblogs.com/blog/990686/202003/990686-20200307131122264-1444042742.png也就是说,可以得到这个里边的东东~~是不是弹出了Thank you很高兴呢?然而这个地方是不行的。为什么呢?
0042AE5C CALL MageBros.0042A9F0 ;显然这里的返回值,决定下面cmp和下面的je跳转(所以必F7一探究竟
0042AE61 MOV EAX,DWORD PTR DS:[0x46ABE>;这句是赋值
0042AE66 CMP DWORD PTR DS:,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:
0042A9FD|.50 PUSH EAX
0042A9FE|.83EC 1C SUB ESP,0x1C
0042AA01|.53 PUSH EBX
0042AA02|.A1 508F4600 MOV EAX,DWORD PTR DS:
0042AA07|.33C4 XOR EAX,ESP
0042AA09|.50 PUSH EAX
0042AA0A|.8D4424 24 LEA EAX,DWORD PTR SS:
0042AA0E|.64:A3 00000000 MOV DWORD PTR FS:,EAX
0042AA14|.C74424 08 00000000 MOV DWORD PTR SS:,0x0
0042AA1C|.A1 ECAB4600 MOV EAX,DWORD PTR DS:
0042AA21|.85C0 TEST EAX,EAX
0042AA23|.0F84 C3000000 JE MageBros.0042AAEC
0042AA29|.50 PUSH EAX
0042AA2A|.8D4C24 10 LEA ECX,DWORD PTR SS:
0042AA2E|.E8 5DB8FDFF CALL MageBros.00406290
0042AA33|.68 74854500 PUSH MageBros.00458574 ;MB-3186-2945
0042AA38|.8D4C24 20 LEA ECX,DWORD PTR SS:
0042AA3C|.C74424 30 00000000 MOV DWORD PTR SS:,0x0
0042AA44|.E8 47B8FDFF CALL MageBros.00406290
0042AA49|.8D4424 1C LEA EAX,DWORD PTR SS:
0042AA4D|.BB 01000000 MOV EBX,0x1
0042AA52|.50 PUSH EAX
0042AA53|.8D4C24 10 LEA ECX,DWORD PTR SS:
0042AA57|.C64424 30 01 MOV BYTE PTR SS:,0x1
0042AA5C|.895C24 0C MOV DWORD PTR SS:,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:
0042AA72|.E8 19B8FDFF CALL MageBros.00406290
0042AA77|.8D4C24 14 LEA ECX,DWORD PTR SS:
0042AA7B|.51 PUSH ECX
0042AA7C|.BB 03000000 MOV EBX,0x3
0042AA81|.8D4C24 10 LEA ECX,DWORD PTR SS:
0042AA85|.C74424 30 02000000 MOV DWORD PTR SS:,0x2
0042AA8D|.895C24 0C MOV DWORD PTR SS:,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:
0042AAA8|.8942 28 MOV DWORD PTR DS:,EAX
0042AAAB|.C74424 2C 01000000 MOV DWORD PTR SS:,0x1
0042AAB3|.74 10 JE SHORT MageBros.0042AAC5
0042AAB5|.83E3 FD AND EBX,0xFFFFFFFD
0042AAB8|.8D4C24 14 LEA ECX,DWORD PTR SS:
0042AABC|.895C24 08 MOV DWORD PTR SS:,EBX
0042AAC0|.E8 FBB9FDFF CALL MageBros.004064C0
0042AAC5|>F6C3 01 TEST BL,0x1
0042AAC8|.C74424 2C 00000000 MOV DWORD PTR SS:,0x0
0042AAD0 74 09 JE SHORT MageBros.0042AADB
0042AAD2|.8D4C24 1C LEA ECX,DWORD PTR SS:
0042AAD6|.E8 E5B9FDFF CALL MageBros.004064C0
0042AADB|>8D4C24 0C LEA ECX,DWORD PTR SS:
0042AADF|.C74424 2C FFFFFFFF MOV DWORD PTR SS:,-0x1
0042AAE7|.E8 D4B9FDFF CALL MageBros.004064C0
0042AAEC|>8B4C24 24 MOV ECX,DWORD PTR SS:
0042AAF0|.64:890D 00000000 MOV DWORD PTR FS:,ECX
0042AAF7|.59 POP ECX
0042AAF8|.5B POP EBX
0042AAF9|.83C4 28 ADD ESP,0x28
0042AAFC\.C3 RETN
我们这次用0042AA98再来尝试下上述操作。z依旧填0这次成功了吧? 未注册标志去除了吧?我们得到了第二次练手的机会了。https://img2018.cnblogs.com/blog/990686/202003/990686-20200307131123080-273360260.png==================================================================================接着我们再尝试下【修改EIP(NOP)】https://img2018.cnblogs.com/blog/990686/202003/990686-20200307142545840-1510504463.png依旧是这里!补丁过后,我们依旧变成了注册版。https://img2018.cnblogs.com/blog/990686/202003/990686-20200307142546577-1318108077.png我们再来看下帮助中是怎么说的?原来它的原理是这样的啊 ~~也就是说,那个地方并非只能填写一个NOP,还有个【偏移量数值这么一说】So,那我们【0042AA9A-0042AA98=2】行不行呢?https://img2018.cnblogs.com/blog/990686/202003/990686-20200307142547313-300981845.png保存过后,补丁 ~~~ 我们又胜利了 ~~果然可以啊 ~~~~ 兴奋吧 ~~~幸福吧 ~~~Nisy万岁 ~~~我们又学会了两招 ,不错吧 ~~不仅复习了OD中灵活多样的条件断点 ~~我们的条件断点生成器也快重新出炉了 ~~这得益于对校长Nisy ’s Baymax Patch Tools的深度拆解和汇编中一些概念的重新认识和补足 ~~工具会了,下条件断点会了,编程进一步扩展自己的断点生成器也有了新的想法了 ~~真是一举数得啊 ~~
===================================================================================https://img2018.cnblogs.com/blog/990686/202003/990686-20200305131439842-2037701053.pnghttps://img2018.cnblogs.com/blog/990686/202003/990686-20200305131440611-2001223541.png
==========================================================
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:
0042A8C4 .3>CMP EAX,0x110
0042A8C9 .5>PUSH ESI
0042A8CA .0>JNZ MageBros.0042A950
0042A8D0 .8>MOV EAX,DWORD PTR SS:
0042A8D4 .8>TEST EAX,EAX
0042A8D6 .A>MOV DWORD PTR DS:,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:
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的工具来 ~~
沙发,只能是我的。
试验内容太多了,不能全部贴全,抱歉。
https://www.chinapyg.com/uc_server/data/avatar/000/07/65/14_avatar_middle.jpg {:lol:}
楼主请问有视频吗?
@xie83544109
这只是学习过程中的一部分而已 。 哥又回来了 发表于 2020-3-7 17:59
@xie83544109
这只是学习过程中的一部分而已 。
亲!头发不要了?{:lol:} 还差返回值 和 HOOK时机 没摸透。其他的已经很熟练了。 向表哥学习,总结很详细地址,对于加壳的 hook api的查找方法以及解码时机得给我们讲讲 什么时候表哥能出个学习视频好运就更完美了 FW大婶牛掰,只能膜拜了。 不知道怎么回事,帖子中的图片打不开啊
页:
[1]
2