[*] Binary protection state of libstdc++.so.6.0.24
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function popen tear down of libstdc++.so.6.0.24
; 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/libstdc++.so.6.0.24 @ 0x7a124 */
| #include <stdint.h>
|
; (fcn) method.__cxxabiv1::__class_type_info.__do_upcast___cxxabiv1::__class_type_info_const__void__const () | void method_cxxabiv1::_class_type_info_do_upcast_cxxabiv1::_class_type_info_const_void_const (int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| r0 = arg1;
| /* __cxxabiv1::__class_type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void**) const */
0x0007a124 push {r0, r1, r2, r3, r4, r5, r6, lr} |
0x0007a128 mov r3, 0x10 | r3 = 0x10;
0x0007a12c str r3, [sp, 8] | var_8h = r3;
0x0007a130 ldr r3, [r0] | r3 = *(r0);
0x0007a134 mov r4, 0 | r4 = 0;
0x0007a138 mov r5, r2 | r5 = r2;
0x0007a13c ldr r6, [r3, 0x18] | r6 = *((r3 + 0x18));
0x0007a140 str r4, [sp] | *(sp) = r4;
0x0007a144 mov r3, sp | r3 = sp;
0x0007a148 str r4, [sp, 4] | var_4h = r4;
0x0007a14c str r4, [sp, 0xc] | var_ch = r4;
0x0007a150 ldr r2, [r2] | r2 = *(r2);
0x0007a154 blx r6 | uint32_t (*r6)(uint32_t, uint32_t) (r2, r3);
0x0007a158 ldr r3, [sp, 4] | r3 = var_4h;
0x0007a15c and r3, r3, 6 | r3 &= 6;
0x0007a160 cmp r3, 6 |
| if (r3 != 6) {
0x0007a164 ldreq r3, [sp] | r3 = *(sp);
| }
| if (r3 != 6) {
0x0007a168 moveq r0, 1 | r0 = 1;
| }
| if (r3 == 6) {
0x0007a16c movne r0, r4 | r0 = r4;
| }
| if (r3 != 6) {
0x0007a170 streq r3, [r5] | *(r5) = r3;
| }
0x0007a174 add sp, sp, 0x10 |
0x0007a178 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/libstdc++.so.6.0.24 @ 0xd0c78 */
| #include <stdint.h>
|
; (fcn) method.std::basic_streambuf_char__std::char_traits_char___.pubsync__ () | void method_std::basic_streambuf_char_std::char_traits_char_pubsync_ (int32_t arg1) {
| r0 = arg1;
| /* std::basic_streambuf<char, std::char_traits<char> >::pubsync() */
0x000d0c78 ldr r3, [r0] | r3 = *(r0);
0x000d0c7c ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x000d0c80 bx r3 | return uint32_t (*r3)() ();
| }
; 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/libstdc++.so.6.0.24 @ 0x8de9c */
| #include <stdint.h>
|
; (fcn) method.std::moneypunct_char__false_._M_initialize_moneypunct_int__char_const_ () | void method_std::moneypunct_char_false_M_initialize_moneypunct_int_char_const_ (int32_t arg1) {
| void * s2;
| int32_t var_8h;
| r0 = arg1;
| /* std::moneypunct<char, false>::_M_initialize_moneypunct(int*, char const*) */
0x0008de9c push {r0, r1, r4, r5, r6, lr} |
0x0008dea0 ldr r4, [r0, 8] | r4 = *((r0 + 8));
0x0008dea4 ldr r6, [pc, 0x138] | r6 = *(0x8dfe0);
0x0008dea8 cmp r4, 0 |
0x0008deac add r6, pc, r6 | r6 = pc + r6;
0x0008deb0 mov r5, r0 | r5 = r0;
| if (r4 == 0) {
0x0008deb4 bne 0x8df14 |
0x0008deb8 mov r0, 0x44 | r0 = 0x44;
0x0008debc bl 0x7504c | fcn_0007504c ();
0x0008dec0 ldr r3, [pc, 0x120] | r3 = *(0x8dfe4);
0x0008dec4 str r4, [r0, 4] | *((r0 + 4)) = r4;
0x0008dec8 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0008decc str r4, [r0, 8] | *((r0 + 8)) = r4;
0x0008ded0 add r3, r3, 8 | r3 += 8;
0x0008ded4 str r3, [r0] | *(r0) = r3;
0x0008ded8 str r4, [r0, 0xc] | *((r0 + 0xc)) = r4;
0x0008dedc strb r4, [r0, 0x10] | *((r0 + 0x10)) = r4;
0x0008dee0 strb r4, [r0, 0x11] | *((r0 + 0x11)) = r4;
0x0008dee4 strb r4, [r0, 0x12] | *((r0 + 0x12)) = r4;
0x0008dee8 str r4, [r0, 0x14] | *((r0 + 0x14)) = r4;
0x0008deec str r4, [r0, 0x18] | *((r0 + 0x18)) = r4;
0x0008def0 str r4, [r0, 0x1c] | *((r0 + 0x1c)) = r4;
0x0008def4 str r4, [r0, 0x20] | *((r0 + 0x20)) = r4;
0x0008def8 str r4, [r0, 0x24] | *((r0 + 0x24)) = r4;
0x0008defc str r4, [r0, 0x28] | *((r0 + 0x28)) = r4;
0x0008df00 str r4, [r0, 0x2c] | *((r0 + 0x2c)) = r4;
0x0008df04 str r4, [r0, 0x30] | *((r0 + 0x30)) = r4;
0x0008df08 str r4, [r0, 0x34] | *((r0 + 0x34)) = r4;
0x0008df0c strb r4, [r0, 0x43] | *((r0 + 0x43)) = r4;
0x0008df10 str r0, [r5, 8] | *((r5 + 8)) = r0;
| }
0x0008df14 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0008df18 mov r2, 0x2e | r2 = 0x2e;
0x0008df1c strb r2, [r3, 0x11] | *((r3 + 0x11)) = r2;
0x0008df20 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0008df24 mov r2, 0x2c | r2 = 0x2c;
0x0008df28 strb r2, [r3, 0x12] | *((r3 + 0x12)) = r2;
0x0008df2c ldr r3, [pc, 0xb8] | r3 = *(0x8dfe8);
0x0008df30 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0008df34 add r3, pc, r3 | r3 = pc + r3;
0x0008df38 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0008df3c ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0008df40 mov r4, 0 | r4 = 0;
0x0008df44 str r4, [r2, 0xc] | *((r2 + 0xc)) = r4;
0x0008df48 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0008df4c str r3, [r2, 0x14] | *((r2 + 0x14)) = r3;
0x0008df50 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0008df54 str r4, [r2, 0x18] | *((r2 + 0x18)) = r4;
0x0008df58 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0008df5c str r3, [r2, 0x1c] | *((r2 + 0x1c)) = r3;
0x0008df60 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0008df64 str r4, [r2, 0x20] | *((r2 + 0x20)) = r4;
0x0008df68 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0008df6c str r3, [r2, 0x24] | *((r2 + 0x24)) = r3;
0x0008df70 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0008df74 mov r2, 4 | r2 = 4;
0x0008df78 str r4, [r3, 0x28] | *((r3 + 0x28)) = r4;
0x0008df7c ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0008df80 str r4, [r3, 0x2c] | *((r3 + 0x2c)) = r4;
0x0008df84 ldr r3, [pc, 0x64] | r3 = "raitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs";
0x0008df88 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0008df8c ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0008df90 add r0, r0, 0x30 | r0 += 0x30;
0x0008df94 mov r1, r3 | r1 = r3;
0x0008df98 str r3, [sp, 4] | s2 = r3;
0x0008df9c bl 0x74b9c | memcpy (r0, r1, r2);
0x0008dfa0 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0008dfa4 ldr r1, [sp, 4] | r1 = s2;
0x0008dfa8 mov r2, 4 | r2 = 4;
0x0008dfac add r0, r0, 0x34 | r0 += 0x34;
0x0008dfb0 bl 0x74b9c | memcpy (r0, r1, r2);
0x0008dfb4 ldr r3, [pc, 0x38] | r3 = "N";
0x0008dfb8 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0008dfbc ldr r1, [r3] | r1 = "N";
| do {
0x0008dfc0 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0008dfc4 ldrb r2, [r1, r4] | r2 = *((r1 + r4));
0x0008dfc8 add r3, r3, r4 | r3 += r4;
0x0008dfcc add r4, r4, 1 | r4++;
0x0008dfd0 cmp r4, 0xb |
0x0008dfd4 strb r2, [r3, 0x38] | *((r3 + 0x38)) = r2;
0x0008dfd8 bne 0x8dfc0 |
| } while (r4 != 0xb);
0x0008dfdc add sp, sp, 8 |
0x0008dfe0 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/libstdc++.so.6.0.24 @ 0xc04a8 */
| #include <stdint.h>
|
; (fcn) method.std::num_put_char__std::ostreambuf_iterator_char__std::char_traits_char_____.put_std::ostreambuf_iterator_char__std::char_traits_char_____std::ios_base__char__unsigned_long_long__const () | void method_std::num_put_char_std::ostreambuf_iterator_char_std::char_traits_char_put_std::ostreambuf_iterator_char_std::char_traits_char_std::ios_base_char_unsigned_long_long_const (int32_t arg_28h, int32_t arg_2ch, int32_t arg_30h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| /* std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, unsigned long long) const */
0x000c04a8 push {r4, r5, lr} |
0x000c04ac ldr lr, [r1] |
0x000c04b0 sub sp, sp, 0x1c |
0x000c04b4 add ip, sp, 0x10 |
0x000c04b8 stm ip, {r2, r3} | *(ip) = r2;
| *((ip + 4)) = r3;
0x000c04bc ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [arg_30h]");
0x000c04c0 mov r4, r0 | r4 = r0;
0x000c04c4 strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x000c04c8 ldrb r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000c04cc str r3, [sp, 4] | var_4h = r3;
0x000c04d0 ldr r3, [sp, 0x28] | r3 = *(arg_28h);
0x000c04d4 str r3, [sp] | *(sp) = r3;
0x000c04d8 ldr r5, [lr, 0x18] | r5 = *((lr + 0x18));
0x000c04dc ldm ip, {r2, r3} | r2 = *(ip);
| r3 = *((ip + 4));
0x000c04e0 blx r5 | uint32_t (*r5)(uint32_t, uint32_t) (r2, r3);
0x000c04e4 mov r0, r4 | r0 = r4;
0x000c04e8 add sp, sp, 0x1c |
0x000c04ec pop {r4, r5, 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/libstdc++.so.6.0.24 @ 0xd52a4 */
| #include <stdint.h>
|
; (fcn) method.std::num_put_wchar_t__std::ostreambuf_iterator_wchar_t__std::char_traits_wchar_t_____.put_std::ostreambuf_iterator_wchar_t__std::char_traits_wchar_t_____std::ios_base__wchar_t__unsigned_long_long__const () | void method_std::num_put_wchar_t_std::ostreambuf_iterator_wchar_t_std::char_traits_wchar_t_put_std::ostreambuf_iterator_wchar_t_std::char_traits_wchar_t_std::ios_base_wchar_t_unsigned_long_long_const (int32_t arg_28h, int32_t arg_2ch, int32_t arg_30h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| /* std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::put(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, unsigned long long) const */
0x000d52a4 push {r4, r5, lr} |
0x000d52a8 ldr lr, [r1] |
0x000d52ac sub sp, sp, 0x1c |
0x000d52b0 add ip, sp, 0x10 |
0x000d52b4 stm ip, {r2, r3} | *(ip) = r2;
| *((ip + 4)) = r3;
0x000d52b8 ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [arg_30h]");
0x000d52bc mov r4, r0 | r4 = r0;
0x000d52c0 strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x000d52c4 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000d52c8 str r3, [sp, 4] | var_4h = r3;
0x000d52cc ldr r3, [sp, 0x28] | r3 = *(arg_28h);
0x000d52d0 str r3, [sp] | *(sp) = r3;
0x000d52d4 ldr r5, [lr, 0x18] | r5 = *((lr + 0x18));
0x000d52d8 ldm ip, {r2, r3} | r2 = *(ip);
| r3 = *((ip + 4));
0x000d52dc blx r5 | uint32_t (*r5)(uint32_t, uint32_t) (r2, r3);
0x000d52e0 mov r0, r4 | r0 = r4;
0x000d52e4 add sp, sp, 0x1c |
0x000d52e8 pop {r4, r5, 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/libstdc++.so.6.0.24 @ 0xc0c50 */
| #include <stdint.h>
|
; (fcn) method.std::time_get_char__std::istreambuf_iterator_char__std::char_traits_char_____.get_monthname_std::istreambuf_iterator_char__std::char_traits_char_____std::istreambuf_iterator_char__std::char_traits_char_____std::ios_base__std::_Ios_Iostate__tm__ () | void method_std::time_get_char_std::istreambuf_iterator_char_std::char_traits_char_get_monthname_std::istreambuf_iterator_char_std::char_traits_char_std::istreambuf_iterator_char_std::char_traits_char_std::ios_base_std::_Ios_Iostate_tm_ (int32_t arg_38h, int32_t arg_3ch, int32_t arg_40h, int32_t arg1, int32_t arg2) {
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_18h;
| int32_t var_24h;
| int32_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| /* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::get_monthname(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, tm*) const */
0x000c0c50 push {r4, r5, lr} |
0x000c0c54 sub sp, sp, 0x24 |
0x000c0c58 add ip, sp, 0x18 |
0x000c0c5c stm ip, {r2, r3} | *(ip) = r2;
| *((ip + 4)) = r3;
0x000c0c60 ldr r2, [sp, 0x40] | r2 = *(arg_40h);
0x000c0c64 ldr r3, [r1] | r3 = *(r1);
0x000c0c68 str r2, [sp, 0x10] | var_10h = r2;
0x000c0c6c ldr r2, [sp, 0x3c] | r2 = *(arg_3ch);
0x000c0c70 mov r4, r0 | r4 = r0;
0x000c0c74 str r2, [sp, 0xc] | var_ch = r2;
0x000c0c78 ldr r2, [sp, 0x38] | r2 = *(arg_38h);
0x000c0c7c mov lr, r1 | lr = r1;
0x000c0c80 str r2, [sp, 8] | var_8h = r2;
0x000c0c84 add r2, sp, 0x2c | r2 += var_2ch;
0x000c0c88 ldmib r2, {r0, r1} | __asm ("ldmib r2, {r0, r1}");
0x000c0c8c stm sp, {r0, r1} | *(sp) = r0;
| *((sp + 4)) = r1;
0x000c0c90 ldr r5, [r3, 0x18] | r5 = *((r3 + 0x18));
0x000c0c94 mov r0, r4 | r0 = r4;
0x000c0c98 ldm ip, {r2, r3} | r2 = *(ip);
| r3 = *((ip + 4));
0x000c0c9c mov r1, lr | r1 = lr;
0x000c0ca0 blx r5 | uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000c0ca4 mov r0, r4 | r0 = r4;
0x000c0ca8 add sp, sp, 0x24 |
0x000c0cac pop {r4, r5, pc} |
| }
[*] Function popen used 1 times libstdc++.so.6.0.24