这个CM的关键不在于算法 也不在于算法逆,而是在于认清特别是类似.NET下的程序
栈堆操作依赖性大于寄存器操作~
一个Key:
3210123
可在这串数字后面加任意多个非数字字符~
诸如: 3210123adawdadadffwf
或者是:3210123adawd545451545wadad
光荣在于平淡,艰巨在于漫长
致力于DAsm+C,MASM
这个CM的关键不在于算法 也不在于算法逆,而是在于认清特别是类似.NET下的程序
栈堆操作依赖性大于寄存器操作~
一个Key:
3210123
可在这串数字后面加任意多个非数字字符~
诸如: 3210123adawdadadffwf
或者是:3210123adawd545451545wadad
这个CM比较委婉,PHI写的…不知道啥时候养成的习惯~
就是在PHI写的程序遇到CALL的时候直接跳过观察栈堆和内存变化…
看见CALL不跟直接跳悲剧啊…
这个习惯不好 要多多跟进
当然不调试直接A是最好的结果
/***************************************/
一组可用Key:
ShadowKong
170034084450000
这个CM比较特别,加入了FS:[0]SEH检测OD跟踪的功能~
但是我们并不倡导跟踪和调试,要学会把握静态反汇编,所以这对我们无障碍
若真要跟踪,直接把SEH去掉便是~
/*****************************************************/
/*****************************************************/
这个CM要注意,隐藏的规定Name长度
一组可以Key:
ShadowKong
b30101b8
今天这个CM主要的是算法逆向的问题…一段简单的算法代码:
/************************************************/
其中eax==KeyLen
明显这个CM的验证格式是 f1(Name)==f2(Key);
写注册机的时候f1是非逆,所以f1(Name)的值很容易得到,写注册机的关键是逆f2();
这里的注册机只逆了当NameLen<=0x05的情况….
完美的注册机可以参考这注册机代码后再斟酌斟酌
一组可以Key:
Kong
=416530
注册机f2()逆完全是我个人推算出 和CM本身算法有点小区别
可以在Key前面加任何多个任何字符都OK~
正如标题所言,这个CM仅次于之前的构造:
004xxx01 Call 004xxxx1
004xxx01 cmp EDI,0
004xxx01 JNZ offset[ 悲剧]
……..
……..
004xxxx1 XOR EDI EDI
004xxxx2 NOP
004xxxx3 RETN
机器码小关键CALL的CM,构造机器码的这个CM是迄今为止我觉得最有水平的 虽然可能这个CM的水平一般~但思路非常牛B
今天这个CM的关键算法位置居然是在API MessageBox的跳转过程中嵌入~怎么做到的??一般人肯定不会去跟一个对它非常熟悉的API
就像我第一次肯定不会去跟MessageBox一样..但重要部分恰恰在其中.非常希望能知道作者是怎么办到的~非常高明啊 佩服作者的思维和想法~
/*经过这几天的试验,其实实现这种方式很简单,这涉及API调用的高效和低效的问题
首先 高效的API调用一般都是:
CALL DWORD PTR [ FUNCTION OFFSER IN LAT]
低效的API调用一般是:
CALL @F
@@:
JMP WORD PTR [FUNCTION OFFSET IN LAT]
如果在一个低效的API的JMP前加入算法CALL的话 这就可以实现类似这个CM的情况了~
理论上应该是这样子的 通过修改DASM绝对可以实现 但是通过MASM编程直接实现可能还要委婉一点~
.还最后要说的是 API调用的高效低效 还和约定调用方式有关*/
ShadowKong
16f267241d165BBC694a463A3802694A1a68105A
今天这个CM非常漂亮!很多地方可圈可点啊~今天拿几个地方出来自我欣赏欣赏~
One:
今天的CM是控制台的呵呵~
也算是一种类型了,完全没有API调用(其实API调用也就是封掉了一些东西 或者说MS直接给个函数你用 而不用你自己Dim),虽然是用PHI写的,但估计用0x10Asm写的也这样差不多~
反汇编这类小CM要主意的是.找对关键算法CALL,此CM依然算法简单到鬼一样~
但是其中PHI控制台的编码结构能让人眼前一亮 如果你长时间和各种invoke打交道的话~
但是这不是我今天要说的,我今天要说的是比较底层(16位汇编)的编码取得NameLen(用户名长度)或者KenLen 或者各种Len的问题.
首先看下面一段小代码:
请把地址忽略只看中间0x00405BED到0x00405BDF1部分,如果你经常在您的程序中调用API 你就会知道 这个其实很简单,不就是GetDlgItemTextA/W的返回值么?对的 就是取这个返回值,我们看不用API的情况下是怎么取得的~就是这三句代码,运用搜索SCAS返回NameLen
可见这是逐个判断 然后JNE则+1的~这比直接调用API得到返回值更清晰细腻
知道这个有什么用?一般如果是crackme 而且是反汇编后看不到一大堆API调用的crackme,都会有关于计算这类Len的CALL
在大堆Call中识别出这类Call能帮助你更快速的找到关键算法Call 而没有必要一个一个Call跟进去..好了 就这小目的而已 适合我等菜~
一组可用Key:
ShadowKong
115
如标题,这个CRACKME非常简单…也非常适合我等熟悉反汇编,每日一CrackMe还是必须要做的工作~
呃 今天有点晚呢~
下次争取剪短时间完成!
用了内联反汇编还搞那么慢,实在非常~
一组可用Key:
ShadowKong
643062706f1b3
今天的CM还是一如既往的不难,适合各种练手~
还是一如既往的反汇编直接读写~
今天那平安保险的小妞给我打电话笑死哥了~
请问先生您生日多少呢?
呃`不想告诉你咋办?
#$@$10秒后 请问先生您的生日是多少呢?我们不会打听您的隐私~
呃`不能告诉你咋办?
@$@#$@20秒后 那请问先生您的生日多少呢?
呃~就不告诉你!
!@#@#30秒后 那先生你可以挂电话咯~
呃~靓妹你也可以挂电话了~
电话那头笑趴了~这头也趴了
一组可用KEY:
ShadowKong
ACA0-0193-DAF5-396F
每当接触一种语言或者一个编程构架,无论在那一本书,那一个坛子的教程~
HelloWorld小程序都是开书或者开贴的第一印象~
YOUS 今天刚刚接触ILAsm 来个ILAsm 的HELLOWORLD,
从此,HelloWorld又多了一种写法…
/**********************************************************/
/**********************************************************/
如果你是清风等.net高手,相信一眼遍明白所有指令…
话说ILASM也不错…
可惜我完全不会.NET编程(C# 版HelloWorld除外~)