Some notes about compilers.
- Webassembly studio: https://webassembly.studio/
- Writing web assembly by hand: https://blog.scottlogic.com/2018/04/26/webassembly-by-hand.html
- Some webassembly tools: https://github.com/xtuc/webassemblyjs
Here's my notes on using Ghidra.
- Ghidra documentation (for Java, but Python copies the interface): https://ghidra.re/ghidra_docs/api/index.html
- Scripting with Ghidra guide:
-
Jeremy's list: https://avigad.github.io/formal_methods_in_education/
-
Wadler's PL Foundations: https://plfa.inf.ed.ac.uk/
-
Software Foundations: https://softwarefoundations.cis.upenn.edu/
-
Adam's FRAP site: http://adam.chlipala.net/frap/
-
Bug verification class: http://www.cs.cmu.edu/~15414/index.html
-
Programming Languages and Lambda Calculi: http://www.cs.utah.edu/~mflatt/past-courses/cs7520/public_html/s06/notes.pdf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% ---------------------------------------------------------- | |
% Custom document class | |
% | |
% Name: toyl | |
% Author: JT Paasch | |
% ---------------------------------------------------------- | |
\NeedsTeXFormat{LaTeX2e} | |
\ProvidesClass{bizboy}[2021/03/01 v.1 A demo LaTeX document class] |
About the ELF file format:
PWN tutorials:
Program startup:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(** Examples of OCaml Format pretty-printing. | |
Add a dune file: | |
(executable (name example)) | |
Compile and run: dune exec ./example.exe | |
*) | |
(* First an easy one. |
apt install -y qemu qemu-user gcc-arm-linux-gnueabi binutils-arm-linux-gnueabi
arm-linux-gnueabi-gcc -marm main.c -o main
QEMU_LD_PREFIX=/usr/arm-linux-gnueabi qemu-arm main
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Loader = struct | |
let empty_with_program filename prog = | |
let arch = `unknown and code = Memmap.empty and data = Memmap.empty in | |
Project.Input.create arch filename ~code ~data | |
~finish:(fun proj -> Project.with_program proj prog) | |
let load filename = | |
let prog = Program.create () in (* empty prog for now *) | |
empty_with_program filename prog |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Otherwise you can't do the Applicative instance. | |
import Control.Applicative | |
-- Simple function | |
foo :: String -> String | |
foo x = do | |
x ++ "!!!" | |
-- Helper for printing Monads |