Jordan Allred

Machine learning engineer, exploit developer in training

Jordan Allred

I build machine learning systems for a living — lately, mostly with large language models.

On my own time I’m learning exploit development on Windows x86-64, and writing the tools I need along the way.

Day job

Machine learning, from classical models to LLMs.

This is most of my career and most of what I do at work today: building ML systems end to end, from data and features through training, evaluation and deployment. Lately, that means large language models.

next_token.py

On weekends, Jordan is usually

A toy: a hand-written probability tree, not a real model. Pick a token or sample.

Large language models

Building on and evaluating today’s LLMs — where most of my recent work has gone.

Modeling

Deep learning in PyTorch and TensorFlow, and classical ML with scikit-learn when it’s the right tool.

Data & evaluation

Feature engineering and reproducible training and evaluation pipelines. Measure first, then believe.

Shipping

Models served from containerized FastAPI services, with CI/CD around them.

Most of my ML work is professional and not public. One open-source project from the computer-vision side:

Illustration of objects in a street scene with detection boxes

Computer vision

Live Object Detection

Real-time YOLO detection on webcam or RTSP feeds, recording clips when something shows up.

Frames come in from a webcam or RTSP stream, detection runs on a background thread so the live feed never stutters, and short MP4 clips are saved whenever a detection fires. Any Ultralytics-trained YOLO weights drop straight in.

Python, YOLO, OpenCV, Flask

Side quest

Learning to break software.

Outside work, I’m putting serious hours into exploit development and vulnerability research, focused on Windows x86-64: reverse engineering, mitigations, ROP.

It started as a way to branch out into systems programming. Now it’s a goal: I want to be very good at this. Building tools is how I learn — writing a gadget finder teaches you more about gadgets than using one.

target.exe0x0000–0x009F
00004D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00
0010B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00
002000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
003000 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
00400E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
005069 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F
006074 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20
00706D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 00
008050 45 00 00 64 86 06 00 5A 1C 3E 67 00 00 00 00
009000 00 00 00 F0 00 22 00 0B 02 0E 26 00 9E 01 00
Hover a row.

Exploit development on Windows

ropnroll

A ROP/JOP gadget finder that measures what gadgets do instead of guessing.

Illustration of ropnroll finding gadgets and synthesizing a ROP chain

Most gadget tools infer a gadget’s effect from a hand-written instruction model. ropnroll runs every gadget on an emulated CPU with several input vectors and fits a closed-form relation — constant, copy, affine, bitwise — to the outputs. If the relation holds on every trial, it’s exact, and it’s correct for every architecture Unicorn supports, quirks included.

On top of that sits a best-first (A*) chain synthesizer that builds minimum-gadget call chains against the MS x64, cdecl and stdcall conventions, then verifies them under emulation before you ever touch a debugger.

Semantic search
Query by effect — rcx=rax+8 — not by instruction text.
Mitigation report
DEP, ASLR, CFG, XFG, CET and SafeSEH for any PE.
Exports
json, raw, C or pwntools, with placeholders for values only a live process knows.

Python, Unicorn, Capstone, LIEF, x86 / x64 / ARM64

security → scan → pivot on a test binary
call --verify: build, emit pwntools, check under Unicorn

Protocols and reverse engineering

pktfmt

RFC-style packet and memory-layout diagrams from a one-line field spec.

Illustration of pktfmt turning network captures into packet diagrams

A pip-installable, cross-platform successor to the classic protocol tool. It ships with 20+ built-in definitions — TCP, IPv6, DNS, QUIC, Modbus, DNP3 — and takes custom layouts inline or as JSON.

The feature built for reverse engineering: paste a stack listing straight out of Ghidra and get a memory-layout diagram back, with ABI-implied slots filled in and pointers annotated, ready to drop into notes or an issue comment.

Ghidra import
Stack listings become diagrams with no manual transcription.
Validation
Flags overlapping and misaligned fields.
Output
ASCII or Unicode box drawing, for terminals, Markdown and issues.

Python, CLI, Networking

try it
 0                  1                  2                  3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
│      Type     │     Flags     │             Length            │
├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│                           Session ID                          │
├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
┊                            Payload                            ┊
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘

A TypeScript port of pktfmt’s renderer, running in your browser. Output matches the CLI.

About

I’ve spent most of my career in machine learning, and I still do. Lately I’ve been pointing the same curiosity at the layer underneath.

My ML work has run from classical models and feature engineering through deep learning to today’s LLMs. It’s still my day job, and it left me with a habit of measuring things rather than assuming them.

Systems programming started as a way to branch out and keep learning. It turned into exploit development on Windows x86-64, which I’m working hard to get very good at. ropnroll is where the two meet: it fits relations to measured gadget behaviour instead of guessing it.

Machine learning

  • LLMs & transformers
  • PyTorch
  • TensorFlow
  • scikit-learn
  • pandas and NumPy

Languages

  • Python
  • C
  • TypeScript
  • SQL
  • Swift

Security

  • Reverse engineering
  • Exploit development
  • Windows internals
  • Binary analysis

Infrastructure

  • Docker
  • FastAPI
  • CI/CD
  • Next.js

On GitHub

Recently on GitHub

Pulled live from my profile, most recently pushed first.

Contact

Say hello.

Machine learning and LLM work, exploit-dev conversations, or a bug in one of my tools. I read everything that comes through here.