昨天刚跟着二哥的脱壳教程学脱壳,里边有《手动脱壳进阶第五篇yoda's Crypter V1.2》,然后今天又在DFCG上看到 Yoda's Protector v1[1].03.2,
于是下回来看看,现在好了,实在拿不下来......
引用snk2002声明:这个Yoda's Protector v1.03.2挺绝的,暗庄若干,变形jump若干,...若干。而且当这个壳发监测到你在调试,便(也许)锁定了键盘和鼠标,并且开始菜单,任务栏,快捷栏无法点击
我不懂写文章,说主要部分吧
OD忽略所以异常,IsDebugPresent隐藏。
CALL [EBP+EBX] 这样的形式可看到调用的API函数
CALL 01013F57 这样的形式得高度注意,一不小心就飞起来啦
SHIFT+F9 经过6次后就没有异常了
//完成函数表的载入
01013E9A E8 03000000 CALL 01013EA2 ; Yoda's_P.01013EA2
//找到任务栏窗口,用GetTopWindow使开始菜单,任务栏,快捷栏无法点击
01013F30 50 PUSH EAX ***** 指向 Shell_TrayWnd
01013F31 BB EF724200 MOV EBX, 4272EF
01013F36 FF541D 00 CALL [EBP+EBX] ; User32.FindWindowA
01013F3A 8985 50A04200 MOV [EBP+42A050], EAX ; Yoda's_P.010166C3
01013F40 BB F3724200 MOV EBX, 4272F3
01013F45 FF541D 00 CALL [EBP+EBX] ; User32.GetTopWindow
01013F49 8985 58A04200 MOV [EBP+42A058], EAX ; Yoda's_P.010166C3
//禁止鼠标
01013F8D 6A 00 PUSH 1 ****改0
01013F8F BB DF724200 MOV EBX, 4272DF
01013F94 FF541D 00 CALL [EBP+EBX] ; User32.BlockInput
//挂起OD进程 SuperThread
010147BA 85DB TEST EBX, EBX
010147BC 74 11 JE SHORT 010147CF *****找到OD进程后,这里一定要跳
010147BE 51 PUSH ECX
010147BF 8BC1 MOV EAX, ECX
010147C1 50 PUSH EAX
010147C2 8BD5 MOV EDX, EBP
010147C4 81C2 B3724200 ADD EDX, 4272B3
010147CA FF12 CALL [EDX] *** SuperThread
//IsDebuggerPresent 不用理会了
010157C6 FF541D 00 CALL [EBP+EBX] ; kernel32.IsDebuggerPresent
010157CA 0BC0 OR EAX, EAX
010157CC 74 23 JE SHORT 010157F1 ; Yoda's_P.010157F1
//时间比较GetTickCount
01015D81 FF5415 00 CALL [EBP+EDX] ; kernel32.GetTickCount
01015D85 8B8D BCA04200 MOV ECX, [EBP+42A0BC]
01015D8B 2BC1 SUB EAX, ECX ; Yoda's_P.01007074
01015D8D 3D E02E0000 CMP EAX, 2EE0
01015D92 78 08 JS SHORT 01015D9C ***** 改跳走
好,没什么检测调试器的了
再顺利的跟一会儿后,来到这里
01014641 8B85 34A04200 MOV EAX, [EBP+42A034]
地址访问错误了!!!
我迷失在这里了,请各位指点一下!
[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!