首页
社区
课程
招聘
[原创]CrackMe等级自测系统一个3级CM全程分析(MFC)
发表于: 2012-4-1 18:14 25296

[原创]CrackMe等级自测系统一个3级CM全程分析(MFC)

2012-4-1 18:14
25296
收藏
免费 6
支持
分享
最新回复 (21)
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
2
支持楼主分享啊!
2012-4-1 18:30
0
雪    币: 183
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
下载分析玩玩
2012-4-1 19:51
0
雪    币: 380
活跃值: (108)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
分析得很详细,下载来学习下,呵呵
2012-4-1 20:51
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
5
沉了。。。。。。。。。
2012-4-7 11:07
0
雪    币: 2882
活跃值: (1279)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjd
6
建议以后用mht。省得装office
2012-4-7 11:13
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
7
弟弟ding你.坤哥!
2012-4-11 13:56
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
8
这个分析的很好。应该精华的。
2012-4-11 13:57
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
9
继续顶。直到拿了精华为止!
2012-4-12 02:33
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
10
韬哥这么晚了还不休息啊
2012-4-12 07:49
0
雪    币: 2562
活跃值: (1538)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
IDA5.5打不开。。。。
2012-4-12 08:33
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
12
试试6.1版本
2012-4-12 08:36
0
雪    币: 417
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
分析的很详细 ,学习了
2012-4-12 13:07
0
雪    币: 151
活跃值: (70)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
14
楼主好运气,找到了MessageBox,我跟着程序跑啊跑,就跑丢了,求大牛的完美破文....
-------------------------------------------------------------------------------------------------
1.按钮事件的消息传递:

内核-> AfxWndProc(sub_00408F03) -> AfxCallWndProc(sub_00408E16) -> CWnd::WindowProc(sub_00406D85) ->
CWnd::OnWndMsg(sub_0040A3CF ) -> CWnd::OnCommand(sub_00409934) -> CDialog::OnCmdMsg(sub_004051FA) ->
CCmdTarget::OnCmdMsg(sub_00403615) -> _AfxDispatchCmdMsg(sub_004034dd) -> sub_004023b0()

sub_004023b0()为第一次加密,基本是一些内存复制操作

sub_004023b0()
{
    GetWindowTextA(hwnd_edit,0012f7b8,10);
    GetWindowTextA(hWnd_edit,0012f7c4,10);
    sub_401900(0012fe6c,"%s",0012feb8);
    sub_401900(0012fec8,"%s",0012f7b8);
    sub_401900(0012fecc,"%s",0012f7b8);
    sub_401900(0012fed0,"%s",0012f7c4);
    sub_401900(0012fe70,"%s",0012f7c4);
    sub_401900(0012fed4,"%s",0012f7c4);

    PostMessage(hwnd,0x466,0,0);
}

2.466事件的消息传递:

内核-> AfxWndProc(sub_00408F03) -> AfxCallWndProc(sub_00408E16) -> CWnd::WindowProc(sub_00406D85) ->
CWnd::OnWndMsg(sub_0040A3CF ) -> sub_00402250

sub_00402250疑似第二次加密,但是看不出意图,未调用messagebox,也未指出下一步方向,只是有throw exception的操作。
sub_00402250()
{
    new();
    new();
    ....
    free();
    free();
    return;
   
    throw_exception(0x8000057);
    throw_exception(0x8000057);
    return;
}

3.跟踪了下exception,有int 3反调试,NOP掉,程序出错。

loc_004013d0(id)
{
    if(id == 0x8007000E)
    {
      _CxxThrowException(x,x);
  }
  AfxThrowOleException(id)
}
4. 无路可走......
2012-6-13 14:21
0
雪    币: 2
活跃值: (199)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
MARK!!!
2012-6-13 15:02
0
雪    币: 500
活跃值: (995)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
顶一下,lz分析的很详细,我等菜鸟收益了,感谢!
2012-6-28 23:32
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
先让程序跑起来,指不定哪个人来恶搞一下,放个硬件低格的病毒,哈哈。
2012-6-29 07:05
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
18
胆儿小的用虚拟机,,胆儿中的用沙箱,胆儿大的真机跑,你是哪类?我是属于那种最胆儿小的啊。
2012-6-29 11:59
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
19
我是直接不跑的。
2012-7-4 23:01
0
雪    币: 124
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
下载分析,学习学习,谢谢。
2012-7-11 15:07
0
雪    币: 221
活跃值: (40)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
21
看了很长时间,终于看完了,这里有一些疑问。
.text:00401C63                 cmp     eax, 3E8h
.text:00401C68                 jbe     short loc_401C74
.text:00401C6A                 mov     Msg, 466h
原文中说“间隔如果小于1秒,则消息码被置为466”,是否有误。应该为“间隔如果大于1秒,则消息码被置为466”吧?
和作者一样,没有跟踪到465h消息码的处理过程。不过输入密码点“确定”之后,在主窗口处理过程函数中断下,正常传入的消息码为464h,此时可以手动改为465h,后续将会进入465h消息码对应的消息处理函数00401C30 (TickCountCheck)中。
堆栈 ss:[0012FC98]=00000465
第一次调用TickCountCheck时,tickcount初始值为1,所以调用GetTickCount更新tickcount的值。然后F9运行,即使输入的为正确密码,此时也没有任何提示。再次点击“确定”,重复之前的步骤。如果不修改程序传入的消息码464h,则仍能够弹出提示框,如果仍然修改为465h,则继续进入到TickCountCheck中。之前对465h的处理已经更新过tickcount,此时程序计算两次处理的时间差,因为是调试过程,所以必然大于1秒,是否程序此时认为被调试然后把消息码更改为466h?此后,内存地址0040DFA4的值被更改为466。F9继续运行,输入正确的密码也不会再弹出提示框。
最后还有一个疑问,IDA中遇到形如“unknown_libname_261”的函数名,有些可能是一些库函数,能否让IDA自动识别出来?
2012-8-24 10:15
0
雪    币: 313
活跃值: (619)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
很详细,顶一个
2012-8-30 19:04
0
游客
登录 | 注册 方可回帖
返回
//