CrackMe#40:Static

这是一个非常有意思的CrackMe!

首先查壳 又是UPX 直接手脱 脱壳毫无技术含量不值一提.

然后载入OD直接找到算法部分~

发现这个CM比较特别 其中的两个静态变量作为标志更是亮点中的亮点~

这意味着要输入两次Key验证,第一次使得第一个STATIC a==1,b==1;

第二次使得STAIC b++;

要当a==1,b==2的时候才算CONS~

在验证过程会发现算法只取前8位注册码 不够8位用0x20补全~

而且这个算法也是这个CM的非常漂亮的地方之一,特别是第一轮的~:

第一轮:

/*************************************************/

004568FC  /$  55            push    ebp
004568FD  |.  31C9          xor     ecx, ecx
004568FF  |.  8D30          lea     esi, dword ptr [eax]
00456901  |.  83C6 04       add     esi, 4
00456904  |.  BB 998F3337   mov     ebx, 37338F99
00456909  |.  AD            lods    dword ptr [esi]                  ;  后四位
0045690A  |.  31C3          xor     ebx, eax
0045690C  |.  C1C3 30       rol     ebx, 30
0045690F  |.  81F3 00009999 xor     ebx, 99990000
00456915  |.  C1CB 50       ror     ebx, 50
00456918  |.  83EE 08       sub     esi, 8
0045691B  |.  AD            lods    dword ptr [esi]                  ;  前四位
0045691C  |.  01C3          add     ebx, eax
0045691E  |.  81F3 99999999 xor     ebx, 99999999
00456924  |.  C1C3 70       rol     ebx, 70
00456927  |.  81FB 75533D53 cmp     ebx, 533D5375
0045692D      75 1C         jnz     short 0045694B
0045692F  |.  41            inc     ecx/*标志*/
00456930  |.  83EE 04       sub     esi, 4
00456933  |.  AD            lods    dword ptr [esi]                  ;  前四位
00456934  |.  89C3          mov     ebx, eax
00456936  |.  AD            lods    dword ptr [esi]                  ;  后四位
00456937  |.  C1CB 80       ror     ebx, 80
0045693A  |.  81F3 99990000 xor     ebx, 9999
00456940  |.  31C3          xor     ebx, eax
00456942  |.  81FB 998F3337 cmp     ebx, 37338F99
00456948      75 01         jnz     short 0045694B
0045694A  |.  41            inc     ecx/*标志*/
0045694B  |>  5D            pop     ebp
0045694C  \.  C3            retn
/******************************************************/
分析算法之前我们设两个变量:
L4==后四位注册码
F4==前四位注册码
把上面第一轮的算法翻译成数学公式就是:
(I)
(((((L4 xor 0x37338F99)rol 0x10)xor 0x99990000)rol 0x10+F4)xor 0x99999999)rol 0x10 ==0x533D5375
(II)
(F4 xor 0x00009999) xor L4==0x37338F99
由上面的(I)(II)可得:
(III)
L4==0x37338F99 xor (F4 xor 0x00009999)
再由(I)(III)可得:
(IIII)
(((((F4 xor 0x00009999)rol 0x10)xor 0x99990000)rol 0x10+F4) xor 0x99999999)rol 0x10==0x533D5375
由(IIII)可以看出 F4在第一轮中高低位互相不影响~也就是说 在这里L4 高低位是独立的~
然后我们由(IIII)推出L4  F4的计算公式:
F4=((0x533D5375 rol 0x10)xor 0x99999999)/2
L4=(F4 xor 0x9999)xor 0x37338F99
然后 第一个注册码就是:F4+L4 ==ReveRsER
第二轮的算法相对于第一轮来说没啥好说的~
/******************************************************/

一组Key:

FirstTime:ReveRsER

SecondTime:CraCkiNG

DownMe:KeyGen

逆向反汇编基础之三十五:这个CM的KF不错~

今天这个KEYfile不错~

一段内联的代码…

关键在于当字节是00的判断~

这里用了一种巧妙的 就是让他一直不为0~

szA=szSum;
__asm mov eax,szSum
__asm and eax,0x000000FF
__asm mov szA,eax
szKeyList[14]=szA;
__asm mov eax,szSum
__asm and eax,0x0000FF00
__asm shr eax,8
__asm mov szA,eax
szKeyList[15]=szA;
__asm mov eax,szSum
__asm and eax,0x00FF0000
__asm shr eax,16
__asm mov szA,eax
szKeyList[16]=szA;
__asm mov eax,szSum
__asm and eax,0xFF000000
__asm shr eax,24
__asm mov szA,eax
szKeyList[17]=szA;

DownMe:KeyGen

逆向反汇编基础之三十一:新手级别,弄完上班啊还~

这个CM就像题目一样,这都是新手入门的CM,但是要从每个CM中学到东西,是发现BUG还是发现其中算法的妙处 抑或是发现其中’稀有”ASM指令的使用~

这都是非常有意思的事情~

YOUS  上班去~

一组可以的Key:

ShadowKong

0536861646F774B6F6E67

http://dl.dbank.com/c085aep17a

逆向反汇编研究之二十四:这个CM很委婉

这个CM比较委婉,PHI写的…不知道啥时候养成的习惯~

就是在PHI写的程序遇到CALL的时候直接跳过观察栈堆和内存变化…

看见CALL不跟直接跳悲剧啊…

这个习惯不好  要多多跟进

当然不调试直接A是最好的结果

/***************************************/

一组可用Key:

ShadowKong

170034084450000

http://dl.dbank.com/c0yqbs6mzt

逆向反汇编基础之二十三:SEH(FS 0号)检测发现跟踪就悲剧

这个CM比较特别,加入了FS:[0]SEH检测OD跟踪的功能~

但是我们并不倡导跟踪和调试,要学会把握静态反汇编,所以这对我们无障碍

若真要跟踪,直接把SEH去掉便是~

/*****************************************************/

00401103   .  C705 08304000>mov     dword ptr [403008], 0040112C
0040110D   .  892D 04304000 mov     dword ptr [403004], ebp
00401113   .  68 00104000   push    00401000
00401118   .  64:FF35 00000>push    dword ptr fs:[0]
0040111F   .  8925 00304000 mov     dword ptr [403000], esp
00401125   .  64:8925 00000>mov     dword ptr fs:[0], esp
0040112C   .  64:8F05 00000>pop     dword ptr fs:[0]
00401133   .  83C4 04       add     esp, 4
00401136   .  C705 08304000>mov     dword ptr [403008], 0040116A
00401140   .  892D 04304000 mov     dword ptr [403004], ebp
00401146   .  68 00104000   push    00401000
0040114B   .  64:FF35 00000>push    dword ptr fs:[0]
00401152   .  8925 00304000 mov     dword ptr [403000], esp
00401158   .  64:8925 00000>mov     dword ptr fs:[0], esp
0040115F   .  33DB          xor     ebx, ebx
00401161   .  33D2          xor     edx, edx
00401163   .  B8 02000000   mov     eax, 2
00401168   .  F7F3          div     ebx
0040116A   .  64:8F05 00000>pop     dword ptr fs:[0]

/*****************************************************/

这个CM要注意,隐藏的规定Name长度

一组可以Key:

ShadowKong

b30101b8

http://dl.dbank.com/c0a5szasew