- UID
- 28352
注册时间2007-2-21
阅读权限40
最后登录1970-1-1
独步武林
TA的每日心情 | 开心 2024-5-1 14:44 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
发表于 2007-12-24 11:33:20
|
显示全部楼层
【破文标题】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:[EAX]
0042D4C1 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0042D4C4 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
0042D4C7 |. 8B86 DC010000 MOV EAX,DWORD PTR DS:[ESI+1DC]
0042D4CD |. E8 8EC9FEFF CALL DaNiEl-R.00419E60 ; //将用户名长度送入EAX
0042D4D2 |. 837D F8 00 CMP DWORD PTR SS:[EBP-8],0 ; //将用户名与0比较
0042D4D6 |. 74 14 JE SHORT DaNiEl-R.0042D4EC ; //若相等则跳
0042D4D8 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
0042D4DB |. 8B86 E0010000 MOV EAX,DWORD PTR DS:[ESI+1E0]
0042D4E1 |. E8 7AC9FEFF CALL DaNiEl-R.00419E60 ; //将注册码长度送入EAX
0042D4E6 |. 837D F4 00 CMP DWORD PTR SS:[EBP-C],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:[EBP-8]
0042D503 |. 8B86 DC010000 MOV EAX,DWORD PTR DS:[ESI+1DC]
0042D509 |. E8 52C9FEFF CALL DaNiEl-R.00419E60 ; //将用户名长度送入EAX
0042D50E |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; //将用户名送入EAX
0042D511 |. E8 AA62FDFF CALL DaNiEl-R.004037C0 ; //将用户名长度送入EAX
0042D516 |. 8BF8 MOV EDI,EAX ; //将EAX送入EDI
0042D518 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
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:[EBP-8]
0042D527 |. 8B86 DC010000 |MOV EAX,DWORD PTR DS:[ESI+1DC]
0042D52D |. E8 2EC9FEFF |CALL DaNiEl-R.00419E60 ; //将用户名长度送入EAX
0042D532 |. 8B45 F8 |MOV EAX,DWORD PTR SS:[EBP-8] ; //将用户名送入EAX
0042D535 |. 33D2 |XOR EDX,EDX ; //将EDX清零
0042D537 |. 8A5418 FF |MOV DL,BYTE PTR DS:[EAX+EBX-1] ; //依次将用户名ASCII码16进制送入DL
0042D53B |. 83C2 05 |ADD EDX,5 ; //EDX=EDX+5
0042D53E |. 8D45 F0 |LEA EAX,DWORD PTR SS:[EBP-10]
0042D541 |. E8 A261FDFF |CALL DaNiEl-R.004036E8
0042D546 |. 8B55 F0 |MOV EDX,DWORD PTR SS:[EBP-10]
0042D549 |. 8D45 FC |LEA EAX,DWORD PTR SS:[EBP-4]
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:[EBP-8]
0042D559 |. 8B86 E0010000 MOV EAX,DWORD PTR DS:[ESI+1E0]
0042D55F |. E8 FCC8FEFF CALL DaNiEl-R.00419E60 ; //将注册码长度送入EAX
0042D564 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; //将注册码送入EAX
0042D567 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ; //将真码送入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:[EAX],EDX
0042D58F |. 68 B9D54200 PUSH DaNiEl-R.0042D5B9
0042D594 |> 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
0042D597 |. E8 A85FFDFF CALL DaNiEl-R.00403544
0042D59C |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0042D59F |. BA 02000000 MOV EDX,2
0042D5A4 |. E8 BF5FFDFF CALL DaNiEl-R.00403568
0042D5A9 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
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老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!谢谢
-----------------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! |
|