assembly

アドレスから関数名、ファイル名、行番号を簡単に取得できる方法

objdumpでも可能だけどアドレスが分かっているならばaddr2lineの方が簡単。 ただし、デバッグ情報がいる。 $ gcc -g -o foo foo.c hogeという関数があるとする。 80483c5はhogeの中のアドレス。 $ addr2line -e foo -f 80483c5 hoge /home/longicorn/tmp/foo…

ELFのman

メモ。 始めて知ったけどELFのmanがある。 $ man 5 elf

数日デバッガで格闘していたら何となく分かってきた

http://d.hatena.ne.jp/longicorn/20081215#p1 http://d.hatena.ne.jp/longicorn/20081216#p1 デバッガを使用 + 前に書いたリンクを中心に勉強していたら何となく分かってきた。 1からプログラムを作れと言われたらきついけど、デバッグや多少の修正程度なら…

ARMのアセンブラ本

x86系はすぐに見つかるんだけど今仕事で使っているのはARM系。 ARM系だと全然情報がないので苦労していたけど発見(英語だけど)。 仕事中に探しまくったかいがあった。 http://www.arm.com/miscPDFs/9658.pdf ちなみに以前コメントで教えていただいたサイトか…

逆アセンブラする方法

objdumpを使う オブジェクトファイル等の場合 $ gcc -c hoge.c $ objdump -d hoge.o $ gcc -o hoge hoge.c $ objdump -d hoge 〜省略〜 この場合は関数名とかが分かる。 fileで見てELFになっていればOK。 しかし生のバイナリデータでは上記の方法ではダメ。 …

アセンブリが分からん

仕事でブートローダとかを弄り始めてアセンブリから逃げられなくなってきた。 まあいい機会なので勉強中。 基本的な知識がないまま、.cや.sファイルとデバッガの吐くアセンブリを見比べながら動作を追っている。 取り合えず参考はこのあたり。 http://www.nu…