Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdint.h>
- #ifdef _32BIT
- typedef uint32_t SYSADDR_INT;
- #else
- typedef uint64_t SYSADDR_INT;
- #endif
- void utils_init(void);
- void util_zero(void *ptr, size_t size);
- uint32_t util_len(unsigned char c, size_t ptrsz, void *ptr);// length until delim
- size_t util_cpy(void *ptr, void *src, size_t len);//return same as paramater size_t
- unsigned char *util_strstr(size_t ptrsz, void *ptr, void *find);// return ptr + start of first void*find occurance
- void utils_init(void)
- {
- }
- void util_zero(void *ptr, size_t size)
- {
- }
- uint32_t util_len(unsigned char c, size_t ptrsz, void *ptr)// length until delim
- {
- }
- size_t util_cpy(void *ptr, void *src, size_t len)//return same as paramater size_t
- {
- }
- // this function is internal dependant...
- // may produde errors
- SYSADDR_INT util_p_get_ptr_addr(void *ptr)
- {
- {
- return (SYSADDR_INT)ptr+0;
- }
- }
- ///////////////////////////////FROM////////////////////
- SYSADDR_INT util_p_sizeptr(void *ptr, void *comp)
- {
- return (SYSADDR_INT)(comp-ptr);
- }
- //////////////////////////////FROM/////////////////////
- void *util_p_jumpptr(void *ptr, size_t j)
- {
- return (ptr != NULL ? (((unsigned char *)ptr)+j) : NULL);// old shellshock vuln... im bored doe
- }
- //REMEBER TO NULL TERMINATE & initalize
- unsigned char *util_strstr(size_t fptrsz, void *ptr, void *ptrf)
- {
- void *tmpptr = NULL;
- unsigned char *buf = (unsigned char *)util_p_jumpptr(ptr, 0);
- unsigned char *find = (unsigned char *)util_p_jumpptr(ptrf, 0);
- SYSADDR_INT bufpz = 0, findpz = 0;
- while (*buf != 0x00)
- {
- if (*find == *buf)
- {
- tmpptr = find;
- find = util_p_jumpptr(tmpptr, 1);
- tmpptr = NULL;
- findpz = util_p_sizeptr(find, ptrf);
- if (util_p_get_ptr_addr(find) >= util_p_get_ptr_addr(ptrf) + fptrsz)
- return (unsigned char *)find - fptrsz;
- tmpptr = buf;
- buf = util_p_jumpptr(tmpptr, 1);
- tmpptr = NULL;
- bufpz = util_p_sizeptr(ptr, buf);
- if (util_p_get_ptr_addr(buf) != util_p_get_ptr_addr(ptr)+bufpz)
- {
- printf("[util_str] CORRUPTED MEMORY POINTER (PTR) in strstr function %ld != %ld+%ld\r\n", util_p_get_ptr_addr(buf), util_p_get_ptr_addr(ptr), bufpz);
- bufpz = 0;
- buf = ptr;
- continue;
- }
- continue;
- }
- if (util_p_get_ptr_addr(find) != util_p_get_ptr_addr(ptrf))
- {
- find = (unsigned char *)util_p_jumpptr(ptrf, 0);
- findpz = util_p_sizeptr(ptrf, find);
- continue;
- }
- buf = util_p_jumpptr(buf, 1);
- }
- return NULL; // Needle not found
- }
- int main()
- {
- char *base_str = "exadfadadde\x00\0";
- char *needle_str = "fadadd\x00\0";
- char *print_middle = util_strstr(6, base_str, needle_str);
- printf("base str: %s\r\ngot embedded heap style util_strstr: %s\r\n", base_str, print_middle);
- return 0;
- }
- ➜ ~
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement