第一个作业_CrackMe,欢迎大家指点。
本帖最后由 ssb 于 2010-12-6 09:42 编辑初学易语言,凑了第一个作业----一个不完善粗陋的CrackMe,请大家指点完善。
作业写得很粗,没有容错,没有测试,请大家谅解!
语言:易语言静态编译
保护:注册码、无壳、无压缩
说明:CrackMe没有任何反调试、暂没有使用特征码、不防爆破、请朋友们提供一组能正常注册成功的用户名+注册码即可。
不知道是否存在内存明码比较的问题?
本帖最后由 lkou 于 2010-12-7 16:04 编辑
研究算法神马的最头疼了
看看有没有懂的人
明码给MD5了 00403037 837D FC 01 CMP DWORD PTR SS:,1
0040303B 0F85 39000000 JNZ CrackMe.0040307A
00403041 837D F8 01 CMP DWORD PTR SS:,1
00403045 0F85 2F000000 JNZ CrackMe.0040307A
0040304B 837D F4 01 CMP DWORD PTR SS:,1
0040304F 0F85 25000000 JNZ CrackMe.0040307A
00403055 837D F0 01 CMP DWORD PTR SS:,1
00403059 0F85 1B000000 JNZ CrackMe.0040307A
0040305F 837D EC 01 CMP DWORD PTR SS:,1
00403063 0F85 11000000 JNZ CrackMe.0040307A
00403069 837D E8 01 CMP DWORD PTR SS:,1
0040306D /0F85 07000000 JNZ CrackMe.0040307A
00403073 |B8 01000000 MOV EAX,1
判断变量,MOV EAX,1时 就是注册成功了
00402CB7|> \837D CC 00 CMP DWORD PTR SS:,0
00402CBB|.0F84 0C000000 JE CrackMe.00402CCD
00402CC1|.C745 F4 01000>MOV DWORD PTR SS:,1
赋值变量
00402C89|.83F8 00 CMP EAX,0
00402C8C|.B8 00000000 MOV EAX,0
00402C91|.0F94C0 SETE AL
00402C94|.8945 CC MOV DWORD PTR SS:,EAX
但前面这段代码 MOV EAX,0
然后0赋值给了 变量
JE CrackMe.00402CCD 这个肯定跳了
那MOV DWORD PTR SS:,1 这个肯定不会执行了
这怎么算下去呢? 要么楼主代码写错了?要么是我看错了?楼主给个正确的答案 看看? 应该没错吧!程序分段比较的。
软件爆破很简单,不防爆破,特征码也不参与运算,破解成功的标志是提供一组可以注册成功的注册码即可,另外想检测一下是否存在内存明码比较的漏洞。
提供一组可用于注册的注册码:
用户名:bbyl
注册码:95EA7CAD8A57E8073F6F258FC53AC5694D666620BECB394E12E94ABC45DE127103B00BB80FDF0A88729A8
注册成功后截图: 本帖最后由 ssb 于 2010-12-8 13:36 编辑
回复 2# lkou
呵呵!这么快就搞定啦!还加vm了吗?是爆破?还是patch?还请指教! 你内存里面有明码比较,但是MD5了,所以直接爆了标志位 你内存里面有明码比较,但是MD5了,所以直接爆了标志位
lkou 发表于 2010-12-8 13:55 http://www.52pojie.cn/images/common/back.gif
那请教如何才能避免内存明码比较呢?另外除了vm外还有别的办法防止爆破吗? 逆向算法,不是主动算出正确的码,而是用输入码进行逆向就行了,反正么有注册系统的就是杯具,看别人找的到找不到标志位了,爆了你的标志位,你再复杂的算法也没用
VM是个好办法
页:
[1]
2