Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
asmsense — Kleines Sprachmodell, das Funktionen in gestrippten x86-64-Binärdateien benennt und beschreibt, mit einem offenen Datensatz, Baselines und LoRA-Fine-Tuning-Experimenten. | Kitploit
Tools/GitHubGitHub/krxi/asmsense
Statische AnalyseReverse EngineeringBinäranalyseMaschinelles LernenPapers & ForschungLernen & BildungKI-gestütztes Reverse EngineeringKuratierte RessourcenKI-Sicherheit
GitHubkrxi/asmsense

asmsense

Kleines Sprachmodell, das Funktionen in gestrippten x86-64-Binärdateien benennt und beschreibt, mit einem offenen Datensatz, Baselines und LoRA-Fine-Tuning-Experimenten.

710vor 4 TagenNoch nicht geprüft
Repository anzeigenWebseite

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

asmsense

Englisch · Türkçe

Ein kleines Sprachmodell, das eine Funktion in einer gestrippten Binärdatei betrachtet und ihr einen aussagekräftigen Namen sowie eine kurze Beschreibung gibt.

Aktueller Stand

Das v4-Dataset enthält 228.177 Funktionen aus 341 Projekten über 5 Optimierungsstufen hinweg und ist auf Hugging Face unter der v4-Konfiguration veröffentlicht. Das Ghidra-Skript ist fertig. Das bisher beste kleine Modell, Qwen3-8B + LoRA, trainiert auf den v5-Daten (zuerst Beschreibung, dann Name), erreicht einen Name-F1 von 0,124 auf der festen v4-Teststichprobe und 0,155 auf eval_115; das beste große Modell mit Call-Kontext erreicht 0,167 auf derselben Teststichprobe. Siehe Ergebnisse, Abschnitt 6. Das Modell schreibt neben dem Namen eine englische und eine türkische Ein-Satz-Beschreibung. Der Adapter ist auf Hugging Face verfügbar: krxi123/asmsense-qwen3-8b-lora.

Öffnet man ein gestripptes Programm in Ghidra oder IDA, sieht man Hunderte von Funktionen mit Namen wie FUN_00401a30. Ein Großteil des Reverse Engineerings besteht darin, diese Funktionen eine nach der anderen zu verstehen und zu benennen. Dieses Projekt zielt darauf ab, einem Modell diesen ersten Schritt beizubringen:

input  (stripped x86-64)             target output
─────────────────────────────         ──────────────────────────────────────────────
movzx  eax, byte ptr [rsi]            name:        adler32_update
lea    rdx, [rdi + rax]               description: Computes the Adler-32 checksum
cmp    rdx, 0xfff1      ← 65521                    over the bytes of a buffer.
...                                   # TR: Tampondaki baytlar üzerinden Adler-32
                                      #     sağlama toplamı hesaplar.

Ziel

Große Allzweckmodelle können diese Aufgabe bis zu einem gewissen Grad bewältigen, aber sie sind langsam, teuer und in der Cloud gehostet. Das Ziel ist es, diese Frage zu beantworten:

Kann ein kleines Modell, das auf zweckgebauten Daten trainiert wurde, bei dieser Aufgabe mit großen Modellen mithalten oder sie sogar übertreffen – und dabei auf einem Laptop laufen?

Drei Stufen werden auf demselben Testsatz evaluiert:

StufeModellRolle
ObergrenzeGroße offene Modelle (DeepSeek, GLM, MiMo, Gemma, Qwen)Das derzeit Beste, was mit handelsüblichen Modellen erreichbar ist
BaselineKleines offenes Modell, vor dem Fine-TuningAusgangspunkt
Dieses ProjektDasselbe kleine Modell + LoRA auf diesem DatensatzDer Beitrag des Projekts

Wie es funktioniert

  1. Datengenerierung (cikar.py): Open-Source-C-Projekte werden für x86-64 mit verschiedenen Optimierungsstufen (-O0, -O2) kompiliert. Der Assembly-Code für jede Funktion wird extrahiert. Die Ground Truth – der ursprüngliche Funktionsname – stammt direkt aus dem Quellcode, sodass keine manuelle Kennzeichnung erforderlich ist. projeler.json zeichnet den Commit und die Compiler-Flags auf, die für jedes Projekt verwendet wurden.

  2. Simulieren einer gestrippten Binärdatei: Die Ausgabe ähnelt dem, was Ghidra für eine Funktion in einer gestrippten Binärdatei anzeigt:

    • projektlokale Funktionen werden zu sub_01a3, und globale Daten werden zu dat_0042 (die Nummern werden gemischt, mit separaten Namensräumen für -O0 und -O2),
    • Verzweigungsziele verwenden funktionslokale Labels wie loc_1 und loc_2,
    • externe Bibliotheksaufrufe (memcpy, __stack_chk_fail) und String-Literale (; -> "out of memory") bleiben sichtbar, da sie auch in einer echten Binärdatei sichtbar sind.

    Wenn der echte Name der Funktion in ihrer eigenen Assembly erscheint – zum Beispiel in einer Fehlermeldung – wird die Zeile als sizinti markiert und aus dem Testsatz ausgeschlossen.

  3. Evaluierung (taban.py): Das Modell erhält nur die Assembly und wird gebeten, einen Namen vorherzusagen. Vorhersagen werden anhand der Token-Überlappung (F1) bewertet, sodass nahe Antworten wie crc32_update und update_crc teilweise angerechnet werden.

