bap
bitvec
bap | bitvec | |
---|---|---|
3 | 17 | |
1,981 | 1,138 | |
1.2% | 0.4% | |
4.6 | 0.0 | |
9 days ago | 15 days ago | |
OCaml | Rust | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
bap
-
Any standard algorithms for parsing (disassembling) machine code?
BAP (https://github.com/binaryanalysisplatform/bap), angr (https://angr.io/) and others already do what you're asking for as more purpose-built solutions for dynamic analysis. Angr specifically in python.
- You need to stop idolizing programming languages.
-
Starting ocaml
I find this pretty good https://www.cs.cornell.edu/courses/cs3110/2019sp/textbook/intro/ocaml.html. Fun projects include compilers (pattern matching and static types are why Ocaml is usually selected), binary analysis stuff https://github.com/BinaryAnalysisPlatform/bap, stuff that requires async so you can try out nomadic async stuff, or really anything you desire.
bitvec
-
bitcode 0.4 release - binary serialization format
I was also under the false impression that bitwise encoding was slow. When I first implemented bitcode with bitvec I got performance 20x worse than bincode. After writing my own implementation I was able to get much better performance.
-
An optimized replacement of the infamous std::vector<🅱️ool>
interesting; i'll have to compare this to my rust counterpart. your numbers indicate some clever implementations i'd love to read
-
You need to stop idolizing programming languages.
Not to mention having a lackluster std which causes you to use nonstardard not so well documented crates and a 40K LoC library to do "bit-twiddling" (the lib, https://github.com/bitvecto-rs/bitvec the blog that says "twiddle bits" https://blog.adamchalmers.com/making-a-dns-client/ and for crying out loud the blogger also used the language the author mentioned and I quote "ergonomics AND speed AND correctness")
- bit-twiddling tricks. It's the perfect example of Rust's no-compromises "ergonomics AND speed AND correctness" ideals
-
An Armful of CHERIs: Memory Safety in the processor. Do we still need safe languages with CHERI?
https://github.com/bitvecto-rs/bitvec/issues/135 is a very funny read about how to perform inttoptr with provenance retention
-
bitvec 1.0.0 Released
Technically #135 gives me license to yank affected crates, but since the only exploit is "Miri crashes exactly one test out of the suite" it's not really worth it to be a stickler. Call it a truce
-
What are some creative/advanced uses of macro_rules?
My friend Nika wrote a macro that packs a sequence of 1, 0, … tokens into a correctly structured bit-buffer, adaptable over any register type or bit-ordering, at compile time. It's now basically this whole file
-
Where do I document a published crate?
if you are interested in a user manual, you can use mdbook as well. for an example, my bitvec project uses mdbook (book.toml) and a github action (.github/workflows/gh-pages.yml) to compile the guide and host it as a github pages website. it's slightly more complicated, and i'd like docs.rs to follow hexdoc.pm's example of hosting both api docs and prose, but until then this is a pretty reasonable solution.
-
Idiomatic Way to Validate Struct Field Values
the first one
-
When and how to use traits?
i would browse the standard library, tower, nom, or my own bitvec to see layout and trait/record separation. in particular, std::io and std::net may be of use: io::Read and io::Write are pervasive examples of implementing unixy file-descriptor-like behavior in the type system
What are some alternatives?
VMProtect-devirtualization - Playing with the VMProtect software protection. Automatic deobfuscation of pure functions using symbolic execution and LLVM.
nom - Rust parser combinator framework
pyt - A Static Analysis Tool for Detecting Security Vulnerabilities in Python Web Applications
rfcs - RFCs for changes to Rust
angr - A powerful and user-friendly binary analysis platform!
time - The most used Rust library for date and time handling.
klee - KLEE Symbolic Execution Engine
byteorder - Rust library for reading/writing numbers in big-endian and little-endian.
MobileApp-Pentest-Cheatsheet - The Mobile App Pentest cheat sheet was created to provide concise collection of high value information on specific mobile application penetration testing topics.
tower - async fn(Request) -> Result<Response, Error>
ocamlformat - Auto-formatter for OCaml code
hardcaml - Hardcaml is an OCaml library for designing hardware.