破解之Delphi专辑

鉴于OD在Delphi反汇编这一块的薄弱,狠狠研究了下当前的手段。

大家常用的反编译除了OD(ollydebug)、IDA,还有Delphi用的Dede,C#用的NetReflector,还有几个跟踪易语言的。其实反汇编的利器还有很多,在吾爱云盘中收录了:

AS3.Sorcerer.v2.72.CracKed.By.REPT.7z              28-Mar-2014 10:59      5M
C32Asm.rar                                         28-Dec-2013 14:52      1M
DJ.Java.Decompiler.v3.12.12.96-CRD.rar             28-Dec-2013 14:53      7M
Hex-Rays.IDA.Pro.Advanced.v6.1.rar                 28-Dec-2013 14:53    106M
Hopper Disassembler v2.7.13 For Windows.rar        28-Dec-2013 14:52     26M
IDA Pro Advanced 5.5 with Hex-Rays 1.1.rar         28-Dec-2013 14:52     88M
IDR (Interactive Delphi Reconstructor).rar         28-Dec-2013 14:52     54M
SWFDecompiler.rar                                  28-Dec-2013 14:52     12M
VB.Decompiler.Pro.v8.3.RETAIL.INCL_KEYGEN+PATCH..> 28-Dec-2013 14:53      6M
VB.Decompiler.Pro.v9.2.RETAIL.BY-1ST.INCL_KEYGE..> 28-Dec-2013 14:52      5M
Yogda.1.0.564.zip                                  28-Dec-2013 14:52      4M

我们可能不是总能用到,但是遇到一些不常见的程序时,他们往往能排上大用处。

这次要用到的就是IDR,它和xxx(忘了,明天补上)都是针对Delphi反编译的利器,相对于Dede对于高版本Delphi的无力,他们两个就算是很强大了!在网上搜索发现,IDR有专门的网站,并且最近做了一次更新,所以,毫无疑问地选择了它。

新版本下载地址:http://pan.baidu.com/s/1xUWOY  密码: jbnq   文件名为:IDR_exe.7z

程序界面如下:

这里我们接着使用IDR分析ajj.2脱壳后的程序。

首先,直接将脱壳后的CKme002.exe拖到IDR界面上,提示:use native knowledge base? 直接点【是】,然后等待它分析完毕。

双击左侧列表中最后的CKme单元,在下面的框中会出现这个单元所有的事件和特殊信息,双击每行就可以在右上侧看到反汇编信息。在列表中我们可以看 到TForm1.FormCreate的窗体创建信息,TForm1.Button1MouseDown按钮1的鼠标按下消息等….

我们可以随意查看,当看到 CKme::TForm1.Edit2DblClick 你是不是觉得很可疑?

IDR反汇编信息如下(代码比较多,只给出部分):


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

CKme::TForm1.Edit2DblClick

 00446FF8    push       ebp

 00446FF9    mov        ebp,esp

 00446FFB    xor        ecx,ecx

 00446FFD    push       ecx

 00446FFE    push       ecx

 00446FFF    push       ecx

 00447000    push       ecx

 00447001    push       ecx

 00447002    push       ebx

 00447003    mov        ebx,eax

 00447005    xor        eax,eax

 00447007    push       ebp

 00447008    push       4470DF

 0044700D    push       dword ptr fs:[eax]

 00447010    mov        dword ptr fs:[eax],esp

 00447013    lea        edx,[ebp-4]

 00447016    mov        eax,dword ptr [ebx+2F0]; TForm1.Edit2:TEdit

 0044701C    call       TControl.GetText

 00447021    mov        eax,dword ptr [ebp-4]

 00447024    call       @LStrLen

 00447029    cmp        eax,8

>0044702C    jne        004470C4

 00447032    lea        edx,[ebp-8]

 00447035    mov        eax,dword ptr [ebx+2F0]; TForm1.Edit2:TEdit

 0044703B    call       TControl.GetText

 00447040    mov        eax,dword ptr [ebp-8]

 00447043    cmp        byte ptr [eax+1],5F

>00447047    jne        004470C4

 00447049    lea        edx,[ebp-0C]

 0044704C    mov        eax,dword ptr [ebx+2F0]; TForm1.Edit2:TEdit

 00447052    call       TControl.GetText

 00447057    mov        eax,dword ptr [ebp-0C]

 0044705A    cmp        byte ptr [eax+5],2C

