[*] Binary protection state of tc.iproute2
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function printf tear down of tc.iproute2
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45ed0 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_float () | void jsonw_float (int16_t arg1) {
| r0 = arg1;
0x00045ed0 ldr r1, [pc, 8] | r1 = *(0x00045edc);
0x00045ed2 vmov r2, r3, d0 | __asm ("vmov r2, r3, d0");
0x00045ed6 add r1, pc | r1 += pc;
0x00045ed8 b.w 0x45d34 | return void (*0x45d34)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45f90 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_float_field () | void jsonw_float_field (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00045f90 push {r4, lr} |
0x00045f92 mov r4, r0 | r4 = r0;
0x00045f94 sub sp, 8 |
0x00045f96 vstr d0, [sp] | __asm ("vstr d0, [sp]");
0x00045f9a bl 0x45cc4 | jsonw_name ();
0x00045f9e vldr d0, [sp] | __asm ("vldr d0, [sp]");
0x00045fa2 mov r0, r4 | r0 = r4;
0x00045fa4 add sp, 8 |
0x00045fa6 pop.w {r4, lr} |
0x00045faa b.w 0x45ed0 | return void (*0x45ed0)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45ee0 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_hhu () | void jsonw_hhu (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00045ee0 mov r2, r1 | r2 = r1;
0x00045ee2 ldr r1, [pc, 8] |
0x00045ee4 add r1, pc | r1 = 0x8bdd6;
0x00045ee6 b.w 0x45d34 | return void (*0x45d34)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x46000 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_hhu_field () | void jsonw_hhu_field (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00046000 push {r3, r4, r5, lr} |
0x00046002 mov r4, r0 | r4 = r0;
0x00046004 mov r5, r2 | r5 = r2;
0x00046006 bl 0x45cc4 | jsonw_name ();
0x0004600a mov r1, r5 | r1 = r5;
0x0004600c mov r0, r4 | r0 = r4;
0x0004600e pop.w {r3, r4, r5, lr} |
0x00046012 b.w 0x45ee0 | return void (*0x45ee0)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45ef0 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_hu () | void jsonw_hu (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00045ef0 mov r2, r1 | r2 = r1;
0x00045ef2 ldr r1, [pc, 8] |
0x00045ef4 add r1, pc | r1 = 0x8bdf6;
0x00045ef6 b.w 0x45d34 | return void (*0x45d34)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x46018 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_hu_field () | void jsonw_hu_field (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00046018 push {r3, r4, r5, lr} |
0x0004601a mov r4, r0 | r4 = r0;
0x0004601c mov r5, r2 | r5 = r2;
0x0004601e bl 0x45cc4 | jsonw_name ();
0x00046022 mov r1, r5 | r1 = r5;
0x00046024 mov r0, r4 | r0 = r4;
0x00046026 pop.w {r3, r4, r5, lr} |
0x0004602a b.w 0x45ef0 | return void (*0x45ef0)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45f44 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_int () | void jsonw_int (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00045f44 mov r2, r1 | r2 = r1;
0x00045f46 ldr r1, [pc, 8] | r1 = sym.imp.sendfile64;
0x00045f48 add r1, pc | r1 += pc;
0x00045f4a b.w 0x45d34 | return void (*0x45d34)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x46064 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_int_field () | void jsonw_int_field (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00046064 push {r3, r4, r5, lr} |
0x00046066 mov r4, r0 | r4 = r0;
0x00046068 mov r5, r2 | r5 = r2;
0x0004606a bl 0x45cc4 | jsonw_name ();
0x0004606e mov r1, r5 | r1 = r5;
0x00046070 mov r0, r4 | r0 = r4;
0x00046072 pop.w {r3, r4, r5, lr} |
0x00046076 b.w 0x45f44 | return void (*0x45f44)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45f38 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_lluint () | void jsonw_lluint (int16_t arg1) {
| r0 = arg1;
0x00045f38 ldr r1, [pc, 4] | r1 = *(0x00045f40);
0x00045f3a add r1, pc | r1 += pc;
0x00045f3c b.w 0x45d34 | return void (*0x45d34)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x46048 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_lluint_field () | void jsonw_lluint_field (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00046048 push {r4, r5, r6, lr} |
0x0004604a mov r4, r0 | r4 = r0;
0x0004604c mov r6, r2 | r6 = r2;
0x0004604e mov r5, r3 | r5 = r3;
0x00046050 bl 0x45cc4 | jsonw_name ();
0x00046054 mov r2, r6 | r2 = r6;
0x00046056 mov r3, r5 | r3 = r5;
0x00046058 mov r0, r4 | r0 = r4;
0x0004605a pop.w {r4, r5, r6, lr} |
0x0004605e b.w 0x45f38 | return void (*0x45f38)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45f28 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_luint () | void jsonw_luint (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00045f28 mov r2, r1 | r2 = r1;
0x00045f2a ldr r1, [pc, 8] |
0x00045f2c add r1, pc | r1 = 0x8be66;
0x00045f2e b.w 0x45d34 | return void (*0x45d34)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x46030 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_luint_field () | void jsonw_luint_field (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00046030 push {r3, r4, r5, lr} |
0x00046032 mov r4, r0 | r4 = r0;
0x00046034 mov r5, r2 | r5 = r2;
0x00046036 bl 0x45cc4 | jsonw_name ();
0x0004603a mov r1, r5 | r1 = r5;
0x0004603c mov r0, r4 | r0 = r4;
0x0004603e pop.w {r3, r4, r5, lr} |
0x00046042 b.w 0x45f28 | return void (*0x45f28)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45ec4 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_null () | void jsonw_null (int16_t arg1) {
| r0 = arg1;
0x00045ec4 ldr r1, [pc, 4] | r1 = *(0x00045ecc);
0x00045ec6 add r1, pc | r1 += pc;
0x00045ec8 b.w 0x45d34 | return void (*0x45d34)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x46098 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_null_field () | void jsonw_null_field (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00046098 push {r4, lr} |
0x0004609a mov r4, r0 | r4 = r0;
0x0004609c bl 0x45cc4 | jsonw_name ();
0x000460a0 mov r0, r4 | r0 = r4;
0x000460a2 pop.w {r4, lr} |
0x000460a6 b.w 0x45ec4 | return void (*0x45ec4)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45f54 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_s64 () | void jsonw_s64 (int16_t arg1) {
| r0 = arg1;
0x00045f54 ldr r1, [pc, 4] | r1 = *(0x00045f5c);
0x00045f56 add r1, pc | r1 += pc;
0x00045f58 b.w 0x45d34 | return void (*0x45d34)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x4607c */
| #include <stdint.h>
|
; (fcn) sym.jsonw_s64_field () | void jsonw_s64_field (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0004607c push {r4, r5, r6, lr} |
0x0004607e mov r4, r0 | r4 = r0;
0x00046080 mov r6, r2 | r6 = r2;
0x00046082 mov r5, r3 | r5 = r3;
0x00046084 bl 0x45cc4 | jsonw_name ();
0x00046088 mov r2, r6 | r2 = r6;
0x0004608a mov r3, r5 | r3 = r5;
0x0004608c mov r0, r4 | r0 = r4;
0x0004608e pop.w {r4, r5, r6, lr} |
0x00046092 b.w 0x45f54 | return void (*0x45f54)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45f10 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_u64 () | void jsonw_u64 (int16_t arg1) {
| r0 = arg1;
0x00045f10 ldr r1, [pc, 4] | r1 = *(0x00045f18);
0x00045f12 add r1, pc | r1 += pc;
0x00045f14 b.w 0x45d34 | return void (*0x45d34)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45fc8 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_u64_field () | void jsonw_u64_field (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00045fc8 push {r4, r5, r6, lr} |
0x00045fca mov r4, r0 | r4 = r0;
0x00045fcc mov r6, r2 | r6 = r2;
0x00045fce mov r5, r3 | r5 = r3;
0x00045fd0 bl 0x45cc4 | jsonw_name ();
0x00045fd4 mov r2, r6 | r2 = r6;
0x00045fd6 mov r3, r5 | r3 = r5;
0x00045fd8 mov r0, r4 | r0 = r4;
0x00045fda pop.w {r4, r5, r6, lr} |
0x00045fde b.w 0x45f10 | return void (*0x45f10)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45f00 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_uint () | void jsonw_uint (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00045f00 mov r2, r1 | r2 = r1;
0x00045f02 ldr r1, [pc, 8] |
0x00045f04 add r1, pc | r1 = 0x8be16;
0x00045f06 b.w 0x45d34 | return void (*0x45d34)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45fb0 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_uint_field () | void jsonw_uint_field (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00045fb0 push {r3, r4, r5, lr} |
0x00045fb2 mov r4, r0 | r4 = r0;
0x00045fb4 mov r5, r2 | r5 = r2;
0x00045fb6 bl 0x45cc4 | jsonw_name ();
0x00045fba mov r1, r5 | r1 = r5;
0x00045fbc mov r0, r4 | r0 = r4;
0x00045fbe pop.w {r3, r4, r5, lr} |
0x00045fc2 b.w 0x45f00 | return void (*0x45f00)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45f1c */
| #include <stdint.h>
|
; (fcn) sym.jsonw_xint () | void jsonw_xint (int16_t arg1) {
| r0 = arg1;
0x00045f1c ldr r1, [pc, 4] | r1 = *(0x00045f24);
0x00045f1e add r1, pc | r1 += pc;
0x00045f20 b.w 0x45d34 | return void (*0x45d34)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x45fe4 */
| #include <stdint.h>
|
; (fcn) sym.jsonw_xint_field () | void jsonw_xint_field (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00045fe4 push {r4, r5, r6, lr} |
0x00045fe6 mov r4, r0 | r4 = r0;
0x00045fe8 mov r6, r2 | r6 = r2;
0x00045fea mov r5, r3 | r5 = r3;
0x00045fec bl 0x45cc4 | jsonw_name ();
0x00045ff0 mov r2, r6 | r2 = r6;
0x00045ff2 mov r3, r5 | r3 = r5;
0x00045ff4 mov r0, r4 | r0 = r4;
0x00045ff6 pop.w {r4, r5, r6, lr} |
0x00045ffa b.w 0x45f1c | return void (*0x45f1c)() ();
| }
[*] Function printf used 1 times tc.iproute2