- UID
- 3169
注册时间2005-9-17
阅读权限20
最后登录1970-1-1
以武会友
该用户从未签到
|
【破文作者】qxtianlong
【所属组织】无
【作者主页】http://qxtianlong.77169.com
【 E-mail 】[email protected]
【 作者QQ 】249935058
【文章题目】Crackme 的详解
【软件名称】中国飘云阁(DFCG图标资源Crackme2.0)
【下载地址】
【加密方式】序列号
【加壳方式】
【破解工具】OD, W32
【软件限制】无
【破解平台】wxp
=======================================================================================================
【软件简介】
Crackme生存的唯一目的就是让我们练手之用!
=======================================================================================================
【文章简介】
我的破解很菜,写这篇东西是给对这个 crackme 有兴趣的兄弟们,分享一下破解心得
=======================================================================================================
【解密过程】
由于比较简单和我以前分析的类型相似就不详细分析了,如果你认真看了,这个应该没有问题的,只把大概思路说一下!!!!
1、输入试练码qxtianlong,1234567890,确认后无提示,说明作者不想让你用断点拦截消息API
2、FI查壳无壳,显示VB程序,VBParser载入失败不是P-CODE程序
3、使用W32载入无字符串参考,查输入函数看看有没有有用的信息
4、使用OD下断点
5、进一步分析
6、整理算法写出注册机
以上是我一般的思路,当然肯定有不对之处*_*偶是菜鸟嘛~~
我选择的断点有两个bp __vbaLenBstr,bp __vbaStrCmp
使用第一个断点马上断在
660248CB M> 8B4424 04 mov eax,dword ptr ss:[esp+4]//注意堆栈和寄存器提示
660248CF 85C0 test eax,eax
660248D1 74 05 je short MSVBVM60.660248D8
660248D3 8B40 FC mov eax,dword ptr ds:[eax-4]
660248D6 D1E8 shr eax,1
660248D8 C2 0400 retn 4
剩下就留给你们自己分析吧~~
用第二个断点马上断在
66024710 M> FF7424 08 push dword ptr ss:[esp+8]//注意看堆栈
66024714 FF7424 08 push dword ptr ss:[esp+8]
66024718 6A 00 push 0
6602471A E8 03000000 call MSVBVM60.__vbaStrComp
6602471F C2 0800 retn 8
爆破的话可以在这里
00402D57 FFD3 call ebx
00402D59 66:85F6 test si,si
00402D5C /0F84 9B000000 je crackme2.00402DFD//改为jne就可以啦~~
算法很简单应该是把用户名的每一位ASC*2+0xA然后循环用户名位数,再加上0xB437027
算法注册机:我没有做任何优化和检查,高手不要笑厄~~
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
char name[50];
unsigned long reg;
int i,temp,color;
for(color=9;color<10;color++)
{
textcolor(color);
cprintf("*************************\r\n");
cprintf(" Keyken by qxtianlong\r\n");
cprintf(" 2005 - 10 - 31 21:35 \r\n");
cprintf("*************************\r\n");
cprintf("Please enter your name:");
}
scanf("%s",name);
reg=0;
temp=strlen(name);
for(i=0;i<temp;i++)
{
reg+=(2*name)+0xA;
}
for(color=10;color<11;color++)
{
textcolor(color);
cprintf("Your Key is:%lu\r\n",reg+0xB437027);
}
getch();
}
【解密心得】
=======================================================================================================
【破解声明】我是一个小小菜虫子,文章如有错误,请高手指正!
【版权声明】本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
=======================================================================================================
[ Last edited by qxtianlong on 2005-10-31 at 09:51 PM ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入我们
x
|