MARKET LEADERSHIP DOESN’T JUST HAPPEN, IT’S EARNED. How did Wind River get named the overall leader in the global edge compute OS market by VDC Research? It helps to have the #1 real-time OS and #1 commercial embedded Linux. Learn how our commitment to excellence is reflected in VDC’s latest report. Read the news Identify Trends, Detect Anomalies, Prevent Problems Your distributed cloud will gener
オペコードの解釈の違いを利用し、Linux x86とLinux x64の両方で動くシェルコード(polyglot shellcode)を書いてみる。 環境 Ubuntu 12.04 LTS 32bit版および64bit版 $ uname -a Linux vm-ubuntu32 3.11.0-15-generic #25~precise1-Ubuntu SMP Thu Jan 30 17:42:40 UTC 2014 i686 i686 i386 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 12.04.4 LTS Release: 12.04 Codename: precise $ gcc --version gcc (Ubuntu/L
lea命令は、Load Effective Address命令というもので、メモリ上の場所のアドレス値をレジスタに格納するもの。そのアドレスへのパイプを作っているような具合。なので、 leal 4(%esp), %eax とあったら、「ESPの値に4を足したメモリ位置」のアドレスを、EAXに格納するという意味になる。 端的に言うと、 EAX = ESP + 4 ってこと。 この命令を行うだけなら、二命令使って movl %esp, %eax addl $4, %eax としても同じ結果が得られそうなものだけど、では何のためにLEA命令があるのか。 実は、LEAは計算が目的じゃなくてアドレスを得るための命令なので、通常の計算命令と違ってフラグレジスタに影響を与えない。フラグに影響を与えないので、反復する命令に適している。*1 また足し算が一命令で出来てしまうので、その辺でも使われることがある
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く