本帖最后由 ximo 于 2014-10-28 10:41 编辑
被CM4虐了
果断找CM5安慰一下自己~
先按常理跟了一遍按钮事件~
address=0040A0A1
大概就获取用户名和密码保存在全局变量~
然后比较是否为空
还有一个貌似正常情况下永远不会发生的死循环(迷惑人?)
然后怎么跳都是失败
没办法 只有去找找全局变量的调用看看怎样
找来找去 发现最可疑就是这个全局变量的调用代码
0040958D |. 68 CCED4900 push CrackMe.0049EDCC
其他基本就是个幌子
来到断首 在返回一下调用
就是这里0040A082 . 56 push esi ; ??????????????????
那么问题又来了, 怎么弄都不能调用到这里~~~~~~~~~~~~~~~~~
还是去看看他启动的时候做了什么手脚吧
address=00401059
主要是这句代码
0040113C |. E8 DB2A0000 call CrackMe.00403C1C ; 设置VEH?
跟进这个call 里面会调用
00429549 .- FFE0 jmp eax ; ntdll.RtlAddVectoredExceptionHandler
VEH~~~~
果断去掉勾选所有异常和SOD的选项
但不知为什么还是没有异常发生~
然后我慢慢看关键函数0040A082
[C++] 纯文本查看 复制代码 00409565 |. 813B 04000080 cmp dword ptr ds:[ebx],0x80000004 、、这个事异常代码
0040956B |. 0F85 40060000 jnz CrackMe.00409BB1 ; >>>
00409571 |. 8B5D F4 mov ebx,[local.3]
00409574 |. 8B5B 04 mov ebx,dword ptr ds:[ebx+0x4]
00409577 |. 83C3 4C add ebx,0x4C
0040957A |. 895D EC mov [local.5],ebx
0040957D |. A1 98ED4900 mov eax,dword ptr ds:[0x49ED98]
00409582 |. 8B5D EC mov ebx,[local.5]
00409585 |. 3903 cmp dword ptr ds:[ebx],eax ; 和0040A27D这个地址比较 所以要在这个地址要发生异常
00409587 |. 0F85 FA040000 jnz CrackMe.00409A87
0040958D |. 68 CCED4900 push CrackMe.0049EDCC
00409592 |. E8 AF060000 call CrackMe.00409C46 ; 这个call
翻翻书 发现0x80000004 =单步中断
这就好办了 直接在0040A27D的前一句代码 弄个TF标志位然他发生异常就行了
下面的代码基本就是调用易语言自带的加密数据和SUPER-EC的RC4类实现的了
大致就是这样 可能有错 没尝试过
逆回来大概就是这样
用户名?机器码?都是迷惑人的
VEH也有好几个函数也是这样?
所以弹出的内容是不固定的?
附上keygen
keygen1.rar
(257.52 KB, 下载次数: 38)
|