将dcu 转换成pas 的程序(100分)

F

fuliang

Unregistered / Unconfirmed
GUEST, unregistred user!
请问那里能找到这样的工具?
 
D

dwwang

Unregistered / Unconfirmed
GUEST, unregistred user!
"答案"只有一个:绝对不可能.
 
A

Another_eYes

Unregistered / Unconfirmed
GUEST, unregistred user!
至少可以转换出一种可以看的源程序---汇编
 
A

Another_eYes

Unregistered / Unconfirmed
GUEST, unregistred user!
至少可以转换出一种可以看的源程序---汇编
 
F

fuliang

Unregistered / Unconfirmed
GUEST, unregistred user!
在dcu中包含,函数名以及函数的接口位置,
各种常量,字符串,应该有一种工具降旗转换成pas,
至少可以把函数分割出来,函数里是汇编也无所谓,
只要能重新编译成dcu 就行.
 
H

huizhang

Unregistered / Unconfirmed
GUEST, unregistred user!
两个月前从苏联下载了两个exe程序, 一个叫做dcp2dpk.exe, 另外一个exe2dpr.exe
dcp2dpk.exe声称将delphi 2.0/3.0的编译了的package(*.dcp)转换成package的
源文件(*.dpk)
exe2dpr能够将Delphi 2.0/3.0 编译的exe文件转换成Delphi的project文件(*.dpr)不过也只能将resource部分恢复, 代码部分全部丢失
 
C

Creater

Unregistered / Unconfirmed
GUEST, unregistred user!
Dwwang:
您提供的众多控件中,大部分都有源码,您是否留有一手,可否公开一下您的破解经验,
让我们也吸取一下经验。共同提高Delphi的开发水平。
 
F

fuliang

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠请上网找一下,说不定有这种工具呢.
 
D

dwwang

Unregistered / Unconfirmed
GUEST, unregistred user!
我"提供的众多控件中"没有一个是我提供的 :(
都是从网上找的,破解是他们的事,我就管用.
其实我也从来不用,就是看谁需要,找一个来提供给大家 :)
 
C

Creater

Unregistered / Unconfirmed
GUEST, unregistred user!
原来您大哥也和我一样,是一个‘搬运工人’,一个地地道道的控件‘倒爷’。Haha...
 
3

3h

Unregistered / Unconfirmed
GUEST, unregistred user!
那这些HACK是如何进入这个DCU的呢?
 
A

Another_eYes

Unregistered / Unconfirmed
GUEST, unregistred user!
3h, 他们是用我说的方法, 通过汇编
 
F

fuliang

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi4.0里可以通过引用要hacker的dcu.
然后,在CPU Viewer里跟踪,找到关键的地方,
将其改掉.
dcu与exe的某些地址是不一样的,如转移指令,
变量等,是在连接是决定的,所以还要用一些办法,
绕过这些.大部分还是有办法的.
我认为,最好的办法是把dcu转换成pas,
一切就都方便的!
 
A

Another_eYes

Unregistered / Unconfirmed
GUEST, unregistred user!
几乎没有可能性.
除非有人知道delphi编译的全部原理及方法, 得到pcode和机器码的对应表, 然后
运用人工智能方法判断编译结果的机器码生成pcode(天方夜谭), 再从pcode得到源
代码.当然, 原始pas->dcu过程中不能有任何优化过程(这样产生的dcu还能用?).
这个故事好听吗?
 
W

walkdan

Unregistered / Unconfirmed
GUEST, unregistred user!
EXE2DELPHI工具到没有见过,以前用过EXE2ASM, EXE2C, EXE2VB等逆
向翻译之类的东西, 但转换的效果都不太理想。有些修改过后再编译就用不了
(尤其是EXE2ASM),有些如EXE2VB的效果还将就.
根据编译理论,100%的逆向工程是不可能的,但我想尽可能的转换还是可
行的.但转换的结果跟源程序差异很大.比如明明你将几个变量申明在几个单元的
Interface中,逆向翻译的结果可能会将这几个变量都放在了一个公共的单元里面,
因为Delphi将单元中的interface变量统统都放入了一个全局数据段中,逆向翻译
并不知道数据段中那个变量应该放在那个单元中.
逆向翻译工程一般要解决几个基本问题:比如:
1.程序结构的翻译:知道那一段机器代码对应那一种程序结构。
   用ASM编写的程序其结构一般不太规格化,比如做一个循环结构的方法
就非常之多,可以用je、jb、ja、jna、jcxz、jmp、loop等指令组合,甚至
还用pop,对一个结构很差的ASM程序跟本搞不了结构翻译.
   用高级语言(如Delphi)本身就是规格化的,一个repeat . . . until循环对
应的机器代码一般是固定的,用一般的模式匹配就容易从机器代码得出对应
的程序结构.
2.数据引用的翻译:知道代码引用数据(包括函数)的位置(全局或是局部)、
结构、类型
   这一点的难度较大,Delphi中的数据类型复杂,特别涉及到VFT(对象的
虚函数表)时更是要小心,里面可能涉及到很多不可解的引用问题,逆向翻译的
失败也往往在此。
  . . .
 再加上一些优化处理:比如:
  1. 库函数匹配:知道代码call的是自定义的还是库函数
   好在Win95的PE结构代码在调用Win32API非常规格化,你可以更居上
下文得到对应的Win32API函数、参数。
  2. 优化类表:根据分析到的数据进行类的构造。
  做这一步很累,你必须对Delphi的控件结构和关系有精确的掌握,分离出对类
的引用和继承,去掉祖先类的代码,保留子类的代码。
同时整理类表,生成相关DFM文件
  . . .
咳,还要考虑很多。
  总之,这是件头疼和费时的事情。自己搞肯定不现实(除非有特殊目的),
还是想想办法到网上找找。估计有。
 
A

Another_eYes

Unregistered / Unconfirmed
GUEST, unregistred user!
> 自己搞肯定不现实(除非有特殊目的)
^^^^^^^^^^^^^^^ ^^^^^^^^^^^^
谁都这样想 有特殊目的hack dcu? 不会去hack exe吗?
 
D

delphi

Unregistered / Unconfirmed
GUEST, unregistred user!
破解Delphi的VCL其实和其实和破解其他东西
是一样的。引用这个VCL, 生成一个EXE,用
Soft-ICE搞定EXE,回头再根据修改情况更改
原始的VCL。不过这样Crack出来的东西没有
源码,如果是在正式场合下使用三思,毕竟自己
没有可能修改完善。
从DCU文件中分析,可以反编译出DCU的Interface
部分,Implementation部分就不大容易了,同样
EXE2DPR也只能恢复你画的Form.
CPU View从Delphi 2.0开始就一直存在,不过以前
没有在注册表中打开而已。
 
F

fuliang

Unregistered / Unconfirmed
GUEST, unregistred user!
好吧,看来无法解决。
 
顶部