Exemplo n.º 1
0
static int lv2_unpatch_storage_341(void)
{
    if(!is_patched) return -1;

    install_new_poke();
    if (!map_lv1()) {
        remove_new_poke();
        return -1;
    }

    //search bin "5F 6F 66 5F 70 72 6F 64  75 63 74 5F 6D 6F 64 65" to find
    // LV2 disable syscall storage

    int n;
    for(n = 0; n < 20; n++) {
        pokeq(0x80000000002CF880ULL, save_lv2_storage_patch);

        lv1_poke(0x16f3b8ULL, save_lv1_storage_patches[0]);
        lv1_poke(0x16f3dcULL, save_lv1_storage_patches[1]);
        lv1_poke(0x16f454ULL, save_lv1_storage_patches[2]);
        lv1_poke(0x16f45cULL, save_lv1_storage_patches[3]);
        usleep(5000);
    }

    remove_new_poke();
    unmap_lv1();

    return 0;

}
Exemplo n.º 2
0
void patch_lv2_protection() {
	// changes protected area of lv2 to first byte only
	lv1_poke(0x363a78, 0x0000000000000001ULL);
	lv1_poke(0x363a80, 0xe0d251b556c59f05ULL);
	lv1_poke(0x363a88, 0xc232fcad552c80d7ULL);
	lv1_poke(0x363a90, 0x65140cd200000000ULL);
}
Exemplo n.º 3
0
static int lv2_patch_storage_341(void)
{
    install_new_poke();
    if (!map_lv1()) {
        remove_new_poke();
        return -1;
    }

    //search bin "5F 6F 66 5F 70 72 6F 64  75 63 74 5F 6D 6F 64 65" to find
    // LV2 enable syscall storage
    save_lv2_storage_patch= peekq(0x80000000002CF880ULL);
    save_lv1_storage_patches[0] = peekq(HV_BASE_341 + 0x16f3b8ULL);
    save_lv1_storage_patches[1] = peekq(HV_BASE_341 + 0x16f3dcULL);
    save_lv1_storage_patches[2] = peekq(HV_BASE_341 + 0x16f454ULL);
    save_lv1_storage_patches[3] = peekq(HV_BASE_341 + 0x16f45cULL);

    int n;
    for(n = 0; n < 20; n++) {
        pokeq32(0x80000000002CF880ULL, 0x40000000);

        lv1_poke(0x16f3b8ULL, 0x7f83e37860000000ULL);
        lv1_poke(0x16f3dcULL, 0x7f85e37838600001ULL);
        lv1_poke(0x16f454ULL, 0x7f84e3783be00001ULL);
        lv1_poke(0x16f45cULL, 0x9be1007038600000ULL);
        usleep(5000);
    }

    remove_new_poke();
    unmap_lv1();

    is_patched = 1;

    return 0;

}
Exemplo n.º 4
0
void patch_lv2_protection(void)
{
    int n;
    for(n = 0; n < 20; n++) {
        // changes protected area of lv2 to first byte only
        lv1_poke(0x363a78, 0x0000000000000001ULL);
        lv1_poke(0x363a80, 0xe0d251b556c59f05ULL);
        lv1_poke(0x363a88, 0xc232fcad552c80d7ULL);
        lv1_poke(0x363a90, 0x65140cd200000000ULL);
    usleep(5000);
    }
}
Exemplo n.º 5
0
/***********************************************************************
* main
***********************************************************************/
int main(int argc, char **argv)
{
	int result;

	netInitialize();

	udp_printf_init();

	PRINTF("%s:%d: start\n", __func__, __LINE__);

	result = lv1_map();
	if (result) {
		PRINTF("%s:%d: lv1_map failed (0x%08x)\n", __func__, __LINE__, result);
		goto done;
	}

	PRINTF("%s:%d: patching log2 page size\n", __func__, __LINE__);

	lv1_poke(LOG2_PAGE_SIZE_OFFSET, LOG2_PAGE_SIZE);

	PRINTF("%s:%d: end\n", __func__, __LINE__);

done:

	result = lv1_unmap();
	if (result)
		PRINTF("%s:%d: lv1_unmap failed (0x%08x)\n", __func__, __LINE__, result);

	udp_printf_deinit();

	netDeinitialize();

	return 0;
}