int main(int argc, char **argv) { char devicename[PROP_VALUE_MAX]; char buildid[PROP_VALUE_MAX]; unsigned long int patch, address; printf("\nBypassLKM patch by Jeboo\nusage: -r will restore kernel to original\nBig thanks to fi01 & CUBE for their awesome CVE-2013-6282 exploit source!\n\n"); __system_property_get("ro.build.product", devicename); __system_property_get("ro.build.display.id", buildid); printf("ro.build.product=%s\n", devicename); printf("ro.build.displayid=%s\n", buildid); if (strstr(devicename, "vzw")) address = vzw_address; else address = att_address; printf("\nPatching kernel @ 0x%X: ", address); if ((argc > 1) && (argv[1][1] == 'r')) { printf("restoring original value.\n"); patch = origvalue; } else { printf("unsigned modules can now be inserted.\n"); patch = value; } ptrace_write_value_at_address(address, (void *)patch); printf("Done.\n\n"); exit(EXIT_SUCCESS); }
bool ptrace_run_exploit(unsigned long int address, void *value, bool (*exploit_callback)(void *user_data), void *user_data) { bool success; ptrace_write_value_at_address(address, value); success = exploit_callback(user_data); return success; }