【已开源】超强大的CM1.2来了,不加壳不加花,欢迎大神来挑战!from time:2017.08.10
本帖最后由 小攸 于 2017-8-11 09:27 编辑支持爆破,支持追码!
用尽你的大脑吧~让我们来一波头脑风暴~
破解成功后,公布源码,给大家参考研究!
这个版本主要加工了追码方面,爆破方面没有主要去防御。算法很麻烦,我自己写的头都炸,写了整整一下午。。。。。
==================================================================================已被破解,以下是源码,如果大家有什么好的玩法,可完善源码,然后上传上来,我们一起交流讨论
源码+模块下载地址:https://pan.baidu.com/s/1bOMOYM 密码: z3dq
里面采用了自身HOOK的方式,进行功能的阻止和调用,并使用字节对比的方式,判断指定位置是否被断点。
知识点:断点后的位置 字节为int3,因此断点的位置字节被改变,可用于对比判断是否被断点 本帖最后由 zbnysjwsnd8 于 2017-8-11 09:30 编辑
我看了一下你的代码
你这个检测断点有问题
这是我的GetWindowTextA的代码
7783CAB0 >6A 0C push 0xC
7783CAB2 68 602F8A77 push user32.778A2F60
7783CAB7 E8 081A0100 call user32.7784E4C4
7783CABC 8B75 0C mov esi,dword ptr ss:
7783CABF 85F6 test esi,esi ; echap543.<ModuleEntryPoint>
7783CAC1 74 56 je short user32.7783CB19
7783CAC3 837D 10 00 cmp dword ptr ss:,0x0
7783CAC7 74 50 je short user32.7783CB19
7783CAC9 8365 FC 00 and dword ptr ss:,0x0
7783CACD C606 00 mov byte ptr ds:,0x0
7783CAD0 8B4D 08 mov ecx,dword ptr ss:
7783CAD3 E8 D8AEFEFF call user32.778279B0
7783CAD8 8BD8 mov ebx,eax
7783CADA 8BC2 mov eax,edx ; echap543.<ModuleEntryPoint>
7783CADC 8945 E4 mov dword ptr ss:,eax
7783CADF 8BCB mov ecx,ebx
7783CAE1 0BC8 or ecx,eax
7783CAE3 0F84 DC2E0200 je user32.7785F9C5
7783CAE9 50 push eax
7783CAEA 53 push ebx
7783CAEB E8 C3000000 call user32.7783CBB3
7783CAF0 6A 01 push 0x1
7783CAF2 56 push esi ; echap543.<ModuleEntryPoint>
7783CAF3 85C0 test eax,eax
7783CAF5 0F84 A52E0200 je user32.7785F9A0
7783CAFB FF75 E4 push dword ptr ss:
7783CAFE 53 push ebx
7783CAFF 8B55 10 mov edx,dword ptr ss:
7783CB02 6A 0D push 0xD
7783CB04 59 pop ecx ; kernel32.75DA38F4
7783CB05 E8 4694FEFF call user32.77825F50
7783CB0A C745 FC FEFFFFF>mov dword ptr ss:,-0x2
7783CB11 E8 F3190100 call user32.7784E509
7783CB16 C2 0C00 retn 0xC
7783CB19 33C0 xor eax,eax
7783CB1B^ EB F4 jmp short user32.7783CB11
这是我的GetWindowTextW代码:
7783CB30 >6A 0C push 0xC
7783CB32 68 802F8A77 push user32.778A2F80
7783CB37 E8 88190100 call user32.7784E4C4
7783CB3C 8B75 0C mov esi,dword ptr ss:
7783CB3F 85F6 test esi,esi ; echap543.<ModuleEntryPoint>
7783CB41 74 67 je short user32.7783CBAA
7783CB43 837D 10 00 cmp dword ptr ss:,0x0
7783CB47 74 61 je short user32.7783CBAA
7783CB49 8365 FC 00 and dword ptr ss:,0x0
7783CB4D 33C0 xor eax,eax
7783CB4F 66:8906 mov word ptr ds:,ax
7783CB52 8B4D 08 mov ecx,dword ptr ss:
7783CB55 E8 56AEFEFF call user32.778279B0
7783CB5A 8BD8 mov ebx,eax
7783CB5C 8BC2 mov eax,edx ; echap543.<ModuleEntryPoint>
7783CB5E 8945 E4 mov dword ptr ss:,eax
7783CB61 8BCB mov ecx,ebx
7783CB63 0BC8 or ecx,eax
7783CB65 74 3C je short user32.7783CBA3
7783CB67 50 push eax
7783CB68 53 push ebx
7783CB69 E8 45000000 call user32.7783CBB3
7783CB6E 6A 00 push 0x0
7783CB70 56 push esi ; echap543.<ModuleEntryPoint>
7783CB71 85C0 test eax,eax
7783CB73 74 1E je short user32.7783CB93
7783CB75 FF75 E4 push dword ptr ss:
7783CB78 53 push ebx
7783CB79 8B55 10 mov edx,dword ptr ss:
7783CB7C 6A 0D push 0xD
7783CB7E 59 pop ecx ; kernel32.75DA38F4
7783CB7F E8 CC93FEFF call user32.77825F50
7783CB84 C745 FC FEFFFFF>mov dword ptr ss:,-0x2
7783CB8B E8 79190100 call user32.7784E509
7783CB90 C2 0C00 retn 0xC
7783CB93 FF75 10 push dword ptr ss:
7783CB96 6A 0D push 0xD
7783CB98 FF75 E4 push dword ptr ss:
7783CB9B 53 push ebx
7783CB9C E8 7F69FEFF call user32.77823520
7783CBA1^ EB E1 jmp short user32.7783CB84
7783CBA3 C745 FC FEFFFFF>mov dword ptr ss:,-0x2
7783CBAA 33C0 xor eax,eax
7783CBAC^ EB DD jmp short user32.7783CB8B
0x6A 0x0C 0x68转换成易语言的字节集是这样的:
{106,12,104}
和你这里检测的 { 106, 8, 104 } 根本就不一样
通用性好差啊{:301_1004:}
恐怕只有和楼主一个系统的
不修改代码才能验证算法吧 本帖最后由 zbnysjwsnd8 于 2017-8-10 21:29 编辑
爆破:
楼主真是脑洞大开啊
00404330 . /EB 35 jmp short CM1_2.00404367
00404332 |90 nop
00404333 |90 nop
00404334 |90 nop
00404335 |90 nop
这有个前提:干掉那三个call中的强制销毁线程
004011BE . /E9 7F000000 jmp CM1_2.00401242
0040189F . /E9 7F000000 jmp CM1_2.00401923
004019AD . /E9 7F000000 jmp CM1_2.00401A31
追码:
在虚拟机中测试:
注册机在第21楼。
学习一下,谢谢你的分享 我是不可能成功的了,路过看看 破不掉!我对源码感兴趣, 发了后改装点我的东西进去 编程其实很有意思,每个人的写法都不一样
本帖最后由 SeriousSnow 于 2017-8-10 18:06 编辑
最简单的办法就是你的那个“功能”call太好找了,,,按钮事件里直接call 然后ret 看起来好厉害 SeriousSnow 发表于 2017-8-10 18:03
最简单的办法就是你的那个“功能”call太好找了,,,按钮事件里直接call 然后ret
功能那边大意了,卧槽,太过关注算法了。。。功能那边没加效验、。、、、 看起来好厉害