大家好,我是BCG的成员,新手们如果想试试身手的话,可以到
现发布第四期地址:(crackme专辑)
9f2K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3!0#2L8h3g2F1k6#2)9J5k6h3!0J5k6#2)9J5c8X3y4J5j5h3y4C8k6$3q4E0k6g2)9J5c8X3W2F1k6r3g2^5i4K6u0W2K9s2c8E0L8l9`.`.
来一试身手,这是华夏举行的crackme专集。
对于初学者来说难度不算很大哦~~~
看看hacker界和crack界谁厉害~~~
哈哈~~~
是不是心动了呢。。。。
呵呵。。这次没那么容易了。。要分析算法了。。不过。。很高兴。。
我终于可以发挥了。。看雪学院。。通过者。。跟fly学脱壳这么久。。
哈哈。。学以致用了。。
BCG成员
我说说的算出来的6位号为每次过关后,用给的name算的key
呵呵~~
论坛ID:qxtianlong
算出的6位号:50122
第一关:77169(这个和算出来的key无关)
程序语言VB6
工具:OD
关键点:__vbaStrMove __vbaStrCmp _rtcmsgbox下断点
明码比较的比较容易,F7、F8跟都可以同时注意积存器的值和堆栈的值
下断时注意一下手法,当然了很简单的主要是领空的问题
第二关:40121570/84516779(这个是用算出来的6位号算出来的)
程序语言DELPHI
name:124315391
算出的6位号:347574
工具:W32、OD
关键点:通过W32字符串参考、00467884下断、然后004678f0、004678fd、00467906、0046790b
注意积存器尤其是EDX、EAX还是明码比较只不过Delphi比VB的稍微难点、不过认真一点就可以了
这种相对简单的不需要DEDE来分析OD动态分析就可以了
第三关:77huaxia169
程序语言:AS
name:huaxia
算出的6位号:156479
工具:exe2swf、硕思闪客精灵 2002 MX 专业中文破解版
关键点:on (release)
{
if (77 + name + 169 == key)
{
gotoAndStop(2);
}
else
{
gotoAndStop(3);
} // end if
}
第四关:2006250(和算出来的key无关)
程序语言:VC++6
name:123456
算出来的6位号:347569
工具:C32、OD
关键点:00401a79、00401a7e、00401a81下断点
00401a92成功处、00401aa2失败处
00401a84关键比较00401a87跳转处
原码为EDX,自己的码为EAX
EDX,EAX比较EAX传给了ebp-20只要把ebp-20在堆栈中改为0004F1F1
其中EDX是ebp-1c传给的,只要他们相等了就可以看到真码了
为什么呢??因为add eax,1E240
0004F1F1是324081 1E240是123456也就是注册名
他们相减就是原来的值除10后的值
为什么这么说呢??因为mov ecx,0A
idiv ecx
只要我们再乘10就得到注册码了
调向了注册成功处。。。
如果是爆破的话就容易多了。。。
下面就总结一下算法了:
注册码/0A+1E240=0004F1F1(十六进制)
注册码/10+123456=324081(十进制)
第五关:7777777777(和6位号无关)
程序语言:DELPHI
name:372852712
算出来的六位号:335268
工具C32、OD
关键点:下断点00467828、00467846看标志Z
第六关:77254995
程序语言:vb6
name:38588913
算出来的6位号:335423
关键点:
当然这个是经验积累的还有就是不断的调程序和遇到挫折后的总结
VB程序一般只要用OD下断点rtcmsgbox一般都可以断下来、F9运行程序断在系统领空、然后ctrl+f9返回
出现,确认后f8返回到程序领空就是错误处了。
我们向上找来到
0040A1B0设置断点、先看看0040A3D6和0040A3DB是两处关键比较比的是什么?
0040A3C0 8BF0 mov esi,eax
0040A3C2 8955 DC mov dword ptr ss:[ebp-24],edx
0040A3C5 FF15 B0104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0040A3CB 8D4D D0 lea ecx,dword ptr ss:[ebp-30]
0040A3CE FF15 AC104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>] ; MSVBVM60.__vbaFreeObj
0040A3D4 3BFE cmp edi,esi
0040A3D6 75 7D jnz short 6c.0040A455
0040A3D8 3B5D DC cmp ebx,dword ptr ss:[ebp-24]
0040A3DB 75 78 jnz short 6c.0040A455
只要有汇编基础的都能看出来、通过积存器EDI、ESI、EAX、EBP、EDX的值是可以分析出来这段代码的。
cmp edi,esi(eax的值)
cmp ebx,ss:[ebp-24](edx的值)
对了,只有这两个都满足了才能到成功处的(如果爆破的话,知道该怎么做了吧)
从0040A1B0开始F8如果有怀疑的就F7进去看看,0040A24B用户名被装入到EAX
算法如下:
#include <stdio.h>
void main()
{
char name[10];
printf("你好:");
scanf("%s",name);
printf("欢迎进入Visual C++.Net的世界\n");
int user=38588913;//此处直接赋值为用户名
int flag=77169,n=0;
unsigned long pass=0;//最终的KEY
unsigned long ll1=unsigned long((user*10000) % 4294967296);
//“% 4294967296”即是取16进制后8位
ll1=unsigned long((ll1*2)% 4294967296) ;
unsigned long ll2=unsigned long((flag*10000) % 4294967296);
unsigned long ll3=ll1+ll2;
while(n<10000) //10000这个数是我自己定的,估计够用了
{ if((ll3+n*4294967296)%10000==0)
{ pass=unsigned long((ll3+n*4294967296)/10000);
break;
}
n++;
}
printf("%u",pass);
}
这一关参考了VampireC的过关,因为我的也和他的一样只不过变量名不同而已。。
第7关:leve7
程序语言:vc
name:无(要玩到足够分啊)
其实也可以破解的,但是我想玩玩。。嘿嘿~~
晕死。。我还是玩不了那么多分啊。。没办法了爆破了。。
在004017AA下断点,上面和7530做比较也就是30000
jge改为jnge运行跟踪就可以看到KEY了
其实也可以看提示的******小于就看到这个,调过了leve7那就是大于就可以看到这个
通过这个也可以判断出来的
第八关:152448380
程序语言:VC
NAME:59280880
不算KEY了我说的KEY是用每一关给的NAME,用KEY算的6位号
做了几关感觉和这个没有关系也就不算了
关键点:
我想这个要下写注册表的断点了,程序给的提示。。。
第九关:016483
程序语言:MASM v8.0 ,RadASM 2.202
name:180346
关键点:
第十关:314068
程序语言:MASM v8.0 ,RadASM 2.202
name:180346
关键点:程序带壳,先脱壳吧
我挺忙的。。八、九、十先暂时不写攻略了。。以后补上了。。。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课