정답
리버스 코드 엔지니어링 문제를 포함하는 가장 큰 웹 사이트 중 하나는 Crackmes.de .
이 웹 사이트는 다음과 같은 이유로 매우 훌륭합니다.
- 무료 .
- 도전은 다음에 따라 분류됩니다.
- 난이도 : 매우 쉬움부터 가장 어려운 레벨까지 9 가지 난이도가 있습니다.
- 플랫폼 : Windows, Linux를 연습하고 싶습니다. 등 … 역전 기술?
- 언어 : 어느 언어로 작성된 크랙을 해결하고 싶습니까? 예, 경험이 있다면 예 리버스 코드 엔지니어링에서 대부분의 경우 “어셈블러 언어로 작성된 다른 실행 파일과 비교하여 Delphi로 작성된 실행 파일을 리버스 엔지니어링하는 것이 정확히 동일하지 않습니다.
- 해결 된 크랙 : 리버스 엔지니어링을 시작하는 경우 쉽게 해결할 수있는 크랙을 찾을 수 있으므로 크래킹 방법을 이전에 해결 한 크래커와 비교할 수 있습니다. 당신의 사고와 해결 능력을 배우고 확장하는 데 정말 소중한 보물입니다.
답변
저는 당신이 컴퓨터 과학과 저수준 프로그래밍의 전문가가 아니라고 가정하겠습니다. 그래서 대답은 그렇습니다. 매우 어렵습니다.
프로그래밍 언어에는 두 가지 “레벨”이 있습니다. 높고 낮은. 고급 프로그래밍 언어는 일반적으로 사용하고 배우기가 매우 쉽습니다. 그것들은 사람이 읽을 수 있고 실행하기 위해 기계에 의해 “번역”되어야합니다. 고급 프로그래밍 언어의 예로는 Javascript, R, Python, Java 등이 있습니다.
저수준 프로그래밍 언어는 배우기가 더 어렵습니다. 그들은 컴퓨터 메모리와 프로세스가 어떻게 작동하는지 더 많이 이해해야합니다. 다소 낮은 수준의 언어의 가장 유명하고 가장 유명한 예는 C입니다. C는 매우 강력하고 배우기 어렵습니다. 그러나 높은 수준의 프로그래밍 언어보다 기계가 이해할 수있는 방법에 가깝습니다. 매우 낮은 수준의 프로그래밍 언어는 Assembly입니다. 어셈블리 코드는 여러 유형으로 존재하지만 모두 복잡하고 성가 시며 읽기가 매우 어렵습니다. 어셈블리 코드는 리버스 엔지니어링의 주요 부분입니다. 리버스 엔지니어링하는 경우 프로그램의 어셈블리 코드를보고 변경합니다.
Assembly는 기본적으로 모국어라는 것을 이해해야합니다. 프로그램을 작성하면 항상 어셈블리 코드가 있습니다. 컴파일러가 코드를 Assembly로 변환하거나 인터프리터가 실시간으로 수행합니다.
이 모든 것이 기본적으로 의미하는 것은 진정한 프로 리버스 엔지니어가되는 것이 쉽다는 것입니다. 당신이 정말로해야 할 일은 서로 다른 유형의 어셈블리에 능통 해지고 C로 프로그래밍하는 방법을 배우는 것뿐입니다. 유일한 문제는이 두 가지를하기 어렵다는 것입니다.
행운을 빕니다!