【吾爱破解2014CrackMe大赛】【第十一组】
本帖最后由 L4Nce 于 2014-11-3 02:03 编辑{:1_909:}进去main 函数 吓尿了一大堆je jg jmp
还有重要的sub eax,xxxxxxx
跟踪了一下发现软件通过取出堆栈变量一个个sub如果为0 就用je跳进去执行相应的handle
{:1_909:}然后我就想到写个脚本跟踪跟踪执行顺序
然后悲剧了 脚本跑N久未跑完{:1_906:}{:1_906:}{:1_906:}
然后用IDA载入发现main函数太恐怖了 这么长,挂着IDA分析半小时貌似没分析完{:1_909:}
然后左思右想 终于找到突破口
我在想,CM已经告诉KEY要48位,
那么肯定有个跳转 比较是否是48位~~
通过ReadFile 找到key 保存的全局变量地址0x4A0000
对所有此变量的语句下段 找到这里
00478BFC .C700 00004A00 mov dword ptr ds:,CrackMe1.004A0000 ;ASCII "21345461234"
00478C02 .89BE C01C0000 mov dword ptr ds:,edi
00478C08 .898E BC1C0000 mov dword ptr ds:,ecx
00478C0E .8996 B81C0000 mov dword ptr ds:,edx
00478C14 .E8 478C0100 call CrackMe1.00491860 ; //strlen
00478C19 .83C4 04 add esp,0x4
00478C1C .8B8E D4390000 mov ecx,dword ptr ds:
00478C22 .8901 mov dword ptr ds:,eax //保存长度了
00478C24 .8B86 D0390000 mov eax,dword ptr ds:
00478C2A .8138 03000000 cmp dword ptr ds:,0x3
00478C30 .0F92C0 setb al
对esi+0x39d4下硬件访问断点,就会来到这里
00479164 .813F 30000000 cmp dword ptr ds:,0x30 //比较字符串长度是否是0x30 即 48位
0047916A .0F95C6 setne dh
0047916D .80E6 01 and dh,0x1
00479170 .88B6 6A3A0000 mov byte ptr ds:,dh //保存起来了
继续对esi+0x3A6A 下硬件访问断点来到
00479231 > \B8 48874192 mov eax,0x92418748
00479236 .B9 83155102 mov ecx,0x2511583
0047923B .8A96 6A3A0000 mov dl,byte ptr ds:
00479241 .F6C2 01 test dl,0x1
00479244 0F45C1 cmovne eax,ecx ;
00479247 .8986 C4390000 mov dword ptr ds:,eax
估计这就是对跳转的处理了 ~~~~
然后寻找所有相类似的代码 , 成功爆破~~~~~{:1_906:}
算法~~~~~~~~~~~~~~ 毫无头绪,尝试通过获取name和key跟踪 ,发现硬件断点不够用,跟踪出几句算法代码就不知所踪了,放弃了~{:1_908:}{:1_936:}{:1_906:}附上爆破文件
最后成绩:101
评委评价:爆破有效
谢谢参与。 看见CMD窗口直接关电脑睡了 我又来学习了,支持 在继续,学习中{:1_925:} 向大神 学习了 向大神 学习了!!!!!!!!!! 过来学习 学习感谢分享~~
我又来学习了,支持 {:301_992:}加油学习中~
页:
[1]