首页
社区
课程
招聘
password型crackme的逆向分析
发表于: 2006-7-21 21:56 5806

password型crackme的逆向分析

2006-7-21 21:56
5806

【破文标题】CRACKME破解分析
【破文作者】逍遥风
【破解工具】OD 计算器
【破解平台】winXP
----------------------------------------------------------------------
这种CRACKME不能直接找倒正确的注册码,必须根据算法才能逆推出正确的密码
根据提示很容易来到关键代码处:
0040103A  |.  6A 00         push    0                     ; /IsSigned = FALSE
0040103C  |.  6A 00         push    0                     ; |pSuccess = NULL
0040103E  |.  68 EA030000   push    3EA                   ; |ControlID = 3EA (1002.)
00401043  |.  FF75 08       push    dword ptr [ebp+8]     ; |hWnd
00401046  |.  E8 8D000000   call    <jmp.&user32.GetDlgIt>; \GetDlgItemInt
0040104B  |.  50            push    eax                   ;  取输入的字符串的16进制值
0040104C  |.  68 BF104000   push    004010BF
00401051  |.  E8 48000000   call    0040109E              ;  关键CALL,跟进
00401056  |.  83F8 01       cmp     eax, 1                ;  检验标志位,EAX等于1就注册成功
00401059  |.  74 16         je      short 00401071
跟进关键CALL:
0040109E  /$  83C4 10       add     esp, 10
004010A1  |.  83EC 0C       sub     esp, 0C
004010A4  |.  66:35 AFDE    xor     ax, 0DEAF             ;  XOR(16进制值,0xDEAF)
004010A8  |.  C1C0 10       rol     eax, 10               ;  左移
004010AB  |.  BB CFFFDA3A   mov     ebx, 3ADAFFCF         ;  使EBX等于定值0x3ADAFFCF
004010B0  |.  3BC3          cmp     eax, ebx              ;  左移后的值与定值0x3ADAFFCF相比较
004010B2  |.  75 08         jnz     short 004010BC
004010B4  |.  B8 01000000   mov     eax, 1
004010B9  |.  33DB          xor     ebx, ebx
004010BB  |.  C3            retn
004010BC  |>  33DB          xor     ebx, ebx
004010BE  \.  C3            retn
004010BF   .  58            pop     eax
004010C0   .  80C4 20       add     ah, 20                ;  16进值字符串A的第2字节加上0x20
004010C3   .  F7D8          neg     eax                   ;  求反
004010C5   .  68 A1104000   push    004010A1
整个过程不难,但是要细细分析才能得出结果:
可以看出,程序最后是把计算后的结果放在EAX中。定值0x3ADAFFCF放在EBX中,然后再进行比较
与0x3ADAFFCF比较前有一段代码“rol     eax, 10”
要得出正确的值就要开始一步一步逆推还原。
我们倒着一步一步来从004010B0 处的代码开始
顺序是004010B0------》004010A8------》004010A4------》004010C3------》004010C0
(指对应的地址)
所以,把定值3ADAFFCF还原从004010B0开始:
1)004010A8
   假设左移前的值为X,即ROL X,10=3ADAFFCF
   很容易得出X=FFCF3ADA
2)004010A4
   左移以前有一句代码:“xor     ax, 0DEAF”
   所以上面一步得出的值就是XOR运算后的值
   假设XOR运算运算前的值为Y,即XOR(Y,0DEAF)=FFCF3ADA
   很容易计算: FFCF3ADA XOR 0DEAF = FFCFE475,所以Y=FFCFE475
3)现在循环部分结束了,来到004010C3处的代码
   上一步的得出的值恰好是这一步的结果。
   假设NEG(Z)=FFCFE475,那么容易计算:NEG(FFCFE475)=Z=301B8B
4)004010C0
   最后一句关键代码:“add     ah, 20”  
   同上:上一步的得出的值恰好是这一步的结果。
   假设。A+20=1B (注意:这里是对Z的第2字节的内容进行计算的)
   所以。A=1B-20=FB(用它替换Z的第2个字节就得倒最初的值)
5)最后结果就是:30FB8B,转换成10进制就是3210123
所以3210123就是正确的密码。
   
----------------------------------------------------------------------

【版权声明】本文只为交流,转载请保留作者及文章完整性


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (8)
雪    币: 433
活跃值: (176)
能力值: ( LV13,RANK:1250 )
在线值:
发帖
回帖
粉丝
2
你还漏了另外一个密码,看我的帖:

http://bbs.pediy.com/showthread.php?s=&threadid=29055

若仅出于分析算法的目的,这些Crackme就显得太简单了点。
2006-7-21 22:30
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最初由 冲天剑 发布
你还漏了另外一个密码,看我的帖:
http://bbs.pediy.com/showthread.php?s=&threadid=29055
若仅出于分析算法的目的,这些Crackme就显得太简单了点。


大鸟看啥子分析啥子都Easy,小鸟学个啥都感吃力~ 
2006-7-22 08:32
0
雪    币: 2256
活跃值: (941)
能力值: (RANK:2210 )
在线值:
发帖
回帖
粉丝
4
最初由 冲天剑 发布
你还漏了另外一个密码,看我的帖:

http://bbs.pediy.com/showthread.php?s=&threadid=29055

若仅出于分析算法的目的,这些Crackme就显得太简单了点。


向兄弟学习了
2006-7-22 09:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
向逍遥风 兄弟学习了
2006-7-22 10:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我也来收集学习,支持!
2006-7-30 11:09
0
雪    币: 214
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
顺序是004010B0------》004010A8------》004010A4------》004010C3------》004010C0
(指对应的地址)
----------------------------
你是这么算出这些顺序,为什么要这样的顺序?
2006-8-1 15:23
0
雪    币: 2256
活跃值: (941)
能力值: (RANK:2210 )
在线值:
发帖
回帖
粉丝
8
最初由 wangxlxk 发布
顺序是004010B0------》004010A8------》004010A4------》004010C3------》004010C0
(指对应的地址)
----------------------------
你是这么算出这些顺序,为什么要这样的顺序?


就是把原来计算的顺序颠倒过来
比如:
把1经过如下计算得到7
1+2=3,3+4=7
现在知道7,要求出1
就是
7-4=3,3-2=1。
就是这个意思
2006-8-1 17:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢,新手,刚刚开始学习破解
2006-8-2 00:54
0
游客
登录 | 注册 方可回帖
返回
//