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.
以前にMicroBatchFramework - クラウドネイティブ時代のC#バッチフレームワークという名前でリリースしていたライブラリですが、リブランディング、ということかでConsoleAppFrameworkに変更しました。それに伴い名前変更による多数の破壊的変更と、全体の挙動の調整を行っています。 github/ConsoleAppFramework 当初の想定ではバッチ、特に機能紹介にあるMulti Batchをメイン機能と捉えて作っていたのですが、最終的には汎用的なコンソールアプリケーション用のフレームワークとして出来上がっていたので、より適正な名前にすることで、多くの人に正しく捉えてもらって、届けられるのではないかと思い、今回の変更に至りました。 といったように、 Microsoft.Extensions の仕組みに乗ってLogging, Configuration, DIな
Usage Reference Development Sponsor Introduction# PDM, as described, is a modern Python package and dependency manager supporting the latest PEP standards. But it is more than a package manager. It boosts your development workflow in various aspects. Feature highlights# Simple and fast dependency resolver, mainly for large binary distributions. A PEP 517 build backend. PEP 621 project metadata. Fl
DirectXの作者の一人であるEric Engstromが死去した。これにことよせてD言語のWalter Brightが思い出話を書いている。 I've known Eric since around 1985 or so when he came to work at Data I/O. Our fr... | Hacker News Ericは1985年から知り合いだった。Data I/Oで働いていた頃だ。次第に疎遠になっていったが、あいつは常に特別なやつだった。 今となっては私しか覚えていないであろう思い出話をひとつしてやろう。いつ思い出しても笑えるし、まさにあいつらしい話だ。 あいつが1991年か92年あたりにMicrosoftで働いていた頃、問題を抱えているマネージャーがいた。アセンブリ言語で書かれたプログラムがあった。5万行ほどのサイズだ。プログラムには修正すべき不具合があっ
はじめに お久しぶりです。セキュリティエンジニアの桑原です。 近年、Go 言語によって作成されたマルウェアが増加しています。 Go 言語の特徴として開発の容易さや任意の環境に向けてビルドを行うクロスコンパイルが可能であるといった点があります。 攻撃者も Go 言語を使用することで、手早く、複数の環境を攻撃できるマルウェアを開発できることが増加要因の 1 つとして挙げられます。 また、以前の記事でも紹介した通り、Go 言語製の実行ファイルは C/C++ 等で作成された実行ファイルとは大きく異なるバイナリ構造をしています。 このため、Go 言語を使用するだけでパターンマッチングによる検出を容易に回避できる可能性があることも増加要因として考えられます。 私たちセキュリティエンジニアは最新の攻撃者の動向に対応するため、Go 言語製マルウェアの解析も必要になってくることでしょう。 そこで、私は先日、
Large (1TB+) file support Decoding of integer/floating point value types Inline disassembly of machine code Highlighting and annotation of ranges of bytes Side by side comparision of whole files or selections Lua scripting support (API reference) Virtual address mapping support Support for common text encodings (ASCII, Unicode, ISO-8859-X, etc) Import and export of Intel HEX files. Bitmap data vis
For the past two years I've worked on a project implementing a universal lightweight Just-in-Time (JIT) compiler known as MIR. The cornerstone of the project is a machine-independent medium-level intermediate representation (MIR). A big part of the project consists of code that compiles C source code into MIR. Because MIR can be interpreted and just-in-timed, I easily extended this C-to-MIR compil
Linux Daily Topics 2021年6月2日もうFSFにとらわれない ―GCC運営、FSFへの著作権移譲を開発者に求めないポリシーに GCCプロジェクトを運営するGCC Steering Committeeは6月1日、GCC 9のポイントリリース「GCC 9.4」の公開に合わせ、GCCの著作権譲渡ポリシーの変更を発表、今後はFree Software Foundation(FSF)への著作権譲渡をコントリビュータに依頼しない方針を明らかにした。GCCをはじめとするGNUプロジェクトへのコントリビュータはこれまで自身が開発したプログラムの著作権をFSFに移譲するよう求められてきたが、GCCに関してはその縛りがなくなることになる。 Update to GCC copyright assignment policy GCC Steering CommitteeメンバーであるDavid
I read a blog post by Alex Muscar, “Beautiful Binary Search in D“. It describes a binary search called “Shar’s algorithm”. I’d never heard of it and it’s impossible to google, but looking at the algorithm I couldn’t help but think “this is branchless.” And who knew that there could be a branchless binary search? So I did the work to translate it into a algorithm for C++ iterators, no longer requir
はじめに セキュリティエンジニアの桑原です。 プログラミング言語には様々なものがあります。 その中でも近年 Go 言語がシンプルなコードであり並行処理を簡単に書けるという特徴から人気が出ています。 しかしながら、マルウェアの作成者も Go 言語に目をつけはじめました。 その結果、WellMess や TellYouThePass といった Go 言語製のマルウェアが出現しています。 こうした Go 言語製の実行ファイルは C 言語等で作成された実行ファイルと異なる点が多く、それを知らずに解析を始めると戸惑うことがあります。 そこで本ブログでは、Go 言語で解説用に作成した無害な実行ファイルの解析を通して、その特徴を紹介します。 以下は今回使用したツールと環境です。 Windows 10 x64 20H2 Ghidra 10.1.1 x64dbg Mar 16 2021, 01:13:24
プログラミング言語やライブラリの名前ではなく、ブラウザでプログラムを高速実行するための、 「ブラウザ上で動くバイナリコードの新しいフォーマット(仕様)」 である。 Google, Microsoft, Mozzila, Appleによって仕様が策定され開発が進められている。 WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications. htt
tl;drgccなら-Wl,...でリンク時のオプション(==ldコマンドのオプション)を渡せる。オプションが複数ある場合はカンマで繋げる。 ldのオプションで動的(-Bdynamic)と静的(-Bstatic)を選ぶことができ、これは混在させることができる。 例: glibc以外をstatic linkしたい g++ -o a.out main.o -static-libgcc -static-libstdc++ -Wl,-Bdynamic,-lc,-ldl,-lpthread,-Bstatic,-lboost_program_options,-lboost_filesystem,-lboost_system,-lssl,-lcrypto,-lz -lc,-ldl,-lpthreadあたりがglibcのライブラリ。 背景時代はコンテナや!シングルバイナリのほうが扱い楽やで!!「実行する環
オープンソースのMac用バイナリエディタ「Hex Fiend」のBeta版がUniversal Binary化され、Apple Silicon製Macをサポートしています。詳細は以下から。 Hex Fiendは元AppleでAppKitの開発に携わっていたPeter Ammonさんが開発したオープンソースのバイナリエディタで、現在はBoxのKevin Wojniakさんがメンテナンスを行っていますが、このHex FiendがApple Silicon製Macでネイティブ動作するarm64と現在のIntel Macでネイティブ動作するx86_64バイナリを含んだUniversal Binary(Universal 2)化されたそうです。 Hex Fiend is built as a universal binary for native ARM support on Apple Silic
ここでは本連載でこれまでに紹介してきたバイナリファイルの読み書きの方法をまとめる。詳しい解説はコード例の後で紹介しているリンクを参照してほしい。テキストファイルの読み書きについては「テキストファイルの読み書きまとめ」を参照されたい。 バイナリファイルの読み書き # 文字列のバイナリファイルへの書き込み with open('test.bin', 'wb') as f: s = 'ディープインサイダー' b = s.encode() # 文字列もバイト列にエンコードする必要がある f.write(b) # バイナリファイルにはバイト列しか渡せない # 文字列のバイナリファイルからの読み込み with open('test.bin', 'rb') as f: b = f.read() s = b.decode() print(s) # ディープインサイダー # 整数のバイナリファイルへの
はじめに gccの最適化指示である-Ofastをお気軽に使ってる記事を見掛けたので注意喚起的なやつです。 -Ofastとは何ぞや gccのドキュメントから引用 https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-Ofast -Ofast Disregard strict standards compliance. -Ofast enables all -O3 optimizations. It also enables optimizations that are not valid for all standard-compliant programs. It turns on -ffast-math, -fallow-store-data-races and the Fortran-specific -fstac
記事一覧 はじめに マルチパスコンパイラ (この記事) 定数に関する最適化 プログラムの構造 対象読者 コンパイラの内部構造について興味がある方 コンパイラに関して精通している方(批評お待ちしております) ワンパスコンパイラ 突然ですが,初めてコンパイラを作るのであれば,大抵次のような構造になると思います. 図中の赤い部分は,どんなにシンプルなコンパイラでも含まれているだろうという意味を込めたものです.字句解析や中間言語生成はそれぞれ構文解析やコード生成と区別化がつかなくなっている場合もあるかと思います. ここで図中に,一つのパスと書かれているのが気になった方もいるかと思います. プログラムのとある表現(ソースコードや中間言語)は,ある操作を施されて別の表現へと移っていきます.この時,ある操作やそれを行うためのルーチン群のことをパスと呼びます. この説明だと,ASTが中間言語へ変換されるの
Please note, the compiler is in a very early stage and not usable yet for compiling real Rust programs. gccrs is a full alternative implementation of the Rust language ontop of GCC with the goal to become fully upstream with the GNU toolchain. The origin of this project was a community effort several years ago where Rust was still at version 0.9; the language was subject to so much change that it
Memzoom lets you view/monitor the raw memory of processes/files in your UTF-8 terminal. Memzoom is like the less command except designed for binary data with live updates. It represents non-ASCII characters using IBM Code Page 437 as a base-256 binary alphabet. It implements zooming via CTRL+MOUSEWHEEL which uses an image scaling algorithm (better than Lanczos!) that enables you to monitor large a
Linus Torvaldsは8月24日(米国時間)、2020年10月のリリースに向けて開発中の「Linux 5.9」において、カーネルエンジニアのGustavo Silvaの修正パッチをマージした。このパッチではカーネル全体で使われていた2484もの「/* fall through */」および類似のコメント部分をすべて「fallthrough;」にリプレースしているほか、不要なfall-throughの削除も行われている。 Merge tag 'fallthrough-pseudo-keyword-5.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux -Linux kernel source tree Linuxカーネルのメインライン開発では、今回のパッチを提供したSilvaを中心に、s
GCC for New Contributors¶ This is an unofficial guide to GCC’s internals, aimed at new developers, and at plugin authors. Source: https://github.com/davidmalcolm/gcc-newbies-guide I’m a relative newcomer to GCC, so I thought it was worth documenting some of the hurdles I ran into when I started working on GCC, to try to make it easier for others to start hacking on GCC. Hence this guide. Other sou
This article brought to you by LWN subscribersSubscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the next set of articles possible. The gccrs project is an ambitious effort started in 2014 to implement a Rust compiler within The GNU Compiler Collection (GCC). Even though the task is far from comp
hakatashiです。 競プロ界では一般的なテクニックであるにも関わらず、何かと定期的に燃えがちな話題であるbits/stdc++.h。便利ではあるけど、そもそもこのファイルって何?年齢は?性別は?家族構成は?彼女はいる?調べてみました! そもそも、bits/stdc++.hって何? GNUが開発するC++の標準ライブラリの実装であるlibstdc++のプリコンパイル済みヘッダを生成するためのソースファイルです。 具体的な中身はgccのソースリポジトリのlibstdc++-v3/include/precompiled/stdc++.hから参照することができます。見ると、CおよびC++の標準ライブラリに含まれるヘッダがすべてインクルードされており、このことから「#include <bits/stdc++.h>と書くとすべての標準ライブラリを一度にインクルードできる」という性質を持ちます。
Windows OSを狙うマルウェア(PEフォーマット)は、コードの分析を困難にするためのさまざまな難読化やパッキングが行われており、その種類は多岐にわたります。それに比べて、Linux OSを狙うマルウェア(ELFフォーマット)のパッキング手法は数が限られており、ほとんどの場合UPXやUPXベースのパッキング手法が用いられています。 今回は、Linux OSを狙うマルウェアによくみられる、upxコマンドでのアンパックを困難にするAnti-UPX Unpackingテクニックについて解説します。 Anti-UPX Unpackingテクニックを使用したマルウェア Anti-UPX Unpackingテクニックを使用した最も有名なマルウェアは、IoT機器をターゲットに感染を広げているマルウェアMirai、およびそれらの亜種のマルウェアです。図1は、UPXパッキングされたバイナリとMiraiの
Happy with my recent breakthrough in understanding C integer divisions after weeks of struggle, I was minding my own business having fun writing integer arithmetic code. Life was good, when suddenly… zsh: segmentation fault (core dumped). That code wasn't messing with memory much so it was more likely to be a side effect of an arithmetic overflow or something. Using -fsanitize=undefined quickly id
The GNU Compiler Collection(GCC)開発チームは5月7日、最新のメジャーリリースとなる「GCC 10.1」公開を発表した。静的コード解析が実験的に導入され、C++20のサポートも強化した。 The GNU Compiler Collection(GCC)はGNUオペレーティングシステム向けのコンパイラとして開発がスタートしたプロジェクトで、 C/C++やObjective-C、Fortran、Ada、Go、Dなどさまざまな言語に対応するフロントエンドとライブラリを提供する。 GCC 10.1は、2019年5月に公開されたGCC 9.1に続くメジャーリリース。この間、プロジェクトはバージョン管理をSubversionからGitに変更している。 C++20のサポートが、コンパイラとlibstdc++ライブラリの両面で強化されている。constexpr関数における評価
TL;DR This is the story of how I managed to expose my Golang chess API project cheesse as a WebAssembly binary, compiled using TinyGo, so JavaScript could use it without needing a server. The blogpost is optimised for helping others going through a similar exercise, rather than for readability, so expect a little too much of “if this, do this”. Sorry. What are all those technologies? WebAssembly A
Pattern definitions available for 50 different file formats! Free and Open Source Hex Editor for all OSes and the Web What is ImHex? ImHex is a Hex Editor, a tool to display, decode and analyze binary data to reverse engineer their format, extract informations or patch values in them. What makes ImHex special is that it has many advanced features that can often only be found in paid applications.
GCC 12.1 Compiler Released With AVX-512 FP16, Better RISC-V Support, More C++23 Features Written by Michael Larabel in GNU on 6 May 2022 at 06:35 AM EDT. 6 Comments GCC 12.1 is out today as the first stable release of GCC 12. It also marks 35 years already since the release of GCC 1.0. With a year's worth of changes, GCC 12.1 is a big feature release with a lot of good stuff in it from new C/C++ f
はじめて学ぶバイナリ解析 不正なコードからコンピュータを守るサイバーセキュリティ技術 小林 佐保, 岡田 怜士, 浅部 佑, 満永 拓邦 インプレス NextPublishing 1,760円 (1,600円+税) バイナリ解析が直感的に理解しにくいことを考慮し、プログラミングに詳しくない大学1・2年生や新社会人でも理解できるよう、各章での説明はできるだけやさしい表現を用いました。 関連サイト本書の関連ページが用意されています。 NextPublishingオフィシャルWebサイト内容紹介 近年、総務省や経済産業省では、サイバーセキュリティ人材育成を社会的な課題として重要施策の一環として取り扱っています。しかし、「セキュリティの基本的な解説書」が、英語・国語のような基礎的な科目と比較して、現状十分に揃っていません。そこで、まずはセキュリティの基礎技術であるバイナリの入門的な内容をまとめまし
なぜシステムコールについて気にするのか システムコールとはOSが提供する機能をアプリケーションが利用する仕組みのことですが、システムコールについて知ることはアプリケーションの働きを理解する上で重要です。 なぜならアプリケーションの動作の中で、重要なもののほぼ全てはシステムコールを利用して実現されているからです。 例えば、ネットワークを利用した通信、ファイルへの入出力、新しいプロセスの生成、プロセス間通信、コンテナの生成などは、システムコールを使用することで実現されています。 逆にシステムコールを使わずにアプリケーションが出来ることと言えば、CPU上での計算とメモリへの入出力くらいでしょう。 この記事で解説する内容 この記事で解説する内容は、システムコールの一般的な性質や仕組みについてです。 そもそもシステムコールとは何なのか、どのような仕組みで実現されているのかというところを解説します。
__) The extensible editor for structured __) binary data ---._______) [ video | releases | pickles | development | community | related projects ] GNU poke is an interactive, extensible editor for binary data. Not limited to editing basic entities such as bits and bytes, it provides a full-fledged procedural, interactive programming language designed to describe data structures and to operate on th
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く