- アセンブラ初心者スレッド
813 :,,・´∀`・,,)っ-○○○[sage]:2015/07/22(水) 10:09:23.01 ID:bur23WMX - MacOSのELFは位置独立コードのためにEIP取得のために空のcall(64ビットの場合はlea rcx, [rip])発行してる
Windowsみたいにメインルーチンのアドレス固定じゃないからね LinuxはオプションでPIC対応コード生成可能。 【参考】 http://7shi.hateblo.jp/entry/2012/04/09/235938 http://0xcc.net/blog/archives/000109.html これがJITに限らず静的コンパイルでも実行時の命令ポインタが要求される例だ。 これで約一名おとなしくなるかな?
| - アセンブラ初心者スレッド
814 :,,・´∀`・,,)っ-○○○[sage]:2015/07/22(水) 10:27:24.37 ID:bur23WMX - >>723
じつはここに答え書いてあるのにスルーされてるのがすっげー違和感あったんだよね。 本当に知らなかったのかな
| - アセンブラ初心者スレッド
816 :,,・´∀`・,,)っ-○○○[sage]:2015/07/22(水) 12:19:54.31 ID:bur23WMX - 老害は知らなくて当然だよ。10年前くらいから使われだしたセキュリティの
広く使われていても自分の知識の範疇にないことを「実装依存」で片付けてるから 新しいことが覚えられないのだよ 更に言うとJITの場合は分岐のコンディションごとに関数の実体を複数生成することもあるから 1つの関数の実体が複数あるなんてこともざらにある。 MacOSのプログラムすら書いたことのない(そもそも仕事がもらえない) 残念な老害という現実だ。 まあ俺に攻撃することだけ執着してご自分の無様さをさらけ出すのは 何のマゾプレイなんですかね
| - アセンブラ初心者スレッド
817 :,,・´∀`・,,)っ-○○○[sage]:2015/07/22(水) 12:21:51.19 ID:bur23WMX - 286ガーとか古い知識ばかりに頼って覚えられない人はほっといて
向上心のある人はgccで-mPICオプション使ってみるといいよ。Cygwinで使えたかは知らん
| - アセンブラ初心者スレッド
818 :,,・´∀`・,,)っ-○○○[sage]:2015/07/22(水) 12:30:05.00 ID:bur23WMX - なお実行コードのアドレスをランダム化するバッファオーバーランからの任意のコード実行などのリスクを低減するための方策で
攻撃手段を一つ減らすだけでも運用上のメリットはあるから既にサーバサイドでもかなり使われてる 「実装依存」という言葉は自分の知らない概念を認められない負け犬のための言葉と認識した
| - アセンブラ初心者スレッド
820 :,,・´∀`・,,)っ-○○○[sage]:2015/07/22(水) 13:14:18.63 ID:bur23WMX - x64はセグメントオーバーライドプリフィクスそのものが使えなくなった
LESとかLDS潰してAVX命令作ったからね
| - アセンブラ初心者スレッド
821 :,,・´∀`・,,)っ-○○○[sage]:2015/07/22(水) 13:20:15.23 ID:bur23WMX - >>819
スタートアップルーチンにリテラルを都度書き換えさせるとかアホくさすぎる そもそも起点となる命令ポインタの算出が必要だから結局startupルーチン自身は 動的な命令ポインタの動的な値を知ってないといけない。 それを本末転倒と言ってるのだが。
| - アセンブラ初心者スレッド
833 :,,・´∀`・,,)っ-○○○[sage]:2015/07/22(水) 19:11:08.69 ID:bur23WMX - はぁ?
>>725はエントリポイントが固定アドレスじゃねーと使えないよ -mPICオプションつけてコンパイルしてみ?callでEIPとってからオフセット差分を callを回避するために結局callを使うって本末転倒じゃねーか バカ杉
| - アセンブラ初心者スレッド
834 :,,・´∀`・,,)っ-○○○[sage]:2015/07/22(水) 19:13:29.16 ID:bur23WMX - ああ、DLLのマッピングされるアドレスは固定じゃないですね
固定されてたら競合しちゃうからねー 複数のプログラムから呼び出されることを想定してプロセスローカルでないアドレスに動的にマッピングされます
|
|