Strings that appeared in 2+ libraries used to be deleted from every database, which dropped legitimate indicators when a dependency was vendored (e.g. zlib sources copied into curl). Instead, every entry is now stamped with the number of distinct libraries the string appears in (OpenSourceString.count). count=1 means the string is unique to one library; count>=2 indicates a shared string that the consumer should weight accordingly. Strings are kept in every database they appear in, so the vendored-dependency case preserves the original zlib indicator. The loader schema gains a defaulted 'count: int = 1' field, so legacy .jsonl.gz files (no count) still decode and are interpreted as count=1. Preserved (non-rebuilt) libraries are only rewritten when their per-string counts actually change, so the workflow does not produce spurious diffs on runs that don't add or remove libraries. |
||
|---|---|---|
| .. | ||
| build_oss_db.py | ||
| extract_rust_hashes.py | ||
| idaplugin.py | ||
| README.md | ||
| render-binja-import-script.py | ||
| render-ghidra-import-script.py | ||
| render-ida-import-script.py | ||
| render-r2-import-script.py | ||
| render-x64dbg-database.py | ||
FLOSS Scripts
FLOSS supports converting its output into scripts for various tools. Please see the render scripts in this directory.
Additionally, there is another plugin for IDA to allow FLOSS to automatically
extract obfuscated strings and apply them to the currently loaded module in IDA. idaplugin.py is a IDAPython script you can directly run within IDA Pro (File - Script File... [ALT + F7]).
Installation
These scripts can be downloaded from the FLOSS GitHub repository alongside the source, which is required for the scripts to run. To install FLOSS as source, see the documentation here.
Usage
Convert FLOSS output for use by other tools
- Run FLOSS on the desired executable with the
-jor--jsonargument to emit a JSON result and redirect it to a JSON file.
$ floss -j suspicious.exe > floss_results.json
For Binary Ninja, IDA Pro, Ghidra or Radare2:
- Run the script for your tool of choice by passing the result json file as an argument and redirect the output to a Python (.py) file.
Ghidra Example:
$ python render-ghidra-import-script.py floss_results.json > apply_floss.py
- Run the Python script
apply_floss.pyusing the desired tool.
For x64dbg:
-
Instead of a Python file, redirect the output to a .json file.
$ python render-x64dbg-database.py floss-results.json > database.json -
Open the JSON file
database.jsonin x64dbg.