サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
デスク環境を整える
kikairoya.hatenablog.com
なんか流れてきたので。 USBに設計上の致命的な脆弱性が発見され、そのコードが公開される - GIGAZINE 3行で あるデバイスのファームウェア実装が流出して仕込まれている自己書き換えのバックドアが解析された USBプロトコル上の問題ではない デバイスを一度"攻撃者"の手に渡すか、デバイスが接続されたホストで書き換えツール(=任意のコード)を実行させる必要がある 何ができるのか 特定のデバイスのファームウェアを自由に書き換えられる ↓ USBメモリをUSBキーボードとして振舞うようにしたり、USBモデムに見せかけたりできる ↓ 当該USBメモリ上のデータを改竄したり、ネットワーク通信の経路を捻じ曲げたりできる 条件によってはHID(Keyboard)経由でなんか適当な操作をされる可能性もあるけど、ファームウェア上のロジックでしか実行できないから遠隔操作とはちょっと違う (それに、デバイ
この記事はC++11 Advent Calendar 2011の参加記事です。 ※注: やたらと長いコードが貼ってありますが、実装についての解説は無いので読み飛ばしてください。 Boost.MPL Boost.MPLはBoostを使っている人なら(魔クロ界の住人を除く)ほぼ全員が間接的にお世話になっているライブラリです。 これはC++03で Variadic Templates をエミュレートするためにいろいろエグいことをやっているのですが、これをそのままC++11で書き直すとどうなるか少しだけ見てみましょう。 シーケンス まずはMPLシーケンスのmpl::vectorを見てみましょう。C++03では次のようになっています。 // boost/mpl/vector/vector10.hpp # include <boost/mpl/aux_/config/typeof.hpp> # inc
この記事はBoost Advent Calendar 2011の参加記事です。 本稿では、Boostのコンポーネントの一つ、lexical_castの涙ぐましい最適化について解説します。 lexical_castとは この辺見てください。 安直な実装 まずは一番簡単な実装から見ていきましょう。 template <typename Target, typename Source> Target lexical_cast(const Source &arg) { std::stringstream ss; Target result; if (!(ss << arg && ss >> result)) throw boost::bad_lexical_cast(); return result; } この実装には、iostreamの遅さに由来する重大なパフォーマンスの問題があります。幾ら便利
GCCで8bit長・16bit長のビットフィールドが正しく扱われない(STRICT_ALGINMENTな環境でもアライン無視する、volatile付けると領域破壊を起こす)問題を修正した。 BTSには投げたけれど、多分無視されるのでここにパッチを置いておく(gcc-4_6-branch/trunkにて動作確認)。 I fixed the problem around handling bit-field (GCC generates wrong code when using 8bit or 16bit width of bit-field.) Patch is here (also posted to BTS.) diff --git a/gcc/expr.c b/gcc/expr.c index a4cfee0..a2823a2 100644 --- a/gcc/expr.c +++
GCC 4.5 がリリースされました。 リリースノートの日本語訳です。 Caveats 注意 GCC now requires the MPC library in order to build. See the prerequisites page for version requirements. GCCのビルドにはMPCが(訳注:従来のGMP,MPFRに加えて)必要です。必要なバージョンはprereqのページを参照してください。 Support for a number of older systems and recently unmaintained or untested target ports of GCC has been declared obsolete in GCC 4.5. Unless there is activity to revive them, the
Twitterでうっかり"GCCインラインアセンブラ拡張構文の解説でもするか"と発言したら、二人くらいに期待ageされたので、とりあえずCPUIDを例にインラインアセンブラの解説をします。 環境はi486(x86,IA-32)上のGCCが動く環境を想定しています。80386はCPUIDが無いのでごめんなさい。 x86_64(x64,AMD64)の人もそのまま遊べます。MIPSやPPC動かしている人は回れ右。今回はOSは関係ありません。 コンパイラは当然GCC(gcc/g++)です。3.2以降または4.0以降で動くと思います。MSVCやdmdの人は回れ右。最適化は特記の無い限りしてもかまいません。 単純な例から。 とりあえずcpuid命令を発行してみます。 int main() { asm volatile ( "xor %eax, %eax\n\t" "cpuid" ); return 0
このページを最初にブックマークしてみませんか?
『kikairoya’s diary』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く