<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress.com" -->
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"><url><loc>https://sean.heelan.io/about-me/</loc><lastmod>2026-01-19T22:57:12+00:00</lastmod><changefreq>weekly</changefreq><priority>0.6</priority></url><url><loc>https://sean.heelan.io/2026/01/18/on-the-coming-industrialisation-of-exploit-generation-with-llms/</loc><lastmod>2026-01-19T22:52:42+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2025/05/22/how-i-used-o3-to-find-cve-2025-37899-a-remote-zeroday-vulnerability-in-the-linux-kernels-smb-implementation/</loc><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2025/05/screenshot-from-2025-05-06-18-07-39.png</image:loc><image:title>Screenshot from 2025-05-06 18-07-39</image:title></image:image><lastmod>2025-06-05T17:27:44+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2023/06/30/application-optimisation-with-llms-finding-faster-equivalent-software-libraries/</loc><lastmod>2023-06-30T14:57:16+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2023/03/01/finding-10x-performance-improvements-in-c-with-codeql-part-2-2-on-combining-dynamic-and-static-analysis-for-performance-optimisation/</loc><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/screenshot-from-2023-02-21-19-40-38.png</image:loc><image:title>screenshot-from-2023-02-21-19-40-38</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/screenshot-from-2023-02-21-19-40-09-1.png</image:loc><image:title>screenshot-from-2023-02-21-19-40-09-1</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/screenshot-from-2023-02-21-19-40-09.png</image:loc><image:title>screenshot-from-2023-02-21-19-40-09</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/monero_graph1.png</image:loc><image:title>monero_graph1</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/monero_asm2.png</image:loc><image:title>monero_asm2</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/monero_asm1.png</image:loc><image:title>monero_asm1</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/bitcoin3.png</image:loc><image:title>bitcoin3</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/bitcoin2.png</image:loc><image:title>bitcoin2</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/asm2.png</image:loc><image:title>asm2</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/asm1.png</image:loc><image:title>asm1</image:title></image:image><lastmod>2023-03-01T09:05:48+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2023/02/14/combining-static-and-dynamic-analysis-in-performance-optimisation-part-1-60-improvements-with-continuous-profiling-and-library-matching/</loc><lastmod>2023-02-14T10:37:18+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2012/03/23/anatomy-of-a-symbolic-emulator-part-1-trace-generation/</loc><lastmod>2023-02-13T18:03:05+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/posts/</loc><lastmod>2023-02-13T17:57:47+00:00</lastmod><changefreq>weekly</changefreq><priority>0.6</priority></url><url><loc>https://sean.heelan.io/2019/02/07/some-cool-projects-from-a-dagstuhl-seminar-on-sat-smt-and-cp/</loc><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/19062.02.l.jpg</image:loc><image:title>19062.02.l</image:title></image:image><lastmod>2023-02-10T18:52:23+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2023/02/10/optimising-an-ebpf-optimiser-with-prodfiler-repost/</loc><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/default-mimalloc-simd-z3pgo-k2pgo.png</image:loc><image:title>default-mimalloc-simd-z3pgo-k2pgo</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/default-mimalloc-simd-z3pgo-speedup.png</image:loc><image:title>default-mimalloc-simd-z3pgo-speedup</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/z3-flamegraph.png</image:loc><image:title>z3-flamegraph</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/topn-mimalloc-simd.png</image:loc><image:title>topn-mimalloc-simd</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/default-mimalloc-simd-speedup.png</image:loc><image:title>default-mimalloc-simd-speedup</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/char8-simd-copy.png</image:loc><image:title>char8-simd-copy</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/uint8-copy-loop.png</image:loc><image:title>uint8-copy-loop</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/stl-bitvector-h.png</image:loc><image:title>stl-bitvector-h</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/vb-loop-disasm.png</image:loc><image:title>vb-loop-disasm</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2023/02/init-safety-chk.png</image:loc><image:title>init-safety-chk</image:title></image:image><lastmod>2023-02-10T17:33:13+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2020/11/18/phd-thesis-greybox-automatic-exploit-generation-for-heap-overflows-in-language-interpreters/</loc><lastmod>2020-11-19T12:51:45+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/research/</loc><lastmod>2020-11-02T22:23:49+00:00</lastmod><changefreq>weekly</changefreq><priority>0.6</priority></url><url><loc>https://sean.heelan.io/2019/10/30/gollum-modular-and-greybox-exploit-generation-for-heap-overflows-in-interpreters/</loc><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2019/10/results.png</image:loc><image:title>Exploit generation results</image:title><image:caption>Exploit generation and primitive search results</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2019/10/layouts_solved.png</image:loc><image:title>Heap layout solution comparison</image:title><image:caption>% of heap layout benchmarks solved by random search (rand) versus the genetic algorithm (evo)</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2019/10/gollum.png</image:loc><image:title>Gollum</image:title><image:caption>Workflow diagram showing how Gollum produces exploits and primitives</image:caption></image:image><lastmod>2019-11-01T18:16:38+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2019/03/05/automation-in-exploit-generation-with-exploit-templates/</loc><lastmod>2019-03-12T12:59:14+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/heaplayout/</loc><lastmod>2018-08-21T10:49:49+00:00</lastmod><changefreq>weekly</changefreq><priority>0.6</priority></url><url><loc>https://sean.heelan.io/program-analysis-training/</loc><lastmod>2017-12-05T16:11:17+00:00</lastmod><changefreq>weekly</changefreq><priority>0.6</priority></url><url><loc>https://sean.heelan.io/2017/08/12/fuzzing-phps-unserialize-function/</loc><lastmod>2017-08-14T13:05:07+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2011/06/21/satsmt-summer-school-2011-summary-days-5-6/</loc><lastmod>2017-08-13T11:59:02+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2011/06/16/satsmt-summer-school-2011-summary-days-3-4/</loc><lastmod>2017-08-13T11:58:42+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2011/06/15/satsmt-summer-school-2011-summary-day-2/</loc><lastmod>2017-08-13T11:58:25+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2011/06/13/satsmt-summer-school-2011-summary/</loc><lastmod>2017-08-13T11:58:08+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2016/05/31/tracking-down-heap-overflows-with-rr/</loc><lastmod>2017-08-13T11:56:47+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2017/07/31/upcoming-public-training-4-days-of-advanced-tool-development-with-smt-solvers-london-nov-17/</loc><lastmod>2017-07-31T11:59:38+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2010/12/07/misleading-the-public-for-fun-and-profit/</loc><lastmod>2016-05-27T15:52:13+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2015/11/19/rust-compiler-plugins-a-simple-example/</loc><lastmod>2016-05-26T17:21:23+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/11/30/finding-bugs-with-static-analysis/</loc><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2009/11/uaf_results3.jpg</image:loc><image:title>Analysis results</image:title><image:caption>Analysis results</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2009/11/uaf_results2.jpg</image:loc><image:title>Analysis Results</image:title><image:caption>Analysis Results</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2009/11/uaf_results1.jpg</image:loc><image:title>Results of static analysis for use-after-free bugs</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2009/11/uaf_results.jpg</image:loc><image:title>Results of static analysis for use-after-free bugs</image:title></image:image><lastmod>2016-05-26T17:20:52+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2016/04/26/fuzzing-language-interpreters-using-regression-tests/</loc><lastmod>2016-05-26T17:20:10+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2016/04/13/some-early-stage-work-on-statistical-crash-triage/</loc><lastmod>2016-05-26T17:19:09+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2011/05/08/finding-optimal-solutions-to-arithmetic-constraints/</loc><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2011/05/max_val_sat.png</image:loc><image:title>Maximising the product</image:title><image:caption>Finding the maximum product of height and width</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2011/05/check_ovf.png</image:loc><image:title>Check Overflow</image:title><image:caption>Using the solver to check if an overflow is possible on the argument to malloc</image:caption></image:image><lastmod>2016-05-26T17:17:45+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2010/11/05/augment-your-auditing-with-a-theorem-prover/</loc><lastmod>2016-05-26T17:17:14+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2012/03/23/anatomy-of-a-symbolic-emulator-part-3-processing-symbolic-data-generating-new-inputs/</loc><lastmod>2016-05-26T17:16:12+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/05/06/issa-ireland-seminar/</loc><lastmod>2016-05-26T17:15:53+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2012/03/23/anatomy-of-a-symbolic-emulator-part-2-introducing-symbolic-data/</loc><lastmod>2016-05-26T17:14:33+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2010/10/02/validity-satisfiability-and-instruction-semantics/</loc><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2010/10/find_gadget_context.png</image:loc><image:title>Multiple context specific gadgets</image:title><image:caption>Finding multiple gadgets to achieve the same result</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2010/10/find_gadget_arguments.png</image:loc><image:title>find_gadget.py arguments</image:title><image:caption>Arguments to find_gadget.py</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2010/10/preserve_esi.png</image:loc><image:title>EAX == 0x1, preserve ESI</image:title><image:caption>A generic gadget to set EAX to 1 while preserving ESI</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2010/10/eax_generic.png</image:loc><image:title>EAX == 0x1</image:title><image:caption>A generic gadget to set EAX to 0x1</image:caption></image:image><lastmod>2016-05-26T17:13:52+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2010/10/27/code-analysis-carpentry-ruxcon-2010/</loc><lastmod>2016-05-26T17:13:03+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2011/03/30/heap-scripts-for-tcmalloc-with-gdbs-python-api/</loc><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2011/03/freelist_chunks.png</image:loc><image:title>freelist_chunks</image:title><image:caption>The chunks in a given FreeList</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2011/03/freelist_dump1.png</image:loc><image:title>freelist_dump</image:title><image:caption>TCMalloc FreeLists within Chrome on Linux</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2011/03/freelist_dump.png</image:loc><image:title>freelist_dump</image:title><image:caption>A dump of the FreeLists for TCMalloc within Chrome</image:caption></image:image><lastmod>2016-05-26T17:12:00+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2010/10/15/determining-variable-ranges-part-i/</loc><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2010/10/other.png</image:loc><image:title>Another test</image:title><image:caption>Confirming our byte pattern holds for the other ranges</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2010/10/precise_final.png</image:loc><image:title>Precise results</image:title><image:caption>Discovering the exact values that are possible within the range 0x400000:0x407fff</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2010/10/first_phase_spec_range.png</image:loc><image:title>Checking a specific range</image:title><image:caption>Here we check the 0x0x400000:407fff range</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2010/10/first_phase1.png</image:loc><image:title>first_phase</image:title></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2010/10/first_phase.png</image:loc><image:title>First phase</image:title><image:caption>Coarse analysis searching for candidate ranges</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2010/10/ins_sequence.png</image:loc><image:title>Test Instruction Sequence</image:title><image:caption>Our tests will be for the range 0x767920c6:76792186</image:caption></image:image><lastmod>2016-05-26T17:11:02+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2011/04/14/exploit-necromancy-in-tcmalloc-reviving-the-4-to-n-byte-overflow-primitive-with-insert-to-freelistx/</loc><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2011/03/freelist_ovf3.png</image:loc><image:title>FreeList_ovf3</image:title><image:caption>A memory region of our choosing is handed back to the application </image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2011/03/freelist_ovf2.png</image:loc><image:title>FreeList_ovf2</image:title><image:caption>Allocation from a corrupted FreeList</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2011/03/freelist_ovf1.png</image:loc><image:title>FreeList_ovf1</image:title><image:caption>Overflow of Chunk A into Chunk B</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2011/03/freelist_allocate2.png</image:loc><image:title>FreeList_allocate2</image:title><image:caption>FreeList allocation</image:caption></image:image><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2011/03/freelist.png</image:loc><image:title>FreeListExample</image:title><image:caption>FreeList example</image:caption></image:image><lastmod>2016-05-26T17:10:21+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2011/05/10/infiltrate-2011-slides/</loc><lastmod>2016-05-26T17:09:48+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2012/07/10/better-interpreter-fuzzing-with-clang/</loc><lastmod>2016-05-26T17:07:31+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2012/07/27/smt-solvers-for-software-security-usenix-woot12/</loc><lastmod>2016-05-26T17:07:12+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2012/12/05/moving-location/</loc><lastmod>2016-05-26T17:06:41+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2010/07/17/applying-taint-analysis-and-theorem-proving-to-exploit-development/</loc><lastmod>2016-05-26T17:04:39+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/09/06/game-over-thank-you-for-playing-academia/</loc><lastmod>2016-05-26T17:00:48+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/06/21/extending-to-new-vulnerability-classes/</loc><lastmod>2016-05-26T16:59:50+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/06/19/gathering-constraints-from-conditional-branches/</loc><lastmod>2016-05-26T16:59:22+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/06/02/model-checking-smt-solving-and-morphing-shellcode/</loc><lastmod>2016-05-26T16:57:59+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/06/01/fun-uses-for-an-smt-solver/</loc><lastmod>2016-05-26T16:57:26+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/05/20/pin-problem-solved/</loc><lastmod>2016-05-26T16:53:36+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/05/15/the-romance-is-over/</loc><lastmod>2016-05-26T16:53:11+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/05/13/not-all-shellcode-locations-are-made-equal/</loc><image:image><image:loc>https://sean.heelan.io/wp-content/uploads/2009/05/constraint_lattice21.jpg</image:loc><image:title>Constraint complexity lattice</image:title><image:caption>Constraint complexity lattice</image:caption></image:image><lastmod>2016-05-26T16:52:18+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/05/11/difficulties-in-taint-data-propagation-without-an-ir/</loc><lastmod>2016-05-26T16:51:23+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/05/11/granular-instrumentation-with-pin/</loc><lastmod>2016-05-26T16:50:48+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/05/06/blackhat-usa-paper/</loc><lastmod>2016-05-26T16:50:02+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2016/03/29/nyc-london-training-dates-a-contest-for-students/</loc><lastmod>2016-04-30T10:33:04+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2016/02/25/public-edition-of-advanced-tool-development-with-smt-solvers-coming-soon/</loc><lastmod>2016-02-25T17:55:10+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/07/05/automatic-exploit-generation-lessons-learned-so-far/</loc><lastmod>2010-07-23T22:21:30+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io/2009/09/06/exploit-generation-a-specialisation-of-testing/</loc><lastmod>2009-09-06T15:21:30+00:00</lastmod><changefreq>monthly</changefreq></url><url><loc>https://sean.heelan.io</loc><changefreq>daily</changefreq><priority>1.0</priority><lastmod>2026-01-19T22:57:12+00:00</lastmod></url></urlset>
