ベストアンサー
リバースコードエンジニアリングの課題を含む最大の(最大ではないにしても)Webサイトの1つは Crackmes.de 。
このWebサイトは、次の理由で非常に優れています。
- 無料。
- 課題は次のように分類されます:
- 難易度:非常に簡単なものから最も難しいものまで、9つの難易度レベルがあります。
- プラットフォーム: Windows、Linuxを練習したい、など…リバーススキル?
- 言語:どの言語で書かれたクラックミーを解決したいですか?はい、経験があれば可能ですリバースコードエンジニアリングでは、ほとんどの場合、Delphiで記述された実行可能ファイルを、アセンブラ言語で記述された別の実行可能要素と比較してリバースエンジニアリングすることはまったく同じではないことに気付くでしょう。
- 解決済みのクラックム:リバースエンジニアリングを始めている場合は、簡単に解決できるクラックムを探すことができます。これにより、クラッキング方法を、以前に解決したクラッカーと比較できます。」思考と解決のスキルを学び、拡大するための本当に宝物です。
回答
私は、あなたがコンピュータサイエンスと低レベルプログラミングの専門家ではないと仮定します。答えはイエスです、それは非常に難しいです。
プログラミング言語には2つの「レベル」があります。ハイとロー。高度なプログラミング言語は、一般的に非常に使いやすく、習得しやすいものです。それらは非常に人間が読める形式であり、実行するにはマシンによって「翻訳」される必要があります。高水準プログラミング言語の例としては、Javascript、R、Python、Javaなどがあります。
低水準プログラミング言語は習得が困難です。彼らは、コンピュータのメモリとプロセスがどのように機能するかをより深く理解する必要があります。かなり低レベルの言語の最もよく有名な例はCです。Cは非常に強力で、学ぶのがかなり難しいです。しかし、それは高級プログラミング言語よりも機械が理解できるものにはるかに近いものです。非常に低レベルのプログラミング言語はアセンブリです。アセンブリコードにはさまざまな種類がありますが、それらはすべて複雑で、煩わしく、非常に読みにくいものです。ただし、アセンブリコードはリバースエンジニアリングの主要な部分です。何かをリバースエンジニアリングすると、プログラムのアセンブリコードを表示/変更します。
アセンブリは基本的に母国語であることを理解する必要があります。プログラムを作成する場合、常にアセンブリコードが含まれています。コンパイラがコードをアセンブリに変換するか、インタプリタがリアルタイムで変換します。
これが基本的に意味することは、本当のプロのリバースエンジニアになるのは簡単だということです。あなたが本当にしなければならないのは、さまざまなタイプのアセンブリに堪能になり、Cでプログラミングする方法を学ぶことです。唯一の問題は、これら2つのことを行うのが難しいことです。
頑張ってください!