>0044705E    jne        004470C4

代码和OD很像,Call部分都有相应的函数替换,我们在OD中加载,然后Ctrl+G, 输入这段代码的开始地址:00446FF8,下断,然后…

然后怎么让他触发功能,断下呢?

不知大家还记得不?之前在Dede可以看到两个编辑框,而这里只有一个显示出来了,正好我们想要就是那个被隐藏的。好吧,我们第一件事就是将隐藏的Edit2显示出来。

怎么做呢?

刚才我们看到的第一个事件:TForm1.FormCreate,随便翻翻,就可以发现有好几个与Edit2相关的


1

2

3

4

5

6

7

00446C89    xor        edx,edx

00446C8B    mov        eax,dword ptr [ebx+2F0]; TForm1.Edit2:TEdit

00446C91    mov        ecx,dword ptr [eax]

00446C93    call       dword ptr [ecx+5C]; TLabel.SetEnabled

00446C96    xor        edx,edx

00446C98    mov        eax,dword ptr [ebx+2F0]; TForm1.Edit2:TEdit

00446C9E    call       TLabel.SetVisible

代码中每次Call之前都进行了xor edx,edx将edx的值清零,这里与其他显示的控件mov edx,1特别可疑,我们在2个xor edx,edx下面的mov下断,Ctrl+F2 重新加载程序,在OD右侧修改edx的值为1,F9运行,再次修改下一个。再看看界面,Edit2是不是已经出来了?

我们再回到Edit2双击事件那里,分析下代码,然后找到头地址:00446FF8,在OD中对照IDR中的反汇编,进行F8单步调试。其中Delphi文本处理函数反汇编说明见网址:http://www.cnblogs.com/bbdxf/p/3787684.html 。分析之后的代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

00446FF8  /.  55            push ebp                                 ;  //  CKme::TForm1.Edit2DblClick

00446FF9  |.  8BEC          mov ebp,esp

00446FFB  |.  33C9          xor ecx,ecx

00446FFD  |.  51            push ecx

00446FFE  |.  51            push ecx

00446FFF  |.  51            push ecx

00447000  |.  51            push ecx

00447001  |.  51            push ecx

00447002  |.  53            push ebx

00447003  |.  8BD8          mov ebx,eax

00447005  |.  33C0          xor eax,eax

00447007  |.  55            push ebp

00447008  |.  68 DF704400   push 004470DF

0044700D  |.  64:FF30       push dword ptr fs:[eax]

00447010  |.  64:8920       mov dword ptr fs:[eax],esp

00447013  |.  8D55 FC       lea edx,[local.1]

00447016  |.  8B83 F0020000 mov eax,dword ptr ds:[ebx+0x2F0]         ;  TForm1.Edit2:TEdit

0044701C  |.  E8 6BD0FDFF   call 0042408C                            ;  TControl.GetText

00447021  |.  8B45 FC       mov eax,[local.1]

00447024  |.  E8 5FCBFBFF   call 00403B88                            ;  @LStrLen

00447029  |.  83F8 08       cmp eax,0x8                              ;  字符长度为8

0044702C  |.  0F85 92000000 jnz 004470C4

00447032  |.  8D55 F8       lea edx,[local.2]

00447035  |.  8B83 F0020000 mov eax,dword ptr ds:[ebx+0x2F0]         ;  TForm1.Edit2:TEdit

0044703B  |.  E8 4CD0FDFF   call 0042408C                            ;  TControl.GetText

00447040  |.  8B45 F8       mov eax,[local.2]

00447043  |.  8078 01 5F    cmp byte ptr ds:[eax+0x1],0x5F           ;  第二个字符为0x5F=‘_‘

00447047  |.  75 7B         jnz short 004470C4

00447049  |.  8D55 F4       lea edx,[local.3]

0044704C  |.  8B83 F0020000 mov eax,dword ptr ds:[ebx+0x2F0]         ;  TForm1.Edit2:TEdit

00447052  |.  E8 35D0FDFF   call 0042408C                            ;  TControl.GetText

00447057  |.  8B45 F4       mov eax,[local.3]

