c++

Variable Code Byte.

c++

最近買った「大規模サービス技術入門」でVariable Code Byteが説明されてたので、本に乗ってた擬似コード見つつ書いてみました。だいたいこんな感じでしょうか? #include <iostream> #include <vector> #include <cstdlib> #include <ctime> #include <climits> #include <assert.h> using namespace std; typedef</assert.h></climits></ctime></cstdlib></vector></iostream>…

eflagsの値を読み出す

c++

rip/eipと同様にちょっとした手順が必要. #include <iostream> int main(int argc, char **argv) { unsigned long eflags = 0; __asm__ __volatile__ ("pushf\n\t" "popq %%rax\n\t" "movq %%rax, %0\n\t" :"=m"(eflags)); std::cout << "eflags is " << std::hex << </iostream>…

eip/ripの取得方法メモ

c++

インラインアセンブラでmovqとかで直接読み出せないので,call命令を使う. 参考「OSDev.org」 #include <iostream> int main(int argc, char **argv) { unsigned long rip = 0; __asm__ __volatile__ ("call 1f\n\t" "1: pop %0;\n\t" :"=r"(rip)); std::cout << "rip</iostream>…