[*] Binary protection state of libxtables.so.12.2.0
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of libxtables.so.12.2.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libxtables.so.12.2.0 @ 0x51f0 */
| #include <stdint.h>
|
; (fcn) sym.xtables_ip6mask_to_numeric () | void xtables_ip6mask_to_numeric (int32_t arg1) {
| r0 = arg1;
0x000051f0 push {r4, r5, r6, lr} |
0x000051f4 mov r5, r0 | r5 = r0;
0x000051f8 bl 0x2208 | r0 = fcn_00002208 ();
0x000051fc cmn r0, 1 |
| if (r0 != 1) {
0x00005200 bne 0x5240 | goto label_0;
| }
0x00005204 ldr r4, [pc, 0x70] |
0x00005208 ldr r1, [pc, 0x70] | r1 = *(0x527c);
0x0000520c add r4, pc, r4 | r4 = pc + r4;
0x00005210 add r4, r4, 0x870 | r4 = 0x5ae8;
0x00005214 add r4, r4, 4 | r4 += 4;
0x00005218 add r1, pc, r1 | r1 = pc + r1;
0x0000521c mov r0, r4 | r0 = r4;
0x00005220 bl 0x21c0 | strcpy (r0, r1);
0x00005224 mov r0, r5 | r0 = r5;
0x00005228 bl 0x231c | r0 = fcn_0000231c ();
0x0000522c mov r1, r0 | r1 = r0;
0x00005230 mov r0, r4 | r0 = r4;
0x00005234 bl 0x23f4 | strcat (r0, r1);
| do {
0x00005238 mov r0, r4 | r0 = r4;
0x0000523c pop {r4, r5, r6, pc} |
| label_0:
0x00005240 cmp r0, 0x80 |
0x00005244 mov r2, r0 | r2 = r0;
| if (r0 == 0x80) {
0x00005248 beq 0x5270 | goto label_1;
| }
0x0000524c ldr r4, [pc, 0x30] |
0x00005250 ldr r1, [pc, 0x30] | r1 = *(0x5284);
0x00005254 add r4, pc, r4 | r4 = pc + r4;
0x00005258 add r4, r4, 0x870 | r4 = 0x5af0;
0x0000525c add r4, r4, 4 | r4 += 4;
0x00005260 add r1, pc, r1 | r1 = pc + r1;
0x00005264 mov r0, r4 | r0 = r4;
0x00005268 bl 0x2538 | sprintf (r0, r1, r2)
0x0000526c b 0x5238 |
| } while (1);
| label_1:
0x00005270 ldr r0, [pc, 0x14] | r0 = *(0x5288);
0x00005274 add r0, pc, r0 | r0 = pc + r0;
0x00005278 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libxtables.so.12.2.0 @ 0x4a08 */
| #include <stdint.h>
|
; (fcn) sym.xtables_ipmask_to_numeric () | void xtables_ipmask_to_numeric (int32_t arg1) {
| r0 = arg1;
0x00004a08 push {r4, lr} |
0x00004a0c mov r4, r0 | r4 = r0;
0x00004a10 bl 0x24a8 | r0 = fcn_000024a8 ();
0x00004a14 cmn r0, 1 |
| if (r0 != 1) {
0x00004a18 bne 0x4a50 | goto label_0;
| }
0x00004a1c mov r0, r4 | r0 = r4;
0x00004a20 bl 0x2340 | fcn_00002340 ();
0x00004a24 ldr r4, [pc, 0x58] |
0x00004a28 ldr r1, [pc, 0x58] | r1 = *(0x4a84);
0x00004a2c add r4, pc, r4 | r4 = pc + r4;
0x00004a30 add r4, r4, 0x420 | r4 = 0x4ea0;
0x00004a34 add r4, r4, 1 | r4++;
0x00004a38 add r1, pc, r1 | r1 = pc + r1;
0x00004a3c mov r2, r0 | r2 = r0;
| do {
0x00004a40 mov r0, r4 | r0 = r4;
0x00004a44 bl 0x2538 | sprintf (r0, r1, r2)
0x00004a48 mov r0, r4 | r0 = r4;
0x00004a4c pop {r4, pc} |
| label_0:
0x00004a50 cmp r0, 0x20 |
0x00004a54 mov r2, r0 | r2 = r0;
| if (r0 == 0x20) {
0x00004a58 beq 0x4a78 | goto label_1;
| }
0x00004a5c ldr r4, [pc, 0x28] |
0x00004a60 ldr r1, [pc, 0x28] | r1 = *(0x4a8c);
0x00004a64 add r4, pc, r4 | r4 = pc + r4;
0x00004a68 add r4, r4, 0x420 | r4 = 0x4ea8;
0x00004a6c add r4, r4, 1 | r4++;
0x00004a70 add r1, pc, r1 | r1 = pc + r1;
0x00004a74 b 0x4a40 |
| } while (1);
| label_1:
0x00004a78 ldr r0, [pc, 0x14] | r0 = *(0x4a90);
0x00004a7c add r0, pc, r0 | r0 = pc + r0;
0x00004a80 pop {r4, pc} |
| }
[*] Function sprintf used 3 times libxtables.so.12.2.0