- takawata19
- 14471
- 5
- 46
- 3
私もやってみたいのですが、どうやったらdataセクションぶっ壊せるのですか?ヽ(;▽;)ノ C言語で、グローバルで宣言した変数(明示的には初期化しない=0初期化される)のアドレスに、何かを上書きするとかですか?ヽ(;▽;)ノでもこれ普通に代入してるだけですよね全然わからないです
2015-03-25 09:40:24@chomado > 計算機工学と低レベルのプログラミング(例えばアセンブリ言語)において、通常オフセットは特定の絶対アドレスを示すために、ベースアドレスに加えられるアドレスの数を意味する。この用法では、オフセットは相対アドレスと言い換えることがある。 なるほど!
2015-03-25 09:45:36手元のオレオレ環境、int main;したら「データセグメントにテクストセグメントから飛ぶなんて、リロケーションできるかボケ」という警告が出た。そういえばそういうエラーチェックを仮で書いてたのだけどちゃんと動くかテストしてなかったわー(もちろんコミットもしてない)
2015-03-25 10:49:57@chomado 実際には、コンパイルとかリンクで生成されたオブジェクトファイルの中にそういう構造がある。詳しくは Linkers and Loaders amazon.co.jp/dp/4274064379 を読むべし。
2015-03-25 11:07:05会社着いたので, れいの main; をステップ実行してみました!! でもよくわからないなあ><これってつまり何が起こってるの pic.twitter.com/Uhno5JJP8y
2015-03-25 11:23:56@kosaki55tea @chomado X86/X64の命令ポインタの三段階目の進化 (ip→eip→rip)
2015-03-25 11:33:11@chomado Rest in peace (安らかに眠れ) な訳がないので、多分 Run Instructions by steP とかだと予想!!!
2015-03-25 11:33:15@chomado Instruction Pointer が入っているレジスタの名前。 8086(16bit)では IP 80386(32bit)では EIP x86-64(64bit)では RIP という名前になっている
2015-03-25 11:35:16@takawata19 @chomado SEGVするとRIPが死んだ場所を指してるから正しく Rest In Place で素晴らしいネーミングセンスだと感動したものである
2015-03-25 11:39:03よくはまるARMのスライドに「ipレジスタはインタープロシジャーの略。インストラクションポインタではない」って追記しておくの忘れてるな
2015-03-25 11:42:28const int main = 0xc3;(.rodataと.textはおなじセグメント属性と、リンカスクリプトに書いてあった) /* Read-only sections, merged into text segment: */
2015-03-25 11:49:13@chomado この 0x100001000: addb %al, (%rax) って 0x0000 をx86-64で逆アセンブルした結果だと思う。 だからひたすら0が並んでる場所を実行しようとしてる。
2015-03-25 11:59:46@chomado c-jump.com/CIS77/CPU/x86/… を見ると、 1バイト目が 0x00 だとニーモニックはADD、演算単位は8bitで、 メモリ ← メモリ + レジスタ という操作をする命令になる。
2015-03-25 12:17:15@chomado 逆アセ結果の "%al" というのは「ALレジスタ」 "(%rax)" というのは「RAXレジスタに入ったアドレスが指すメモリ上の場所」→Cでいうと *((char *)rax) みたいな意味
2015-03-25 12:21:47@NaOHaq !!! な, なるほどです! すごく分かりやすいです!! ありがとうございます!ヽ(;▽;)ノ では addb %al, (%rax) は, RAXレジスタに入ったアドレスが指すメモリ上の場所の値を 足したものをALレジスタに格納, ということですか?><
2015-03-25 12:24:36@chomado だから、 addb %al, (%rax) をC風に書くと uint8_t al; uint64_t rax; *((uint8_t *)rax) += al; みたいな意味。 で、raxが指してるメモリのアドレスが無茶苦茶なのでアクセス違反になってる。
2015-03-25 12:25:28