loc_6:
movzx   r9d, byte ptr [rsi + rdx]
add     rdi, r9                 ← adler32_z (-O2), as the model sees it
add     rcx, rdi
inc     rdx
cmp     rax, rdx
jne     loc_6

Daten

ProjekteFunktionen (-O0 + -O2)
Trainingzlib, libpng, sqlite, lua, mbedtls, zstd, libsodium, expat, brotli, jansson, lz4, libyaml, xxhash, cJSON16.804
Test (memorierungsresistent)tomlc17, cyaml, mu_json_x, sajs, picomatch777 → Evaluierungsset 115

Der Datensatz ist auf Hugging Face verfügbar: krxi123/asmsense (16.804 Trainingsbeispiele, 777 Testbeispiele, das eval_115-Evaluierungsset und Lizenztexte). Er ist auch auf Kaggle gespiegelt: krxiii/asmsense.

Skalierter Datensatz (v4-Pipeline, 5 Optimierungsstufen)

Permissiv lizenzierte (MIT, BSD, Apache-2.0, ISC, zlib) C-Projekte, die mit olcekle.py von GitHub ausgewählt wurden, wurden mit cikar_bin.py (echte dylib + strip -x) bei -O0/-O1/-O2/-O3/-Os kompiliert. Projekt-Build-Skripte wurden nicht ausgeführt; Dateien wurden einzeln mit clang kompiliert, und Dateien oder Projekte, die nicht kompiliert werden konnten, wurden übersprungen. Zeilen wurden nach normalisiertem Assembly-Hash dedupliziert. Zeilen mit Assembly, die mit Validierungs-/Testdaten identisch war, wurden aus dem Training entfernt, während vendored Kopien, deren (Datei, Name)-Paare im Training auftraten, aus der Validierung/dem Test entfernt wurden. Jede Zeile hat ein lisans-Feld.

SplitProjekteZeilenEindeutige Quellfunktionen
Training290196.11772.179
Validierung2319.7706.667
Test (wenig bekannt, ≤200 Sterne, 2024+)2812.2904.685

Von 473 Projekten erzeugten 352 Zeilen und 120 konnten nicht kompiliert werden (Kernel-, Embedded- oder plattformabhängiger Code). Es wurde nur clang verwendet. Die Daten werden außerhalb von Git gehalten und können mit python3 aday_bul.py und python3 olcekle.py hepsi neu generiert werden.

Der Trainings-/Test-Split ist strikt projektebene: Keine Funktion eines Projekts darf auf beiden Seiten erscheinen. Testprojekte wurden bewusst wenig bekannt gewählt (2-190 Sterne), und die meisten wurden 2024-2025 begonnen, wodurch es weit unwahrscheinlicher ist, dass große Modelle ihnen während des Trainings begegnet sind, als bei einer Bibliothek wie zlib. Lizenzen: veri/LISANSLAR.md.

Bekannte Ausnahme: vendored Code. Ein unabhängiges Audit der veröffentlichten v6-Daten (rapor/arastirma/V6_VERI_DENETIMI.md, veri_denetim_v6.py) bestätigte, dass kein Projekt, keine id oder kein (Projekt, Datei, Name) auf beiden Seiten erscheint, aber das Testprojekt snkv SQLite unter seinen eigenen Dateinamen einbettet, während sqlite ein Trainingsprojekt ist. In der festen 2.000-Zeilen-Teststichprobe haben 217 Zeilen (10,85 %) einen Namen, der mit einer SQLite-Trainingsfunktion identisch ist. Jedes Modell erzielt auf diesen Zeilen niedrigere Werte, sodass sie die Ergebnisse nicht aufblähen; sie verringern stattdessen die Lücke zwischen klein und groß (siehe Ergebnisse, Abschnitt 6). Die Validierungsstichprobe valid_300 enthält 16 ähnliche Zeilen (5,3 %).

Ergebnisse

1. Memorierungsresistenter Test: 5 wenig bekannte Projekte, 115 Funktionen

Mittlere Name-F1 (1,0 = exakte Übereinstimmung). In der Spalte „Prefix-stripped F1" wird das gemeinsame Namenspräfix jedes Projekts (cyaml_, mu_, sajs_) von beiden Seiten entfernt; das Modell kann dieses Präfix nicht aus der Assembly ableiten.

Tool herunterladen