web-dev-qa-db-ja.com

どのアセンブリを学ぶべきですか?

アセンブリを学びたいのですが、どの命令セットが正しいのかわかりません(正しい用語の場合)。

私は以前にプログラミングの経験があり、コンピュータサイエンスの学位を取得しましたが、驚くほどカバーされませんでした。

私は基本を教えられる必要があり、どのリソースから学ぶべきかについての指針です。

学びたい:用語、環境の設定、Hello World、次の段落で詳しく説明する理由から、どの命令に焦点を当てるかを設定します。

これを、C/WinAPIエクスペリエンスで、マルウェア開発(私はRed Teamの取り組みを行っています)とリバースエンジニアリングに使用します。さまざまな命令セットの簡単な背景は素晴らしいでしょうが、私の焦点は現在、Windowsに99%集中しています。

Stuxnetに関して「ビッグボーイズ」が何を使用しているか、またはPhotoshopのような巨大な製品がどのようにリバースエンジニアリングされているかを知りたいです。

EDIT:私は間違っているかもしれませんが、このチュートリアルでは、すべてのCPUで動作するプログラムをアセンブリで作成しているようです?

https://www.codejuggle.dj/creating-the-smallest-possible-windows-executable-using-Assembly-language/

だから今私は非常に混乱しています!

4
user5623335

私のアドバイスは、まずMIPSを学び、ヒープとスタックおよびOSの呼び出しがどのように機能するかについて頭を抱え、次にWindows用のマルウェアの開発に集中したいのでx86に移ることです。

編集:なぜすべてのCPUで機能すると思いますか?この記事自体は、すべてのWindowsバージョンで機能することを主張しているだけで、それ以上は機能しません。

7
Gillian

私のアドバイス:マシンのCPUが使用する命令セットとテクノロジーを学んでください。これは、ラボを準備し、経験を学習するために使用する場所です。

マシンでIntel CPUを使用している場合は、そのトピックを学習してください。 Intelはかつて非常に優れたドキュメントを持っていました。

ARM CPUを使用している場合、Intel x64とは少し異なるため、ARM命令を学びます...

基本は他のcpuと大差ないので、短時間で適応できます。

2
Hugo

絶対的な基礎から始めたい場合は、8051などのマイクロコントローラーで使用される簡単な命令セットであるMCS-51を試してみることをお勧めします。アセンブリの基本を学ぶのに役立ちます。シンプルでありながらユビキタスな性質を持つため、クラスで教えられる最初のアセンブリ言語であることがよくあります。その次に、MIPSはかなり単純なRISCですISA=固定サイズの命令で、学習に適しています。

2
forest