【已破解】来一发CM1.1,不加壳不加花,欢迎来搞-from time:2017年8月9日
本帖最后由 小攸 于 2017-8-9 14:39 编辑老规矩,支持爆破,支持密钥逆向,随便你怎么玩~
在原来1.0的基础上进行了强化加深,本次不加壳不加花,减小代码分析繁琐性
欢迎各位大神来挑战
from time:2017年8月9日09:36:07 本帖最后由 zbnysjwsnd8 于 2017-8-9 13:42 编辑
{:1_902:}
唔。。。感觉蛮简单 注册码是201778
0x0 爆破:
按照这个修改即可。
0040414F .837D E8 00 cmp dword ptr ss:,0x0
00404153 .90 nop
00404154 .90 nop
00404155 .90 nop
00404156 .90 nop
00404157 .90 nop
00404158 .90 nop
00404159 .833D 0CF34A00>cmp dword ptr ds:,0x0
00404160 .90 nop
00404161 .90 nop
00404162 .90 nop
00404163 .90 nop
00404164 .90 nop
00404165 .90 nop
00404166 .837D EC 00 cmp dword ptr ss:,0x0
0040416A .EB 52 jmp short CM1_1.004041BE
0040416C 90 nop
0040416D 90 nop
0040416E 90 nop
0040416F 90 nop
爆破效果图:
顺便说一下怎么过掉反调试(我这里遇到两个 一个是ZwSetInformationThread 另一个是SetUnhandledExceptionFilter)
ZwSetInformationThread:将0x004021EB处的push 0x11改成push 0。这个反调试就GG了
SetUnhandledExceptionFilter:
在kernel32!UnhandledExceptionFilter处有调用ntdll!ZwQueryInformationProcess来查询DEBUG PORT
如果DEBUG PORT不为0的话 就将异常交给调试器 调试器如果不处理程序就GG。
不多说了 直接放代码吧。
7600EFEE 8BFF mov edi,edi ; fx.<ModuleEntryPoint>
7600EFF0 55 push ebp
7600EFF1 8BEC mov ebp,esp
7600EFF3 51 push ecx ; fx.<ModuleEntryPoint>
7600EFF4 56 push esi ; fx.<ModuleEntryPoint>
7600EFF5 33F6 xor esi,esi ; fx.<ModuleEntryPoint>
7600EFF7 8D45 FC lea eax,dword ptr ss:
7600EFFA 56 push esi ; fx.<ModuleEntryPoint>
7600EFFB 6A 04 push 0x4
7600EFFD 50 push eax
7600EFFE 6A 07 push 0x7
7600F000 6A FF push -0x1
7600F002 8975 FC mov dword ptr ss:,esi ; fx.<ModuleEntryPoint>
7600F005 FF15 20A00276 call dword ptr ds:[<&ntdll.NtQueryInform>; ntdll.ZwQueryInformationProcess
7600F00B 85C0 test eax,eax
7600F00D 78 06 js short KernelBa.7600F015
7600F00F 3975 FC cmp dword ptr ss:,esi ; fx.<ModuleEntryPoint>
7600F012 74 01 je short KernelBa.7600F015 ; 修改这里 将je改成jmp即可
7600F014 46 inc esi ; fx.<ModuleEntryPoint>
7600F015 8BC6 mov eax,esi ; fx.<ModuleEntryPoint>
7600F017 5E pop esi ; kernel32.75DA38F4
7600F018 8BE5 mov esp,ebp
7600F01A 5D pop ebp ; kernel32.75DA38F4
7600F01B C3 retn
为了方便可以写一个DLL来做这些工作
然后给CM加一个导入表即可。
放一个我写的Anti-Anti-Debug代码
0x1 追码:
算法其实就在判断的上面。
设注册码为a
则有a * 44 * 2 = 44 * 403556
解得a = 201778 追码效果图:
mdzz007 发表于 2017-8-9 10:15
-。-复制我的图片。。。 感谢楼主提供分享~~~~~~~~~ zbnysjwsnd8 发表于 2017-8-9 13:02
唔。。。感觉蛮简单 注册码是201778
0x0 爆破:
按照这个修改即可。
不错哦,厉害哦~~就是反调试处理你的方法麻烦了。其实只要ret一个地方或者直接nop一个地方,就可以了。
老哥分析很详细,稳~ 小攸 发表于 2017-8-9 14:14
不错哦,厉害哦~~就是反调试处理你的方法麻烦了。其实只要ret一个地方或者直接nop一个地方,就可以了。
...
{:1_902:}只是当时我不确定 你设置的回调函数里面 有没有设置什么数据和注册有关
如果有关直接ret或者nop就GG了 zbnysjwsnd8 发表于 2017-8-9 14:16
只是当时我不确定 你设置的回调函数里面 有没有设置什么数据和注册有关
如果有关直接ret或者no ...
你过你可以追到密钥判断事件,那也是很厉害了,你是怎么追的?访问断点?还是其他方式? 本帖最后由 zbnysjwsnd8 于 2017-8-9 16:05 编辑
小攸 发表于 2017-8-9 14:38
你过你可以追到密钥判断事件,那也是很厉害了,你是怎么追的?访问断点?还是其他方式?
{:1_902:}bp GetWindowTextA
挨个线程看
可以用xjun师傅的神器找到按钮事件的地址和编辑框输入的地址
小攸 发表于 2017-8-9 14:38
你过你可以追到密钥判断事件,那也是很厉害了,你是怎么追的?访问断点?还是其他方式?
{:1_910:}原谅我太菜
刚刚试了一下
FF25找不到按钮事件。
我不用特征码。。。