You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
New Year, New Conference! Join us for RE//verse Feb 27-Mar 1 in Orlando, FL Disassemble and decompile code Automate analysis with C++, Python, or Rust Visualize control flow and stack layouts Triage samples quickly Extend functionality with plugins Organize artifacts and analysis databases Debug issues interactively Collaborate in real-time with Enterprise Try in seconds for free with Cloud Binary
新しい高性能で汎用的なシステムコールフックの仕組みを作ってみました。 モチベーションとして、システムコールをフックしてユーザー空間でエミュレートしたくなったのですが、現状、性能と汎用性を両立する仕組みがなさそうだったので、新しい方法を考えました。 今回のシステムコールフックの仕組みは以下のような特徴があります。 ptrace より 100 倍以上高速 LD_PRELOAD や既存のバイナリ書き換えツールより確実 カーネルへの変更なし、かつカーネルモジュールを使わない プログラムのソースコード、プログラムの再コンパイル不要 eBPF でトレーシングをしているけれど、できれば制約が少ないユーザー空間でトレーシングツールを作りたい。もしくは、gVisor のようなサンドボックスを作りたいけれど、ptrace による性能劣化が大きいので、他の高速なシステムコールフックの仕組みが使いたい、というよう
golangは低レベルな処理(バイナリの取り扱いとかね)もちゃんと行うことができる. 基本(byte型を使う) golangは組み込みでbyte型が用意されている. これはその名の通りバイトを扱うための型で, 配列やスライスにすれば単純なバイトストリームを扱える. package main import ( "fmt" ) func main() { b := []byte{0xDe, 0xaD, 0xBe, 0xeF} fmt.Printf("%b\n", b) // 2進表示 fmt.Printf("%d\n", b) // 10進表示 fmt.Printf("%x\n", b) // 16進小文字表示 fmt.Printf("%X\n", b) // 16進大文字表示 } [実行結果] [11011110 10101101 10111110 11101111] [222 173 19
Javaのアセンブラと逆アセンブラをCommon Lispで作りました。 一部対応してない命令がありますが、大体動作します。 アセンブリはもちろんS式で記述します。読み込むときはreadするだけ。 オペランドのない命令はアトム、オペランド付きの命令はリストとなっています。 とりあえずhello world。 ;; ljTest.lja (class "ljTest" "java/lang/Object" (public super) method ("<init>" "()V" (public) aload_0 (invokespecial "java/lang/Object" "" "()V") return) method ("main" "([Ljava/lang/String;)V" (public static) (meta max-stack 2) (getstatic "
Hey, all cool kids have exciting Engineering Newsletters these days, so it’s high time the JavaScript Binary AST got one! Summary JavaScript Binary AST is a joint project between Mozilla and Facebook to rethink how JavaScript source code is stored/transmitted/parsed. We expect that this project will help visibly speed up the loading of large codebases of JS applications and will have a large impac
Most Go binaries come without any man page. The tool goman fills this gap. If the corresponding project includes a decent README file (and most projects do), goman find this README file and displays it on the terminal. It kept happening to me: I type man <blah> to get the man page of <blah>, only to find out that <blah> is a Go binary and hence has no man page (except for rare cases where the auth
These days, JSON (JavaScript Object Notation, see ECMA-404) is used in many cases where data has to be exchanged. Lots of protocols between different services use it, databases store JSON (document stores naturally, but others increasingly as well). It is popular, because it is simple, human-readable, and yet surprisingly versatile, despite its limitations. At the same time there is a plethora of
あれ、 "-s"では変わってないですね…darwin環境ではでないのかななld周りのなにかだと思うのでそれはあとで追うとして、元々が26MBだったのが、5.2MBまで減りました。 圧縮に upx -9 を使った場合、かかった時間は15.70秒でそこそこ時間がかかりますね。3回ほど実行してだいたい同じぐらいでした。伸長時は0.10秒ほどでした。もちろんメモリなどにも依存しますので、この結果は鵜呑みには出来ませんが、あくまで目安として。 さらにいうと、 upx -1 で圧縮した場合は 0.78秒しかかかりません。それでいて、6.4MBと充分な圧縮効率となりました。この辺りはターゲットとする環境に合わせて決めればいいと思いますが、 -1 で十分な気もします。 まとめ¶ Goのバイナリが大きい問題は、ldflagsとUPXを使うことである程度解決できるのではないか、という話でした。 UPX知らなか
The Go binary diet We all know the story. Winter came and brought with it some excess fat onto our Go binaries. No worries, with a simple diet and some exercise they will be in shape in no time. Let’s start by writing the most basic Go program. package main func main() { println(“Hello”) } Then as any good Go developer you build it with: go build What you end up with is a 1.1Mb Go binary. Now is t
1. PHPでバイナリ変換 プログラミング 〜 前提知識から openpear/IO_Bit の紹介、応用事例まで 〜 “よや” <yoya@awm.jp> 3. 発表題目 (pure) PHP でバイナリ変換プログラミング ここで云う pure は PHP の標準関数だけでという意味です 資料は公開してるので、この場で分からなくなくても大丈 夫です http://d.hatena.ne.jp/yoya/20111112/php 4. 対象者 Web開発に飽きてきた人向け 2進数を知っている。指を使ってよいので2進を16進に変換で きる バイト(Byte)とかビット(Bit)という言葉を聞いたことがある PHP には(実は)型があって string, integer, flort で処理が違うと いう話を何処かで聞いたことがある
Daniel Mitterdorfer, comSysto GmbH @dmitterd Behold! It will get scary. Topics Illusions by (J)VMs Interpreter JIT Compiler Memory Illusions Based on A JVM Does That??? Write Once, Run Anywhere One "Binary" for All Platforms Consistent Memory Model (Java Memory Model) Consistent Thread Model Bytecodes Are Fast (JITing) Infinite Heap (Garbage Collection) What "is" a JVM? The JVM is specified in The
go で binary package の Write は毎回 allocate しているのでもし速度が必要な場合は binary.ByteOrder interface ( binary.BigEndian, binary. LittleEndian ) を直に使うと改善出来る。 もちろん binary.Write の方が使いやすいので速度とかを気にする場合に binary.ByteOrder を使うのが良さそう。 それぞれ下のように利用する。 binary.Write binary.Write(&buf, binary.BigEndian, uint16(...)) binary.BigEndian binary.BigEndian.PutUint16(b, uint16(...)) 実際のコード apns のコードを前に書いた時に binary package を使ったのを思い出し比
FastCoder is a high-performance binary serialization format for Cocoa objects and object graphs. It is intended as a replacement for NSPropertyList, NSJSONSerializer, NSKeyedArchiver/Unarchiver and Core Data. The design goals of the FastCoder library are to be fast, flexible and secure. FastCoder is already faster (on average) for reading than any of the built-in serialization mechanisms in Cocoa,
UIKonf, Berlin @ 2014
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く