no, really, i want to delete it

This commit is contained in:
comex 2011-05-23 14:02:42 -04:00
parent abc6c3d555
commit 5f73f74ea7

View File

@ -1,60 +0,0 @@
#include <data/binary.h>
#include <data/find.h>
#include <stdio.h>
#include <mach-o/loader.h>
#include <mach-o/nlist.h>
// Shorter-term thing than the other stuff;
// only for use on this device until the keys are found.
struct binary in;
uint32_t strx;
struct nlist *symtab;
void add(const char *name, addr_t addr) {
printf("%s -> %x\n", name, addr);
struct nlist nl;
memset(&nl, 0, sizeof(nl));
nl.n_un.n_strx = strx;
strcpy(in.strtab + strx, name);
strx += strlen(name) + 1;
if(addr & 1) {
addr &= ~1;
nl.n_desc = N_ARM_THUMB_DEF;
}
nl.n_value = addr;
*symtab++ = nl;
}
int main(int argc, char **argv) {
(void) argc;
b_init(&in);
b_load_macho(&in, argv[1], true);
symtab = in.ext_symtab;
strx = 1;
range_t text = b_macho_segrange(&in, "__TEXT");
add("_IOLockAlloc", resolve_ldr(&in, find_data(text, "+ .. .. a8 47 a0 60 a8 47 e6 60 00 23", 0, true)));
add("_IOLog", find_data(text, "+ 0f b4 b0 b5 02 af 82 b0 06 ac", 0, true));
add("_IOMalloc", find_data(text, "+ 90 b5 01 af .. .. 04 46 98 47 03 46 18 b1", 0, true));
add("_PE_i_can_has_debugger", find_data(text, "+ 48 b1 06 4a 13 68 13 b9 03 60", 0, true));
add("_copyin", find_data(text, "- 00 00 52 e3 00 00 a0 03 1e ff 2f 01 02 01 50 e3", 0, true));
add("_copyout", find_data(text, "- 00 00 52 e3 00 00 a0 03 1e ff 2f 01 02 01 51 e3", 0, true));
add("_flush_dcache", resolve_ldr(&in, find_data(b_macho_segrange(&in, "__PRELINK_TEXT"), "21 60 20 46 04 21 00 22 +", 1, true)));
add("_invalidate_icache", resolve_ldr(&in, find_data(text, "98 47 f3 6a 2a 46 d3 f8 94 00 d3 f8 98 10 +", 0, true)));
add("_memcmp", find_data(text, "+ 42 b1 10 f8 01 cb 11 f8 01 3b", 0, true));
add("_memcpy", find_data(text, "- 00 00 52 e3 01 00 50 11 1e ff 2f 01", 0, true));
add("_proc_ucred", find_data(text, "+ d0 f8 84 00 70 47", 1, true));
add("_vfs_getattr", 10);
add("_vn_getpath", find_data(text, "+ f0 b5 03 af 4d f8 04 8d 82 b0 14 46 06 46 88 46 15 68 .. .. .. .. 01 23", 0, true));
CMD_ITERATE(in.mach_hdr, cmd) {
if(cmd->cmd == LC_SYMTAB) {
struct symtab_command *sc = (void *) cmd;
sc->nsyms = symtab - in.ext_symtab;
}
}
b_macho_store(&in, argv[2]);
}