0044705A  |.  8078 05 2C    cmp byte ptr ds:[eax+0x5],0x2C           ;  第6个字符为0x2C=‘,‘

0044705E  |.  75 64         jnz short 004470C4

00447060  |.  8D55 F0       lea edx,[local.4]

00447063  |.  8B83 E8020000 mov eax,dword ptr ds:[ebx+0x2E8]         ;  TForm1.Edit1:TEdit

00447069  |.  E8 1ED0FDFF   call 0042408C                            ;  TControl.GetText

0044706E  |.  8B45 F0       mov eax,[local.4]

00447071  |.  E8 12CBFBFF   call 00403B88                            ;  @LStrLen

00447076  |.  83C0 03       add eax,0x3

00447079  |.  B9 03000000   mov ecx,0x3

0044707E  |.  99            cdq

0044707F  |.  F7F9          idiv ecx

00447081  |.  85D2          test edx,edx

00447083  |.  75 3F         jnz short 004470C4

00447085  |.  6A 00         push 0x0

00447087  |.  6A 04         push 0x4

00447089  |.  8D55 EC       lea edx,[local.5]

0044708C  |.  8B83 E8020000 mov eax,dword ptr ds:[ebx+0x2E8]         ;  TForm1.Edit1:TEdit

00447092  |.  E8 F5CFFDFF   call 0042408C                            ;  TControl.GetText

00447097  |.  8B45 EC       mov eax,[local.5]

0044709A  |.  E8 E9CAFBFF   call 00403B88                            ;  @LStrLen

0044709F  |.  99            cdq

004470A0  |.  52            push edx

004470A1  |.  50            push eax

004470A2  |.  33C0          xor eax,eax

004470A4  |.  E8 E70EFCFF   call 00407F90                            ;  DiskFree

004470A9  |.  030424        add eax,dword ptr ss:[esp]

004470AC  |.  135424 04     adc edx,dword ptr ss:[esp+0x4]

004470B0  |.  83C4 08       add esp,0x8

004470B3  |.  83C0 02       add eax,0x2

004470B6  |.  83D2 00       adc edx,0x0

004470B9  |.  E8 47ECFBFF   call 00405D05                            ;  @_llmod

004470BE  |.  8983 0C030000 mov dword ptr ds:[ebx+0x30C],eax         ;  TForm1.?f30C:dword

004470C4  |>  33C0          xor eax,eax

004470C6  |.  5A            pop edx

004470C7  |.  59            pop ecx

004470C8  |.  59            pop ecx

004470C9  |.  64:8910       mov dword ptr fs:[eax],edx

004470CC  |.  68 E6704400   push 004470E6

004470D1  |>  8D45 EC       lea eax,[local.5]

004470D4  |.  BA 05000000   mov edx,0x5

004470D9  |.  E8 4EC8FBFF   call 0040392C                            ;  @LStrArrayClr

004470DE  \.  C3            retn

004470DF   .^ E9 BCC2FBFF   jmp 004033A0

004470E4   .^ EB EB         jmp short 004470D1                       ;  @HandleFinally

004470E6   .  5B            pop ebx

004470E7   .  8BE5          mov esp,ebp

004470E9   .  5D            pop ebp

004470EA   .  C3            retn

第一个编辑框Edit1不知道有什么要求,Edit2要求第二个字符为’_’,第六个字符为’,’,字符长度为8,别的都无要求。

继续分析别的事件,。。。。

无收获。。。

难道只能爆破??

破解之Delphi专辑

时间: 2024-10-25 19:08:59

破解之Delphi专辑的相关文章

Delphi 2010下载+完美破解

点击链接进入http://altd.embarcadero.com/download/RADStudio2010/delphicbuilder_2010_3615_win.isoRAD Studio/Delphi 2010 3615下载+破解 - 资源共享 - 网风社... RAD Studio/Delphi 2010 3615下载+破解官方下载地址:http://altd.embarcadero.com/download/RADStudio2010/delphicbuilder_2010_36

Delphi XE7 Update1 下载破解、带源码和帮助安装序列号

源:http://blog.csdn.net/tht2009/article/details/39157877 Delphi安装与破解 1.XE7 XE7Update1:http://altd.embarcadero.com/download/radstudio/xe7/delphicbuilder_xe7_upd1_win.iso XE7:http://altd.embarcadero.com/download/radstudio/xe7/delphicbuilder_xe7_win.iso

