代码保护。新的MQL4语言(Build 600+)反编译保护和其他破解技术。

 

你好。

我读了关于新的mql4(Build 600+),并且已经更新了我的EA,现在我有一个问题。新的保护措施对破解者和其他类型的可执行文件的破解和修改代码的安全性如何。例如:六角编辑到期日期,内存转储,等等。 现在EA上简单的时间限制(过期日期)的安全性如何?如何使用新的语言来实现新的保护技术?

例如,如何使用新的语言实现新的保护技术?

bool Expire=TimeCurrent()>StrToTime("2014.09.30 00:00");
    if( Expire ) {
                Print("Demo period has expired: 2014.09.30 00:00 -  Contact: investguy@gmail.com ");
                return(1);
        }  

谢谢

 

从Renat(Metaquotes的CEO)所说的:

  • 新的ex4是本地代码(如DLL),不再是伪代码。所以它们更难被反编译。
  • ex4是压缩的(或其他不知名的混淆技术),所以反编译后很难理解。
  • 市场部的ex4是加密的。具体使用的技术没有公开。

我根据记忆报告这些信息,所以我希望我没有犯错。我也没有在实践中检查 这些信息。

 
谢谢你的回答,但这对我的知识并没有增加多少。有可能反编译吗?在不久的将来有可能吗?(有没有人打赌?)
 
investguy:
谢谢你的回答,但它并没有给我增加多少知识。有可能反编译吗?在不久的将来有可能吗?(有没有人打赌?)

AFAIK,一个加密的产品 是不能被反编译的。你必须先把它解密。一个产品总是可以被反编译的。但这是一个成本问题。如果你花了10美元来反编译一个旧的ex4,也许新的ex4将需要100万美元(只是说说)。你明白了吗?

 
StrToTime("2014.09.30 00:00");

纯粹的字符串很容易被入侵。试着编译它,看看ex4中是否能看到这个字符串。 现在应该是加密的(Build 6xx)。验证一下。

还有,为什么要用字符串呢?使用一个真正的8字节的日期时间

#define  EXPIRATION D'2014.09.30 00:00'
 

它是加密的,但不幸的是,属性变量仍然是可见的。

 
investguy: 它是加密的,但不幸的是,属性变量仍然是可见的。
这不是不幸的,这是故意的。如果你不能读取文件中的抄写内容,那么它就不是抄写的。但日期字符串是不可见的。
 
investguy:

你好。

我读了关于新的mql4(Build 600+),并且已经更新了我的EA,现在我有一个问题。新的保护措施对破解者和其他类型的可执行文件的破解和修改代码的安全性如何。例如:六角编辑到期日期,内存转储,等等。 现在EA上简单的时间限制(过期日期)的安全性如何?如何使用新的语言来实现新的保护技术?

例如,如何使用新的语言实现新的保护技术?

谢谢


AFAIK,到现在为止,还没有一个反编译器可以对用Build 6xx编译的.ex4进行反编译。


但是,对于真正有兴趣破解的人来说,你的代码的问题是,它很容易把你的

if (condition...)

if (!condition

或者更简单,将返回(1) 的NOP

恢复一下,反编译现在是不可能的。


但仍有可能的是解开代码。而对于任何一个对汇编程序没有多少了解的人来说,逆向工程你的代码和破解它将是相当容易的。

 
yokinfx: 但仍有可能的是拆解代码。而对于任何对汇编程序没有什么了解的人来说,逆向工程和破解你的代码将是相当容易的。
它不应该是机器代码,它应该是加密的。
 
yokinfx:


AFAIK,到现在为止,还没有一个反编译器能对用Build 6xx编译的.ex4起作用。


但是,对于真正有兴趣破解的人来说,你的代码的问题是,它很容易把你的

或者更简单,将返回(1) 的NOP

恢复一下,反编译现在是不可能的。


但仍有可能的是反汇编该代码。而对于任何一个对汇编程序没有多少了解的人来说,逆向工程你的代码和破解它将是相当容易的。

真的吗?你能证明这一点吗?
 
把你的代码放在一个DLL中。这是自MQL2以来获奖的答案。
原因: