Skip to content

Instantly share code, notes, and snippets.

@robshee81
Forked from R0rt1z2/fastboot.c
Created April 15, 2025 12:27
Show Gist options
  • Select an option

  • Save robshee81/6af2d77a2b41b9c96445080e88bcb4f9 to your computer and use it in GitHub Desktop.

Select an option

Save robshee81/6af2d77a2b41b9c96445080e88bcb4f9 to your computer and use it in GitHub Desktop.

Revisions

  1. @R0rt1z2 R0rt1z2 revised this gist Jan 21, 2025. 1 changed file with 114 additions and 119 deletions.
    233 changes: 114 additions & 119 deletions fastboot.c
    Original file line number Diff line number Diff line change
    @@ -1,130 +1,125 @@

    /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

    int fastboot_oem_unlock(char *arg,void *data,uint sz)
    int fastboot_oem_unlock(char *arg, void *data, uint sz)

    {
    bool bVar1;
    int ret;
    char *error;
    char *str;
    uint unlock_allowed;
    char acStack_90 [127];
    undefined local_11;

    str = acStack_90;
    FUN_4c43ba90(str,0,0x80);
    unlock_allowed = 0;
    show_unlock_warning();
    ret = is_secure();
    if (ret == 0) {
    fastboot_info("Start unlock flow\n");
    ret = fastboot_get_unlock_perm(&unlock_allowed);
    if (ret != 0) {
    ret = sprintf(str,(char *)0x80,"\nFailed to get unlock permission - Err:0x%x\n",ret);
    if (ret < 0) {
    error = "Unknown error\n";
    }
    else {
    local_11 = 0;
    error = str;
    }
    video_printf("Unlock failed...return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    fastboot_fail(error);
    }
    dprintf("unlock_allowed = 0x%x\n",unlock_allowed);
    if (unlock_allowed == 0) {
    ret = sprintf(str,(char *)0x80,"\nUnlock operation is not allowed\n");
    if (ret < 0) {
    error = "Unknown error\n";
    }
    else {
    local_11 = 0;
    error = str;
    }
    video_printf("Unlock failed...return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    fastboot_fail(error);
    }
    ret = fastboot_oem_unlock_chk();
    if (ret == 0) {
    LAB_4c4378a8:
    video_printf("Unlock Pass...return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    ret = fastboot_okay("");
    return ret;
    }
    ret = sprintf(str,(char *)0x80,"\nUnlock failed - Err:0x%x\n",ret);
    if (ret < 0) {
    str = "Unknown error\n";
    }
    else {
    local_11 = 0;
    }
    }
    else {
    while (bVar1 = mtk_detect_key(_DAT_4c5a7e30), !bVar1) {
    bVar1 = mtk_detect_key(_DAT_4c5a7e34);
    if (bVar1) {
    video_printf("return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    ret = fastboot_okay("");
    return ret;
    }
    }
    fastboot_info("Start unlock flow\n");
    bool bVar1;
    int ret;
    char *error;
    char *str;
    uint unlock_allowed;
    char acStack_90[127];
    undefined local_11;

    str = acStack_90;
    FUN_4c43ba90(str, 0, 0x80);
    unlock_allowed = 0;
    show_unlock_warning();
    ret = is_secure();
    if (ret == 1) {
    ret = process_unlock_key();
    if (ret != 0) {
    ret = fastboot_info("fastboot unlcok fail");
    return ret;
    }
    fastboot_info("fastboot unlock success");
    }
    ret = fastboot_get_unlock_perm(&unlock_allowed);
    if (ret == 0) {
    dprintf("unlock_allowed = 0x%x\n",unlock_allowed);
    if (unlock_allowed == 0) {
    ret = sprintf(str,(char *)0x80,"\nUnlock operation is not allowed\n");
    if (ret < 0) {
    str = "Unknown error\n";
    fastboot_info("Start unlock flow\n");
    ret = fastboot_get_unlock_perm(&unlock_allowed);
    if (ret != 0) {
    ret =
    sprintf(str, (char *)0x80,
    "\nFailed to get unlock permission - Err:0x%x\n", ret);
    if (ret < 0) {
    error = "Unknown error\n";
    } else {
    local_11 = 0;
    error = str;
    }
    video_printf("Unlock failed...return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    fastboot_fail(error);
    }
    else {
    local_11 = 0;
    dprintf("unlock_allowed = 0x%x\n", unlock_allowed);
    if (unlock_allowed == 0) {
    ret = sprintf(str, (char *)0x80,
    "\nUnlock operation is not allowed\n");
    if (ret < 0) {
    error = "Unknown error\n";
    } else {
    local_11 = 0;
    error = str;
    }
    video_printf("Unlock failed...return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    fastboot_fail(error);
    }
    }
    else {
    ret = fastboot_oem_unlock_chk();
    if (ret == 0) goto LAB_4c4378a8;
    ret = sprintf(str,(char *)0x80,"\nUnlock failed - Err:0x%x\n",ret);
    if (ret == 0) {
    LAB_4c4378a8:
    video_printf("Unlock Pass...return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    ret = fastboot_okay("");
    return ret;
    }
    ret = sprintf(str, (char *)0x80, "\nUnlock failed - Err:0x%x\n", ret);
    if (ret < 0) {
    str = "Unknown error\n";
    str = "Unknown error\n";
    } else {
    local_11 = 0;
    }
    else {
    local_11 = 0;
    } else {
    while (bVar1 = mtk_detect_key(_DAT_4c5a7e30), !bVar1) {
    bVar1 = mtk_detect_key(_DAT_4c5a7e34);
    if (bVar1) {
    video_printf("return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    ret = fastboot_okay("");
    return ret;
    }
    }
    fastboot_info("Start unlock flow\n");
    ret = is_secure();
    if (ret == 1) {
    ret = process_unlock_key();
    if (ret != 0) {
    ret = fastboot_info("fastboot unlcok fail");
    return ret;
    }
    fastboot_info("fastboot unlock success");
    }
    ret = fastboot_get_unlock_perm(&unlock_allowed);
    if (ret == 0) {
    dprintf("unlock_allowed = 0x%x\n", unlock_allowed);
    if (unlock_allowed == 0) {
    ret = sprintf(str, (char *)0x80,
    "\nUnlock operation is not allowed\n");
    if (ret < 0) {
    str = "Unknown error\n";
    } else {
    local_11 = 0;
    }
    } else {
    ret = fastboot_oem_unlock_chk();
    if (ret == 0)
    goto LAB_4c4378a8;
    ret = sprintf(str, (char *)0x80, "\nUnlock failed - Err:0x%x\n",
    ret);
    if (ret < 0) {
    str = "Unknown error\n";
    } else {
    local_11 = 0;
    }
    }
    } else {
    ret =
    sprintf(str, (char *)0x80,
    "\nFailed to get unlock permission - Err:0x%x\n", ret);
    if (ret < 0) {
    str = "Unknown error\n";
    } else {
    local_11 = 0;
    }
    }
    }
    }
    else {
    ret = sprintf(str,(char *)0x80,"\nFailed to get unlock permission - Err:0x%x\n",ret);
    if (ret < 0) {
    str = "Unknown error\n";
    }
    else {
    local_11 = 0;
    }
    }
    }
    video_printf("Unlock failed...return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    ret = fastboot_fail(str);
    return ret;
    }

    video_printf("Unlock failed...return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    ret = fastboot_fail(str);
    return ret;
    }
  2. @R0rt1z2 R0rt1z2 renamed this gist Jan 21, 2025. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  3. @R0rt1z2 R0rt1z2 created this gist Jan 21, 2025.
    130 changes: 130 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,130 @@

    /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

    int fastboot_oem_unlock(char *arg,void *data,uint sz)

    {
    bool bVar1;
    int ret;
    char *error;
    char *str;
    uint unlock_allowed;
    char acStack_90 [127];
    undefined local_11;

    str = acStack_90;
    FUN_4c43ba90(str,0,0x80);
    unlock_allowed = 0;
    show_unlock_warning();
    ret = is_secure();
    if (ret == 0) {
    fastboot_info("Start unlock flow\n");
    ret = fastboot_get_unlock_perm(&unlock_allowed);
    if (ret != 0) {
    ret = sprintf(str,(char *)0x80,"\nFailed to get unlock permission - Err:0x%x\n",ret);
    if (ret < 0) {
    error = "Unknown error\n";
    }
    else {
    local_11 = 0;
    error = str;
    }
    video_printf("Unlock failed...return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    fastboot_fail(error);
    }
    dprintf("unlock_allowed = 0x%x\n",unlock_allowed);
    if (unlock_allowed == 0) {
    ret = sprintf(str,(char *)0x80,"\nUnlock operation is not allowed\n");
    if (ret < 0) {
    error = "Unknown error\n";
    }
    else {
    local_11 = 0;
    error = str;
    }
    video_printf("Unlock failed...return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    fastboot_fail(error);
    }
    ret = fastboot_oem_unlock_chk();
    if (ret == 0) {
    LAB_4c4378a8:
    video_printf("Unlock Pass...return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    ret = fastboot_okay("");
    return ret;
    }
    ret = sprintf(str,(char *)0x80,"\nUnlock failed - Err:0x%x\n",ret);
    if (ret < 0) {
    str = "Unknown error\n";
    }
    else {
    local_11 = 0;
    }
    }
    else {
    while (bVar1 = mtk_detect_key(_DAT_4c5a7e30), !bVar1) {
    bVar1 = mtk_detect_key(_DAT_4c5a7e34);
    if (bVar1) {
    video_printf("return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    ret = fastboot_okay("");
    return ret;
    }
    }
    fastboot_info("Start unlock flow\n");
    ret = is_secure();
    if (ret == 1) {
    ret = process_unlock_key();
    if (ret != 0) {
    ret = fastboot_info("fastboot unlcok fail");
    return ret;
    }
    fastboot_info("fastboot unlock success");
    }
    ret = fastboot_get_unlock_perm(&unlock_allowed);
    if (ret == 0) {
    dprintf("unlock_allowed = 0x%x\n",unlock_allowed);
    if (unlock_allowed == 0) {
    ret = sprintf(str,(char *)0x80,"\nUnlock operation is not allowed\n");
    if (ret < 0) {
    str = "Unknown error\n";
    }
    else {
    local_11 = 0;
    }
    }
    else {
    ret = fastboot_oem_unlock_chk();
    if (ret == 0) goto LAB_4c4378a8;
    ret = sprintf(str,(char *)0x80,"\nUnlock failed - Err:0x%x\n",ret);
    if (ret < 0) {
    str = "Unknown error\n";
    }
    else {
    local_11 = 0;
    }
    }
    }
    else {
    ret = sprintf(str,(char *)0x80,"\nFailed to get unlock permission - Err:0x%x\n",ret);
    if (ret < 0) {
    str = "Unknown error\n";
    }
    else {
    local_11 = 0;
    }
    }
    }
    video_printf("Unlock failed...return to fastboot in 3s\n");
    mdelay(3000);
    fastboot_boot_menu();
    ret = fastboot_fail(str);
    return ret;
    }