delphi xe5 完整版下载和破解方法

delphi xe5的完整版下载昨天看到,没想到这次破解方法很快出来了,估计再过不了多久,绿色版等就都ok了. 摘自盒子网站,谢谢yuto大侠,我还没有测试,请各位谨慎: 不可以将本破解补丁分享到国外网站.论坛中!低调啊! 本破解补丁只适合中国大陆地区的Delphi.C++Builder爱好者和开发者! 本破解补丁只可用于个人研究交流使用,不得做商业用途,请在试用后的24小时内删除破解补丁,还原软件试用状态.如果您觉得RAD Studio XE5还不错的话,请通过正规渠道购买正版软件,谢谢! R

5分钟破解wpa2密码(转)

首先大家要明白一种数学运算,它叫做哈希算法(hash),这是一种不可逆运算,你不能通过运算结果来求解出原来的未知数是多少,有时我们还需要不同的未知数通过该算法计算后得到的结果不能相同,即你不太可能找到两个不同的值通过哈希得到同一个结果.哈希是一类算法的统称,通常哈希算法都是公开的,比如MD5,SHA-1等等.我们平时说的WPA密码其实叫PSK(pre-shared key),长度一般是8-63字节,它加上ssid通过一定的算法可以得到PMK(pairwise master key).PMK=SH

Delphi XE7 安装

delphi xe7是一款跨平台的应用程序开发工具,它能快速开发Windows.Mac.iOS.Android和各种电子产品的平台的应用程序, 新版xe7使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-Oriented Language),通过全新的控件和样式使您的Windows应用变得现代化,具有简单.高效.功能强大的特点. 在移动端方面,delphi xe7提供mobile apps的连结功能,可以支援

IntraWeb.v14.0.32安装及破解指南

版权声明:本文为博主原创文章,未经博主允许不得转载. 一.下载 首先从这里下载14.0.32版本的IntraWeb:http://download.csdn.net/detail/u013544265/8024095 二.卸载旧版 1. 我的Delphi版本是XE6,解压缩下载的程序,进入"IWBundledRemovalTool"文件夹,运行"IWBundledRemovalTool.exe",卸载旧版. 2. 运行Delphi,Component→Install

[Delphi]解决Delphi Distiller运行报错"HKEY_CURRENT_USER\\" is of wrong kind or size

最近终于决心将使用多年的Delphi 7升级到Delphi 2007,虽然目前Delphi最高版本已经是XE8,但对于只做VCL开发的话还是喜欢2007这个经典的版本. 安装Delphi 2007一切顺利,到破解验证需要运行Delphi Distiller时,弹出以下错误: 遇到错误马上问度娘,可惜度娘把家底都翻遍了,问的人多,解决的一个也没有. 度娘蔫了只能找谷哥,谷哥果然国际范,在一个俄文的网站找到了解决方法: 把HKEY_CURRENT_USER键的默认值删掉即可. 转载请注明原文地址:h

各类程序之破解大法

拦截窗口: bp CreateWindow 创建窗口 bp CreateWindowEx(A) 创建窗口 bp ShowWindow 显示窗口 bp UpdateWindow 更新窗口 bp GetWindowText(A) 获取窗口文本 拦截消息框: bp MessageBox(A) 创建消息框 bp MessageBoxExA 创建消息框 bp MessageBoxIndirect(A) 创建定制消息框 拦截警告声: bp MessageBeep 发出系统警告声(如果没有声卡就直接驱动系统喇

QTP之delphi试用感想一(自动化测试)

这两天一直在琢磨自动化测试,自动化测试,其实与单元测试有一些相同之处,单元测试的目的也是可以一次写,多次运行,对于测试驱动及后期维护真是有非常多的好处,用自动化测试工具也是如何,主要目的是为了回归测试.单元测试的时候,我们要先准备数据,再测试,最后再进行数据清理,自动化测试也是如此,大家千万别觉得自动化测试就是开个测试工具,然后就不用动手了之类的云云.更多的准备知识,就暂时不需要了.    工具的选择,看当前主流的C/S都是MI公司,估计WR(winrunner)和QTP(QUICK TEST