코드 보호: 새로운 MQL4 언어(빌드 600+) 디컴파일 보호 및 기타 크랙 기술.

 

안녕,

새로운 mql4(Build 600+)에 대해 읽고 이미 EA를 업데이트했는데 이제 질문이 있습니다. 크래커 및 기타 유형의 실행 가능한 크래킹 및 코드 수정에 대한 새로운 보호 기능이 얼마나 안전한지. 예: 만료 날짜, 메모리 덤프 등의 16진수 편집. 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는 디컴파일할 수 없습니다. 먼저 해독해야 합니다. 제품은 항상 디컴파일될 수 있습니다. 하지만 비용 문제입니다. 이전 ex4를 디컴파일하는 데 10$가 든다면 새 ex4에는 1,000,000$가 필요할 것입니다. 당신은 아이디어를 얻었다?

 
StrToTime ( "2014.09.30 00:00" );

순수한 문자열은 해킹하기 쉽습니다. 그것을 컴파일하고 문자열이 ex4에서 보이는지 확인하십시오. 이제 암호화되어야 합니다(빌드 6xx). 확인.

또한 문자열을 사용하는 이유는 무엇입니까? 실제 8바이트 datetime 을 사용합니다.

 #define EXPIRATION D'2014.09.30 00:00'
 

암호화되어 있지만 불행히도 속성 변수는 여전히 표시됩니다.

 
investguy : 암호화되어 있지만 불행히도 속성 변수는 여전히 볼 수 있습니다.
불행한 것이 아니라 일부러 그런 것입니다. 파일의 카피라이트를 읽을 수 없다면 카피라이트된 것이 아닙니다. 그러나 날짜 문자열은 표시되지 않습니다.
 
investguy :

안녕,

새로운 mql4(Build 600+)에 대해 읽고 이미 EA를 업데이트했는데 이제 질문이 있습니다. 크래커 및 기타 유형의 실행 가능한 크래킹 및 코드 수정에 대한 새로운 보호 기능이 얼마나 안전한지. EX: 만료 날짜, 메모리 덤프 등의 16진수 편집. EA에서 간단한 시간 제한(만료 날짜)은 현재 얼마나 안전합니까? 새로운 언어를 사용하여 새로운 보호 기술을 구현하는 방법은 무엇입니까?

전:

감사해요


AFAIK, 현재까지 빌드 6xx로 컴파일된 .ex4용 디컴파일러가 작동할 가능성은 없습니다.


하지만 코드를 크래킹하는 데 정말로 관심이 있는 사람이라면 코드의 문제는

 if (condition...)

에게

 if (!condition

또는 더 쉽게 NOP하여 return(1)

다시 시작하려면 지금 디컴파일할 수 없습니다.


그러나 여전히 가능한 것은 코드를 분해하는 것입니다. 그리고 어셈블러에 대한 지식이 거의 없는 사람이라면 코드를 리버스 엔지니어링하고 크래킹하는 것이 상당히 쉬울 것입니다.

 
yokinfx : 하지만 여전히 가능한 것은 코드를 분해하는 것입니다. 그리고 어셈블러에 대한 지식이 거의 없는 사람이라면 코드를 리버스 엔지니어링하고 크래킹하는 것이 상당히 쉬울 것입니다.
기계어가 아니라 암호화해야 합니다.
 
yokinfx :


AFAIK, 현재까지 빌드 6xx로 컴파일된 .ex4용 디컴파일러가 작동할 가능성은 없습니다.


하지만 코드를 크래킹하는 데 정말로 관심이 있는 사람이라면 코드의 문제는

에게

또는 더 쉽게 NOP하여 return(1)

다시 시작하려면 지금 디컴파일할 수 없습니다.


그러나 여전히 가능한 것은 코드를 분해하는 것입니다. 그리고 어셈블러에 대한 지식이 거의 없는 사람이라면 코드를 리버스 엔지니어링하고 크래킹하는 것이 상당히 쉬울 것입니다.

진짜 ? 당신은 그것을 증명할 수 있습니까?
 
코드를 DLL에 넣습니다. MQL2 이후로 수상 경력에 빛나는 답변입니다.