I hereby claim:
- I am c0deh4cker on github.
- I am c0deh4cker (https://keybase.io/c0deh4cker) on keybase.
- I have a public key ASDAYDYtqJGjVHyfmEJDXA3gw4geCBLvgpynNHx7M2t1Wgo
To claim this, I am signing this object:
| #!/usr/bin/env python | |
| from pwn import * | |
| import sys | |
| debug_server = False | |
| use_system_libc = True | |
| r = remote("pwn.chal.csaw.io", 8003); use_system_libc = False | |
| # r = process("./hungman") | |
| # r = process("./linux_serverx64"); debug_server = True |
| /* THIS IS VERY BAD */ | |
| #define CONCAT(a, b) CONCAT_(a, b) | |
| #define CONCAT_(a, b) a##b | |
| #define THIS_IS_BAD(test, first, rest, cond, body...) THIS_IS_BAD_2(__COUNTER__, test, first, rest, cond, ##body) | |
| #define THIS_IS_BAD_2(uniq, test, first, rest, cond, body...) THIS_IS_BAD_3(CONCAT(this_is_bad_, uniq), test, first, rest, cond, ##body) | |
| #define THIS_IS_BAD_3(label, test, first, rest, cond, body...) do { \ | |
| if(test) { \ | |
| first(); \ |
| // Part 1 | |
| extension UInt { | |
| public init(bytes: Bytes) { | |
| self = 0 | |
| for byte in bytes { | |
| self <<= 8 | |
| self |= UInt(byte) | |
| } | |
| } | |
| } |
| #include <stdio.h> | |
| // Even making the pointer volatile doesn't help | |
| __thread int* tl_ptr; | |
| int main(void) { | |
| int x = 0xDEAD; | |
| // Put a breakpoint on the following line | |
| tl_ptr = &x; |
| // | |
| // main.c | |
| // macho-syms | |
| // | |
| // Created by C0deH4cker on 3/19/16. | |
| // Copyright © 2016 C0deH4cker. All rights reserved. | |
| // | |
| #include <stdio.h> | |
| #include <stdlib.h> |
I hereby claim:
To claim this, I am signing this object:
| #include <stdlib.h> | |
| /*! Frees the pointer pointed to by the parameter and then sets it to NULL */ | |
| #define destroy(pptr) do { \ | |
| __typeof__(*(pptr)) volatile* _pptr = (pptr); \ | |
| if(!_pptr) { \ | |
| break; \ | |
| } \ | |
| free(*_pptr); \ | |
| *_pptr = NULL; \ |
| // | |
| // patternhooker.c | |
| // PatternHooker | |
| // | |
| // Finds a function by searching for a byte pattern and hooks it with CydiaSubstrate. | |
| // | |
| // Created by C0deH4cker on 7/26/15. | |
| // Copyright (c) 2015 C0deH4cker. All rights reserved. | |
| // |
| // Just like C#'s using statement and Python's with statement. | |
| // This allows use of a resource within a code block, after which | |
| // the declared object's destructor will clean up. | |
| // There's nothing about `with` that doesn't work in C, but it is | |
| // pointless in standard C as there are no destructors. | |
| // Multiple with statements can be nested as well, so it works as | |
| // you'd expect. If for some bizarre reason you need to put multiple | |
| // using statements on the same line, I've added another version, | |
| // defined below as with_inline. | |
| // |
| // | |
| // wordshift.cpp | |
| // WordShift | |
| // | |
| // Created by C0deH4cker on 2/11/15. | |
| // Copyright (c) 2015 C0deH4cker. All rights reserved. | |
| // | |
| #include <iostream> | |
| #include <fstream> |