-
-
password型crackme的逆向分析
-
发表于:
2006-7-21 21:56
5805
-
【破文标题】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就是正确的密码。
----------------------------------------------------------------------
【版权声明】本文只为交流,转载请保留作者及文章完整性
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)