mirror of
https://github.com/upx/upx
synced 2025-09-28 19:06:07 +08:00
arm-linux.elf-entry.S clobbered ADRU with sz_unc of fold
This commit is contained in:
parent
bdd90f2c57
commit
ea0dfe83b7
|
@ -29,8 +29,8 @@
|
|||
|
||||
|
||||
#define STUB_ARM_LINUX_ELF_ENTRY_SIZE 16296
|
||||
#define STUB_ARM_LINUX_ELF_ENTRY_ADLER32 0xdf115bee
|
||||
#define STUB_ARM_LINUX_ELF_ENTRY_CRC32 0x8704e1a1
|
||||
#define STUB_ARM_LINUX_ELF_ENTRY_ADLER32 0xccad5bfe
|
||||
#define STUB_ARM_LINUX_ELF_ENTRY_CRC32 0x8a797a93
|
||||
|
||||
unsigned char stub_arm_linux_elf_entry[16296] = {
|
||||
127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||
|
@ -46,7 +46,7 @@ unsigned char stub_arm_linux_elf_entry[16296] = {
|
|||
0, 32,160,227, 2, 0,159,239, 0,144,156,229,140,144, 73,226, /* 0x a0 */
|
||||
9,160, 76,224, 4,160,138,224, 8, 0,155,229, 1, 64, 45,233, /* 0x b0 */
|
||||
0, 48,155,229, 12, 0,139,226, 4, 16,155,229, 14, 32,160,225, /* 0x c0 */
|
||||
8, 48,141,229, 8, 48,141,226, 15,224,160,225, 5,240,160,225, /* 0x d0 */
|
||||
16, 48,141,229, 16, 48,141,226, 15,224,160,225, 5,240,160,225, /* 0x d0 */
|
||||
2,128,189,232,252, 64, 45,233, 0,112,129,224, 0, 80,224,227, /* 0x e0 */
|
||||
2, 65,160,227, 20, 0, 0,234, 24, 0,189,232, 7, 0, 64,224, /* 0x f0 */
|
||||
3, 32, 66,224, 0, 32,132,229, 0, 64,160,225, 3, 0,160,225, /* 0x 100 */
|
||||
|
|
|
@ -29,8 +29,8 @@
|
|||
|
||||
|
||||
#define STUB_ARMEB_LINUX_ELF_ENTRY_SIZE 16295
|
||||
#define STUB_ARMEB_LINUX_ELF_ENTRY_ADLER32 0xcad35b5a
|
||||
#define STUB_ARMEB_LINUX_ELF_ENTRY_CRC32 0xc07dcf2e
|
||||
#define STUB_ARMEB_LINUX_ELF_ENTRY_ADLER32 0xb82f5b6a
|
||||
#define STUB_ARMEB_LINUX_ELF_ENTRY_CRC32 0x9d8ad292
|
||||
|
||||
unsigned char stub_armeb_linux_elf_entry[16295] = {
|
||||
127, 69, 76, 70, 1, 2, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||
|
@ -46,7 +46,7 @@ unsigned char stub_armeb_linux_elf_entry[16295] = {
|
|||
227,160, 32, 0,239,159, 0, 2,229,156,144, 0,226, 73,144,140, /* 0x a0 */
|
||||
224, 76,160, 9,224,138,160, 4,229,155, 0, 8,233, 45, 64, 1, /* 0x b0 */
|
||||
229,155, 48, 0,226,139, 0, 12,229,155, 16, 4,225,160, 32, 14, /* 0x c0 */
|
||||
229,141, 48, 8,226,141, 48, 8,225,160,224, 15,225,160,240, 5, /* 0x d0 */
|
||||
229,141, 48, 16,226,141, 48, 16,225,160,224, 15,225,160,240, 5, /* 0x d0 */
|
||||
232,189,128, 2,233, 45, 64,252,224,129,112, 0,227,224, 80, 0, /* 0x e0 */
|
||||
227,160, 65, 2,234, 0, 0, 20,232,189, 0, 24,224, 64, 0, 7, /* 0x f0 */
|
||||
224, 66, 32, 3,229,132, 32, 0,225,160, 64, 0,225,160, 0, 3, /* 0x 100 */
|
||||
|
|
|
@ -73,6 +73,7 @@ _start: .globl _start
|
|||
sub r9,r12,r1 // &our_Elf32_Ehdr
|
||||
add r1,r1,# PAGE_SIZE
|
||||
stmdb sp!,{r0,r1,r2} // ADRU,LENU,space for sz_unc
|
||||
D_sz_unc=2*4 // stack displacement to sz_unc
|
||||
mov r2,#PROT_READ | PROT_WRITE | PROT_EXEC
|
||||
mov r3,#MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS
|
||||
mvn r4,#0 // -1; cater to *BSD for fd when MAP_ANON
|
||||
|
@ -104,15 +105,16 @@ copy:
|
|||
add r10,r10,r4 // relocated &b_info
|
||||
|
||||
ldr r0,[r11,# b_method ] // 5th param (whole word: endian issues!)
|
||||
stmdb sp!,{r0,lr}
|
||||
stmdb sp!,{r0, lr} // 5th param, dst for unfolded
|
||||
D_stm1=2*4
|
||||
ldr r3,[r11,# sz_unc]
|
||||
add r0, r11,# sz_b_info
|
||||
ldr r1,[r11,# sz_cpr ]
|
||||
mov r2,lr // dst
|
||||
str r3,[sp,#2*4] // sz_unc; lzma needs for EOF
|
||||
add r3, sp,#2*4 // &sz_unc
|
||||
str r3,[sp,#D_stm1 + D_sz_unc] // sz_unc; lzma needs for EOF
|
||||
add r3, sp,#D_stm1 + D_sz_unc // &sz_unc
|
||||
mov lr,pc; mov pc,r5 // decompress folded code [opcode 'bx' not in v4a]
|
||||
ldmia sp!,{r1, pc} // discard 5th param; return
|
||||
ldmia sp!,{r1, pc} // discard 5th param; goto unfolded
|
||||
|
||||
f_decompress:
|
||||
#define LINUX_ARM_CACHEFLUSH 1
|
||||
|
|
Loading…
Reference in New Issue
Block a user