160 CrackMe 004
本帖最后由 Teak 于 2019-3-30 20:41 编辑160Crackme之004
这也叫1星,自我感觉比前面三个还难
1. F9 运行,然后输入账户和密码1111112345 ,如下图所示
2. 可以点击下面的面板,提示说如果注册成功,会显示朱茵小姐姐的靓照,OD里面跟了半天,没找到合适断点,
发现了一个注册成功的字样,如下图所示:
3. 继续反汇编窗口查看该字符串,然后往上查看,如下图所示:
注意红色箭头4580b3这个跳转,在45803b这个地方下断,这是判断的地方,原因是当输入正确的name和serial时才会一步一步执行,
执行有“恭喜恭喜!注册成功”这一步骤,所以我们可以推断,45803b这个地方是判断name和serial是否正确,
输入11111和12345的肯定是错的,所以程序从jnz直接跳转到4580b3,然后什么反应没有,
再次输入,直接nop 替换jnz,得到朱茵女神的靓照如下:
4. 我试了常规方法找了一下注册的断点,还是无解,没办法,拜访了各位大佬的博客,原来这是个delphi语言,
因为报着搞算法的心思来的,所以根本不关心是什么语言,大佬们用了一款dede的反汇编工具,看雪论坛有下载,
不过吾爱破解爱盘也提供了一个反编译工具,其实这俩工具没啥区别,就汉化与否而已,delphi反编译工具的内容如下图所示:
这个程序很简单,就4个事件而已,chkcode多半就是生成算法的地方了,记下位置OD载入查看457c40,
并下断点,F9运行,输入name:11111,再次输入serial,刚输了第一个,
程序立马在457c40处停下来,继续运行到457c88处,反汇编窗口如下:
此时查看堆栈窗口
继续单步
00457C40/.55 push ebp
00457C41|.8BEC mov ebp,esp
00457C43|.51 push ecx
00457C44|.B9 05000000 mov ecx,0x5
00457C49|>6A 00 /push 0x0 ;循环
00457C4B|.6A 00 |push 0x0
00457C4D|.49 |dec ecx
00457C4E|.^ 75 F9 \jnz short CKme.00457C49
00457C50|.51 push ecx
00457C51|.874D FC xchg ,ecx ;ecx=12fe48 ="1"
00457C54|.53 push ebx
00457C55|.56 push esi
00457C56|.8BD8 mov ebx,eax ;CKme.00457CA9
00457C58|.33C0 xor eax,eax ;CKme.00457CA9
00457C5A|.55 push ebp
00457C5B|.68 3D7E4500 push CKme.00457E3D
00457C60|.64:FF30 push dword ptr fs:
00457C63|.64:8920 mov dword ptr fs:,esp
00457C66|.8BB3 F8020000 mov esi,dword ptr ds: ;esi=5 len(11111)+5=10 可以输入name来验证
00457C6C|.83C6 05 add esi,0x5 ;esi=5+5=A
00457C6F|.FFB3 10030000 push dword ptr ds: ;=961f70 ="黑头Sun Bird"
00457C75|.8D55 F8 lea edx, ;edx=12fc90
00457C78|.8BC6 mov eax,esi ;eax=A
00457C7A|.E8 85FEFAFF call CKme.00407B04 ;eax=12fc90 =10 ecx=A,将A转化成10
00457C7F|.FF75 F8 push
00457C82|.FFB3 14030000 push dword ptr ds: ;=961f8c ="dseloffc-012-OK"
00457C88|.8D55 F4 lea edx, ;edx=12fc8c
00457C8B|.8B83 D4020000 mov eax,dword ptr ds: ;eax=964c10 ="聪A"
00457C91|.E8 B2B6FCFF call CKme.00423348 ;eax=5
00457C96|.FF75 F4 push ;12fc8c ="11111"
00457C99|.8D83 18030000 lea eax,dword ptr ds: ;eax=961cd8
00457C9F|.BA 04000000 mov edx,0x4 ;edx=4
00457CA4|.E8 93BFFAFF call CKme.00403C3C ;连接字符串的作用=962024 ="黑头Sun Bird10dseloffc-012-OK11111"
00457CA9|.33D2 xor edx,edx ;edx=0
00457CAB|.8B83 F4020000 mov eax,dword ptr ds: ;eax=96477c ="HPB"
然后返回程序将00457CA4得到的数据输入到程序中去,因为参考了大佬们的资料,知道这玩意儿肯定是密钥了,不过写成这样在不知道的情况下估计也是密钥,我也会去试,面板那儿就是坑,我是瞎点几下才显示的照片。后来又去查了几篇文章,才知道是作者留下的坑。
算法大概如下:
Py3
name=input("请随便输入一个账户,如11111:")
s1=len(name)+5
s2="黑头Sun Bird"+str(s1)+"dseloffc-012-OK"+name
print("Serial是: "+s2)
謝謝提供好好學習一下 不愧是大佬~ 真的很厉害的帖子,赞一个! 学习了,谢谢 学习一波~谢谢提供 不错,学习了 谢谢分享。萌新学习中 大佬大佬 学习一下~
页:
[1]
2