CrackMe#37:亮点在于lods和stos

这个CM和以往的有点区别~亮点还是有的~

首先PEID查看 有壳~~

我们重点不是这 轻易脱掉

首先这并不是明码比较(很多都不是明码比较..)

其次这是一组Name 和Key混合算法

再其次这个算法的关键在于:

A[i]=F1(Name[i-1])-F2(Key[i-1]);

i=KeyLen+1;

然后循环算出A[KeyLen];

最后再比较~~

总之这个算法不需要逆 但是需要有很好的数学思维 特别是数列和解N个变量的方程函数方面的…

最后这个CM有几处代码非常漂亮:

004013C3    BF 20334000     mov     edi, 00403320
004013C8    BE 20334000     mov     esi, 00403320
004013CD    AC              lods    byte ptr [esi]
004013CE    0C 00           or      al, 0
004013D0    74 05           je      short 004013D7
004013D2    0C 20           or      al, 20
004013D4    AA              stos    byte ptr es:[edi]
004013D5  ^ EB F6           jmp     short 004013CD

如果你有点汇编基础 就看看出这段代码是多么的漂亮~

一组可用Key:

ShadowKong

rg`\e

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的对比是ASCII对比,搞出一堆乱码之类的经常`

不过过程还是OK的~

因为原CM本身有带去NAG的任务 所以给注册机也加个NAG~

总的来说难度很小  简直就是超入门难度了

不过在各种CALL面前要学会抓取最IN的CALL

这估计就是这个CM要我们学会的最主要的东西~

今天公司发慈悲给我等休息  真是主公万岁!

不过这个KeyGen没有加入NameLen最长的限制  所以这个KeyGen是不完美的~

你可以让它变得完美~请直接在16进制工具里修改?

一组可用Key:

http://dl.dbank.com/c0iw2lv13n

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

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

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

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

这个习惯不好  要多多跟进

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

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

一组可用Key:

ShadowKong

170034084450000

http://dl.dbank.com/c0yqbs6mzt