├── .github └── FUNDING.yml ├── README.md └── system.png /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [snowcra5h] 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 |
8 | 9 | # C Programming and Assembly Resources 10 | 11 | ## Cheatsheets 12 | - https://github.com/snowcra5h/windows-api-function-cheatsheets : by snowcra5h 13 | - https://github.com/snowcra5h/branch-tables-and-jump-tables : by snowcra5h 14 | - https://github.com/snowcra5h/x86 : by snowcra5h 15 | 16 | ## Systems Programming CMU 17 | >*CMU Systems Programming course uses two books: "Computer Systems: A Programmer's Perspective" and "The C Programming Language". Course schedule, exams, and lecture materials available on course website. Resources on C programming include Stanford engineering lectures, GCC's implementation of C99 features, man pages, networking guides, system calls, and more..* 18 | ### Manditory Books 19 | - https://www.amazon.com/Computer-Systems-Programmers-Perspective-Edition/dp/013409266X : **CMU Systems Programming** 20 | - https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ : **K&R Enough said** 21 | 22 | ### CMU Course Resources 23 | - http://www.cs.cmu.edu/afs/cs/academic/class/15213-m17/www/schedule.html# : **course schedule, midterm, finals, pdf's for lectures*** 24 | - http://csapp.cs.cmu.edu/3e/home.html : **root page for book** 25 | - http://csapp.cs.cmu.edu/3e/labs.html : **all of the labs (you do these exercises at the end of each section in the book)** 26 | >Some of the extraordinary labs here are the bomb lab which teaches reverse engineering. The attack lab is the buffer overflow lab that will guide you through modern x86 exploitation. Including ROP, there's also a Heap Lab and Shell lab where you write a linux shell, a Proxy Lab, which has you write a multi-threaded network program in C (you learn a ton in all of these), and many others. 27 | - [Lecture Videos](https://scs.hosted.panopto.com/Panopto/Pages/Sessions/List.aspx#folderID=%22b96d90ae-9871-4fae-91e2-b1627b43e25e%22) : (**very helpful) TA resitation videos, and instructor lectures.** 28 | - http://csapp.cs.cmu.edu/3e/simguide.pdf : **Y86-64 Simulator Documentation** 29 | - http://csapp.cs.cmu.edu/3e/docs/dsa.pdf : **Virtual Memory** 30 | 31 | ## C Resources 32 | - [RTFMan Pages](https://www.kernel.org/doc/man-pages/) : **Always go to the man pages first!** 33 | - [SSL/TSL](https://wiki.openssl.org/index.php/SSL/TLS_Client) 34 | - [Beej's Networking C](https://beej.us/guide/bgnet/) : **Amazing** 35 | - [Linux Syscalls](https://linuxhint.com/list_of_linux_syscalls/) 36 | - [Stanford Engineering C Lectures](https://www.youtube.com/watch?v=Ps8jOj7diA0&list=PLjn3WmBeabPOUzxcCkzk4jYMGRZMZ6ylF) : **Best C Resource online** 37 | - [Stanford EDU C assignments](https://web.stanford.edu/class/archive/cs/cs107/cs107.1206/assignments.html) 38 | - [Status of C99 features in GCC](https://gcc.gnu.org/c99status.html) 39 | - [C __VA_ARGS__](https://en.cppreference.com/w/cpp/preprocessor/replace) 40 | - [Algorithms for: DFT DCT DST FFT](https://www.kurims.kyoto-u.ac.jp/~ooura/fft.html) 41 | - [Apple Source Browser](https://opensource.apple.com/source/BerkeleyDB/BerkeleyDB-21/db/clib/) : **Lots of nice code implementations for things like strchr strcasecmp sprintf** 42 | - [GNU C Programming Tutorial](http://crasseux.com/books/ctutorial/) 43 | - [Steve Holmes C Programming](http://www.strath.ac.uk/IT/Docs/Ccourse/) 44 | - [C Programming class notes](http://www.eskimo.com/~scs/cclass/cclass.html) 45 | - [C tutorials](http://cslibrary.stanford.edu/) 46 | - [An Introduction to C](http://cprog.tomsweb.net/cintro.html) 47 | - [FAQ](http://www.c-faq.com/ "http://www.c-faq.com/") 48 | - [Declarations](http://www.ericgiguere.com/articles/reading-c-declarations.html) 49 | - [Event-Driven](http://eventdrivenpgm.sourceforge.net/) 50 | - [Microsoft Learn - C Docs](https://learn.microsoft.com/en-us/cpp/c-language/?view=msvc-170) 51 | - [CASIO® Personal Computer PB-2000C *Introduction to the C programming language*](http://www.pisi.com.pl/piotr433/manuals/c_lang.pdf) :: In case you want to target a late 80s pocket computer that, in the Japanese production (the AI-1000), ran LISP 2 instead of C as its system language (both use HD61700d processor). 52 | 53 | ### C Books (FREE) 54 | - [UNIX System Calls and Subroutines](http://www.cs.cf.ac.uk/Dave/C/) 55 | - [Bug-Free C Code](http://www.duckware.com/bugfreec/) 56 | - [The C Book](http://publications.gbdirect.co.uk/c_book/) 57 | - [C elements of style](http://www.oualline.com/style/index.html) 58 | - [The Art of Unix Programming](http://www.faqs.org/docs/artu/index.html) 59 | - [Modern C](https://hal.inria.fr/hal-02383654/document) 60 | - [Advanced Tutorials](http://www.cprogramming.com/advtutorial.html) 61 | 62 | ### BitHacking 63 | - https://graphics.stanford.edu/~seander/bithacks.html : **god tier bit hacks** 64 | - https://cheatography.com/jsondhof/cheat-sheets/bit-hacks/ : **bit hacking cheat sheet** 65 | 66 | ### Low Level 67 | - [inline assembly](http://csapp.cs.cmu.edu/3e/waside/waside-embedded-asm.pdf) 68 | - [OS-Development Build Your Own OS](https://wiki.osdev.org/Expanded_Main_Page) 69 | - [Build a Computer from Nand Gates to OS](https://www.nand2tetris.org/) 70 | - [The Art of Assembly](https://www.phatcode.net/res/223/files/html/toc.html) : **amazing** 71 | - [Introduction to 64-Bit Assembly Language Programming for Linux and OS X](http://rayseyfarth.com/) by Ray Seyfarth 72 | - [What Every Programmer Should Know About Memory](https://people.freebsd.org/~lstewart/articles/cpumemory.pdf) by Ulrich Drepper 73 | - [Modern x64 Assembly](https://www.youtube.com/watch?v=rxsBghsrvpI) by What's a Creel? 74 | - [Performance Programming: x64 Caches](https://www.youtube.com/watch?v=bHzrhH7yySA) by What's a Creel? 75 | - [A Comprehensive Guide To Debugging Optimized x64 Code](https://www.youtube.com/watch?v=MUNRvqpske0) by Jorge 76 | - [Introduction to x64 Assembly](https://software.intel.com/en-us/articles/introduction-to-x64-assembly) by Chris Lomont 77 | - [Challenges of Debugging Optimized x64 code](https://blogs.msdn.microsoft.com/ntdebugging/2009/01/09/challenges-of-debugging-optimized-x64-code/) by Microsoft 78 | - [Microsoft x64 Software Conventions](https://docs.microsoft.com/en-us/cpp/build/x64-software-conventions?view=vs-2017) This will be your eternal companion and enforcer as you work on Windows. 79 | - [The Netwide Assembler manual](https://www.nasm.us/doc/) Contains all the information needed about programming with NASM syntax. 80 | - [Intel 64 and IA-32 Architectures Software Developer Manuals](https://software.intel.com/en-us/articles/intel-sdm) Contain all the technical information regarding the CPU architecture, instructions, and timings. 81 | - [x86 and amd64 instructions reference](https://www.felixcloutier.com/x86/) an excellent list of all the instructions available on the x86-64 instruction set. Be warned. Not everything maps 1:1 in either NASM/MASM syntax! 82 | - [Intel Intrinsics Guide](https://software.intel.com/sites/landingpage/IntrinsicsGuide/) is an excellent guide to the intrinsic functions available for Intel CPUs. 83 | - [Instruction Tables](https://www.agner.org/optimize/instruction_tables.pdf) Reference instruction timings for various CPU generations. 84 | 85 | #### Intel Documentation 86 | - https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html : **root page for the intel docs** 87 | - [Intel® 64 and IA-32 Architectures Software Developer’s Manual Combined Volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4](https://cdrdv2.intel.com/v1/dl/getContent/671200) : **combined volumes for the docs** 88 | 89 | #### Gods of Windows Internals 90 | - https://devblogs.microsoft.com/oldnewthing/author/oldnewthing Raymond Chen 91 | - https://scorpiosoftware.net Pavel Yosifovich 92 | 93 | #### Malware Development 94 | - https://institute.sektor7.net/ 95 | - https://h0mbre.github.io/Learn-C-By-Creating-A-Rootkit/ 96 | 97 | #### Linkers and Loaders 98 | - https://lwn.net/Articles/276782/ 99 | - http://www.staroceans.org/e-book/LinkersAndLoaders.pdf 100 | -------------------------------------------------------------------------------- /system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengjixuchui/c-systems-programming/7eae503afb119f38d6a0ae61b43860e88899077b/system.png --------------------------------------------------------------------------------