第一篇爆破手记,与大家分享下子
【破文标题】第一篇爆破手记,与大家分享下子【破文作者】gtboy
【作者邮箱】[email protected]
【作者主页】无,我很懒也很菜
【破解工具】peid0.94,flyOD
【破解平台】WinXp
【软件名称】DaNiEl-RJ.1
【软件大小】216 KB
【原版下载】看雪的crackme2007合集 序列号里面
【保护方式】无壳,序列号
【软件简介】一个很简单的crackme
【破解声明】
------------------------------------------------------------------------
【破解过程】第一篇爆破手记,与大家分享下子
没有什么技术含量的,看了n多视频教学后信心倍增,就从看雪的crackme2007里面拉出一只来
人品不错,很简单的一个哦,声明下子,我没有提前看分析,就保存在本地了
peid查壳,没有加,那就直接od呗
跑了下,点下菜单的about才能看到破解的,也没有心情去修改了,直接输入
用户名:gtboy
注册码:1234567890
提示“no no,try again",用插件查找字符串,不知为什么,开始查的时候插件报错,od也就关了,不知是不是因为加了空格的缘故,再开下od,找到后就定位到地方
把关键的东西贴出来
0042D4CD|.E8 8EC9FEFF CALL DaNiEl-R.00419E60 ;取用户名
0042D4D2|.837D F8 00 CMP DWORD PTR SS:,0 ;与0比较,确认是否输入
0042D4D6|.74 14 JE SHORT DaNiEl-R.0042D4EC
0042D4D8|.8D55 F4 LEA EDX,DWORD PTR SS:
0042D4DB|.8B86 E0010000 MOV EAX,DWORD PTR DS:
0042D4E1|.E8 7AC9FEFF CALL DaNiEl-R.00419E60 ;取假码
0042D4E6|.837D F4 00 CMP DWORD PTR SS:,0 ;确认输入了注册码
0042D4EA|.75 0F JNZ SHORT DaNiEl-R.0042D4FB ;啥都不输就弹出下面的东东,想爆破的彻底就把这里也改了吧
0042D4EC|>B8 C8D54200 MOV EAX,DaNiEl-R.0042D5C8 ;ASCII "One of the fields is empty!"
0042D4F1|.E8 02FCFFFF CALL DaNiEl-R.0042D0F8
0042D4F6|.E9 8C000000 JMP DaNiEl-R.0042D587
0042D4FB|>BB 01000000 MOV EBX,1
0042D500|.8D55 F8 LEA EDX,DWORD PTR SS:
0042D503|.8B86 DC010000 MOV EAX,DWORD PTR DS:
0042D509|.E8 52C9FEFF CALL DaNiEl-R.00419E60
0042D50E|.8B45 F8 MOV EAX,DWORD PTR SS: ;eax为用户名
0042D511|.E8 AA62FDFF CALL DaNiEl-R.004037C0 ;取用户名长度
0042D516|.8BF8 MOV EDI,EAX
0042D518|.8D45 FC LEA EAX,DWORD PTR SS: ;用户名长度
0042D51B|.E8 2460FDFF CALL DaNiEl-R.00403544
0042D520|.3BFB CMP EDI,EBX ;用户名必须大于一
0042D522|.7C 32 JL SHORT DaNiEl-R.0042D556
0042D524|>8D55 F8 /LEA EDX,DWORD PTR SS: ;该程序段把用户名依次取出之后运算,我很菜,也没有怎么跟算法
0042D527|.8B86 DC010000 |MOV EAX,DWORD PTR DS:
0042D52D|.E8 2EC9FEFF |CALL DaNiEl-R.00419E60
0042D532|.8B45 F8 |MOV EAX,DWORD PTR SS: ;eax为用户名
0042D535|.33D2 |XOR EDX,EDX
0042D537|.8A5418 FF |MOV DL,BYTE PTR DS:
0042D53B|.83C2 05 |ADD EDX,5 ;把ascii值加五
0042D53E|.8D45 F0 |LEA EAX,DWORD PTR SS:
0042D541|.E8 A261FDFF |CALL DaNiEl-R.004036E8
0042D546|.8B55 F0 |MOV EDX,DWORD PTR SS:
0042D549|.8D45 FC |LEA EAX,DWORD PTR SS:
0042D54C|.E8 7762FDFF |CALL DaNiEl-R.004037C8
0042D551|.43 |INC EBX
0042D552|.3BFB |CMP EDI,EBX ;是否算完
0042D554|.^ 7D CE \JGE SHORT DaNiEl-R.0042D524 ;没有就继续下一位
0042D556|>8D55 F8 LEA EDX,DWORD PTR SS:
0042D559|.8B86 E0010000 MOV EAX,DWORD PTR DS:
0042D55F|.E8 FCC8FEFF CALL DaNiEl-R.00419E60
0042D564|.8B45 F8 MOV EAX,DWORD PTR SS: ;把假码放入eax
0042D567|.8B55 FC MOV EDX,DWORD PTR SS: ;edx中就是真码,呵呵,明码比较啊
0042D56A E8 6163FDFF CALL DaNiEl-R.004038D0
0042D56F 75 0C JNZ SHORT DaNiEl-R.0042D57D ;爆破的话就直接nop掉吧,呵呵
0042D571 B8 ECD54200 MOV EAX,DaNiEl-R.0042D5EC ;Congratz cracker! hehehe
0042D576 E8 7DFBFFFF CALL DaNiEl-R.0042D0F8
0042D57B EB 0A JMP SHORT DaNiEl-R.0042D587
0042D57D|>B8 10D64200 MOV EAX,DaNiEl-R.0042D610 ;ASCII "No no no! :( Try again!"
0042D582|.E8 71FBFFFF CALL DaNiEl-R.0042D0F8
查看edx中的值为lygt~,就是我的注册码啦。前面还爆破了下一只老虎的一个crackme,汇编不怎么样,开始还奇怪,nop了2个改了一个跳转才注册成功,后来一看别人的分析,原来是用户名和注册码都要比11多,比24少。
目前自己还只会爆破,像我一样的菜鸟也练习下子吧,看雪的里面的分析比我写的要好,不过这是自己第一次比较完整的分析,就斗胆贴出来了,还望大家不要仍西红柿啊,(*^__^*) 嘻嘻……
版主大哥对不起啊,刚按错键了,不小心按成回车了,等下我下个编辑工具,弄好了会再编辑下的,还望版主见谅
------------------------------------------------------------------------
【破解总结】很简单的一个crackme,适合增加我们的信心,呵呵
要进一步的学习好汇编,多练习
------------------------------------------------------------------------
【版权声明】支持pyg,呵呵,再次向版主道歉,局域网不知谁中了arp病毒,网都快瘫了,刚弄好
[ 本帖最后由 gtboy 于 2007-12-23 14:46 编辑 ] 按照破文的形式发布可以吗?? 支持
我找了这个很久啦 支持多多分享.. 【破文标题】DaNiEl-RJ.1破文
【破文作者】tianxj
【作者主页】无
【破解工具】PEiD,OD
【破解平台】Windows XP
【软件名称】DaNiEl-RJ.1
【原版下载】见第1楼
【保护方式】注册码
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
------------------------------------------------------------------------
【破解内容】
------------------------------------------------------------------------
**********************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
**********************************************************************
二、用PEiD对这个软件查壳,为 Borland Delphi 3.0
**********************************************************************
三、运行OD,打开DaNiEl-RJ.1,右键—超级字串参考—查找ASCII.
找到“ZZZZZZ”了,双击,来到
0042D4A8/.55 PUSH EBP
0042D4A9|.8BEC MOV EBP,ESP
0042D4AB|.33C9 XOR ECX,ECX
0042D4AD|.51 PUSH ECX
0042D4AE|.51 PUSH ECX
0042D4AF|.51 PUSH ECX
0042D4B0|.51 PUSH ECX
0042D4B1|.53 PUSH EBX
0042D4B2|.56 PUSH ESI
0042D4B3|.57 PUSH EDI
0042D4B4|.8BF0 MOV ESI,EAX
0042D4B6|.33C0 XOR EAX,EAX
0042D4B8|.55 PUSH EBP
0042D4B9|.68 B2D54200 PUSH DaNiEl-R.0042D5B2
0042D4BE|.64:FF30 PUSH DWORD PTR FS:
0042D4C1|.64:8920 MOV DWORD PTR FS:,ESP
0042D4C4|.8D55 F8 LEA EDX,DWORD PTR SS:
0042D4C7|.8B86 DC010000 MOV EAX,DWORD PTR DS:
0042D4CD|.E8 8EC9FEFF CALL DaNiEl-R.00419E60 ;//将用户名长度送入EAX
0042D4D2|.837D F8 00 CMP DWORD PTR SS:,0 ;//将用户名与0比较
0042D4D6|.74 14 JE SHORT DaNiEl-R.0042D4EC ;//若相等则跳
0042D4D8|.8D55 F4 LEA EDX,DWORD PTR SS:
0042D4DB|.8B86 E0010000 MOV EAX,DWORD PTR DS:
0042D4E1|.E8 7AC9FEFF CALL DaNiEl-R.00419E60 ;//将注册码长度送入EAX
0042D4E6|.837D F4 00 CMP DWORD PTR SS:,0 ;//将注册码与0比较
0042D4EA|.75 0F JNZ SHORT DaNiEl-R.0042D4FB ;//若不相等则跳
0042D4EC|>B8 C8D54200 MOV EAX,DaNiEl-R.0042D5C8 ;one of the fields is empty!
0042D4F1|.E8 02FCFFFF CALL DaNiEl-R.0042D0F8
0042D4F6|.E9 8C000000 JMP DaNiEl-R.0042D587
0042D4FB|>BB 01000000 MOV EBX,1 ;//将1送入EBX
0042D500|.8D55 F8 LEA EDX,DWORD PTR SS:
0042D503|.8B86 DC010000 MOV EAX,DWORD PTR DS:
0042D509|.E8 52C9FEFF CALL DaNiEl-R.00419E60 ;//将用户名长度送入EAX
0042D50E|.8B45 F8 MOV EAX,DWORD PTR SS: ;//将用户名送入EAX
0042D511|.E8 AA62FDFF CALL DaNiEl-R.004037C0 ;//将用户名长度送入EAX
0042D516|.8BF8 MOV EDI,EAX ;//将EAX送入EDI
0042D518|.8D45 FC LEA EAX,DWORD PTR SS:
0042D51B|.E8 2460FDFF CALL DaNiEl-R.00403544 ;//将EDX清零
0042D520|.3BFB CMP EDI,EBX ;//将EDI与EBX比较
0042D522|.7C 32 JL SHORT DaNiEl-R.0042D556 ;//若小于则跳
0042D524|>8D55 F8 /LEA EDX,DWORD PTR SS:
0042D527|.8B86 DC010000 |MOV EAX,DWORD PTR DS:
0042D52D|.E8 2EC9FEFF |CALL DaNiEl-R.00419E60 ;//将用户名长度送入EAX
0042D532|.8B45 F8 |MOV EAX,DWORD PTR SS: ;//将用户名送入EAX
0042D535|.33D2 |XOR EDX,EDX ;//将EDX清零
0042D537|.8A5418 FF |MOV DL,BYTE PTR DS: ;//依次将用户名ASCII码16进制送入DL
0042D53B|.83C2 05 |ADD EDX,5 ;//EDX=EDX+5
0042D53E|.8D45 F0 |LEA EAX,DWORD PTR SS:
0042D541|.E8 A261FDFF |CALL DaNiEl-R.004036E8
0042D546|.8B55 F0 |MOV EDX,DWORD PTR SS:
0042D549|.8D45 FC |LEA EAX,DWORD PTR SS:
0042D54C|.E8 7762FDFF |CALL DaNiEl-R.004037C8
0042D551|.43 |INC EBX ;//EBX=EBX+1
0042D552|.3BFB |CMP EDI,EBX ;//将EDI与EBX比较
0042D554|.^ 7D CE \JGE SHORT DaNiEl-R.0042D524 ;//若大于等于则跳
0042D556|>8D55 F8 LEA EDX,DWORD PTR SS:
0042D559|.8B86 E0010000 MOV EAX,DWORD PTR DS:
0042D55F|.E8 FCC8FEFF CALL DaNiEl-R.00419E60 ;//将注册码长度送入EAX
0042D564|.8B45 F8 MOV EAX,DWORD PTR SS: ;//将注册码送入EAX
0042D567|.8B55 FC MOV EDX,DWORD PTR SS: ;//将真码送入EDX
0042D56A|.E8 6163FDFF CALL DaNiEl-R.004038D0 ;//比较CALL,EAX为假码,EDX为真码
0042D56F|.75 0C JNZ SHORT DaNiEl-R.0042D57D ;//关键跳转
0042D571|.B8 ECD54200 MOV EAX,DaNiEl-R.0042D5EC ;congratz cracker! hehehe
0042D576|.E8 7DFBFFFF CALL DaNiEl-R.0042D0F8
0042D57B|.EB 0A JMP SHORT DaNiEl-R.0042D587
0042D57D|>B8 10D64200 MOV EAX,DaNiEl-R.0042D610 ;no no no! :( try again!
0042D582|.E8 71FBFFFF CALL DaNiEl-R.0042D0F8
0042D587|>33C0 XOR EAX,EAX
0042D589|.5A POP EDX
0042D58A|.59 POP ECX
0042D58B|.59 POP ECX
0042D58C|.64:8910 MOV DWORD PTR FS:,EDX
0042D58F|.68 B9D54200 PUSH DaNiEl-R.0042D5B9
0042D594|>8D45 F0 LEA EAX,DWORD PTR SS:
0042D597|.E8 A85FFDFF CALL DaNiEl-R.00403544
0042D59C|.8D45 F4 LEA EAX,DWORD PTR SS:
0042D59F|.BA 02000000 MOV EDX,2
0042D5A4|.E8 BF5FFDFF CALL DaNiEl-R.00403568
0042D5A9|.8D45 FC LEA EAX,DWORD PTR SS:
0042D5AC|.E8 935FFDFF CALL DaNiEl-R.00403544
0042D5B1\.C3 RETN
0042D5B2 .^ E9 315AFDFF JMP DaNiEl-R.00402FE8
0042D5B7 .^ EB DB JMP SHORT DaNiEl-R.0042D594
0042D5B9 .5F POP EDI
0042D5BA .5E POP ESI
0042D5BB .5B POP EBX
0042D5BC .8BE5 MOV ESP,EBP
0042D5BE .5D POP EBP
0042D5BF .C3 RETN
**********************************************************************
【破解总结】
----------------------------------------------------------------------
【算法总结】
依次将用户名转ASCII码16进制后加5再转成字符
----------------------------------------------------------------------
【算法注册机】
VB代码
Private Sub Command1_Click()
If Text1.Text = "" Then
Text2.Text = "输入有误,请重新输入!"
Else
For i = 1 To Len(Text1.Text)
a = a & Chr(Asc(Mid(Text1.Text, i, 1)) + 5)
Next i
Text2.Text = a
End If
End Sub
----------------------------------------------------------------------
【内存注册机】
中断地址 42D56A
中断次数 1
第一字节 E8
指令长度 5
内存方式-寄存器-EDX
----------------------------------------------------------------------
【爆破地址】
0042D56F|.75 0C JNZ SHORT DaNiEl-R.0042D57D
将JNZ改为JE
----------------------------------------------------------------------
【注册信息】
用户名:abcdef
注册码:fghijk
-----------------------------------------------------------------------
希望以后可以在猫老大和PYG 5.4Cracker学习小组的帮助下进一步提高自己。
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!谢谢
-----------------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! 呵呵,比较简单 还是版主的功力深厚啊~~~~~~~~~~~~佩服!!!!
内存注册机和注册机源码都给了出来了,才发现自己很猪猪的,这个算法竟然没有看懂啊~~~~~
当时激动的只记得爆破了
继续学习中,感谢版主的帮助,学习了~~~~~ 原帖由 gtboy 于 2007-12-24 16:20 发表 https://www.chinapyg.com/images/common/back.gif
还是版主的功力深厚啊~~~~~~~~~~~~佩服!!!!
内存注册机和注册机源码都给了出来了,才发现自己很猪猪的,这个算法竟然没有看懂啊~~~~~
当时激动的只记得爆破了
继续学习中,感谢版主的帮助,学习了~~~~~
都是一点一点学起来的,支持破解学习:loveliness: 谢谢分享啰!!!有些心得!
页:
[1]