| 
注册时间2007-2-21
阅读权限40
最后登录1970-1-1UID28352 独步武林  
 
 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老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!谢谢
 -----------------------------------------------------------------------
 【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
 | 
 |