eliminmax / cncs-capstone Goto Github PK
View Code? Open in Web Editor NEWCode and Docs for Eli Array Minkoff's Capstone project
Code and Docs for Eli Array Minkoff's Capstone project
Create a version of the Tiny C Compiler (also known as TinyCC or TCC) that "miscompiles" itself, adding in an extra bit of code whether or not it is included in the source code of the program.
tcc
programtcc
, or TinyCC) that can be used to uniquely identify it (the "signature"), and modify the source code such that it prints an identifiable message to the terminal when compiling itself.Set up a development environment with QEMU available to run foreign binaries, and the hed hex editor.
hed
from sourcebinfmt-misc
support, and register QEMU binaries for foreign architecturesMake the modified TCC from Milestone #3 only inject the signature detection code if it's not already present, and make it also "miscompile" GNU nano so that the message reading "Welcome to nano. For basic help, type Ctrl+G." is replaced with a different 45-character string to be determined. After that, use diverse double-compiling to create a "clean" version of TCC
Modify the AMD64 version of tiny clear elf to be dynamically linked against libtinydynclearelf.so
and create that ELF shared object which provides wrappers around the two syscalls used.
libtinydynclearelf.so
that implements 2 functions - tdce_clear
and tdce_exit
, to print the escape sequence and exit the program, successfully, and a simple program that links against it and calls those two functions (both in a normal programming language, likely C).libtinydynclearelf.so
that was made by hand in the vi-like hex editor known as hed,Implement tiny-clear-elf binaries for the 6 or 7* remaining architectures planned. tiny-clear-elf binaries are defined as follows:
␛[H␛[J␛3J
" to STDOUT, and the other exiting with error code 0. No extra functionality, and no parsing of arguments* armhf and armel are technically the same architecture, but armhf can take advantage built-in support for hardware floating point calculations, which not all arm processors have. Debian has separate repository architectures for the two, and I took my list of architectures to target from the list of architectures that the current stable release supports. The same binary will be used for both in this project, because I don't see how the write
and exit
syscalls would need to deal with floats.
Thinking about either Tiny Clear ELF or an LTE connection monitor
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.