mirror of
https://github.com/upx/upx
synced 2025-09-28 19:06:07 +08:00
dos/com & dos/sys: use the new ElfLinker features
This commit is contained in:
parent
c5fb161477
commit
f850d36c52
|
@ -116,10 +116,7 @@ void PackCom::patchLoader(OutputFile *fo,
|
||||||
linker->defineSymbol("bytes_to_copy", ph.c_len + lsize);
|
linker->defineSymbol("bytes_to_copy", ph.c_len + lsize);
|
||||||
linker->defineSymbol("copy_source", ph.c_len + lsize + 0x100);
|
linker->defineSymbol("copy_source", ph.c_len + lsize + 0x100);
|
||||||
linker->defineSymbol("copy_destination", upper_end);
|
linker->defineSymbol("copy_destination", upper_end);
|
||||||
|
linker->defineSymbol("NRV2B160", ph.u_len + ph.overlap_overhead);
|
||||||
// FIXME: Depends on: decompr_start == cutpoint+1 !!!
|
|
||||||
linker->defineSymbol("decompressor", upper_end - 0xff -
|
|
||||||
d_len - getLoaderSection("UPX1HEAD"));
|
|
||||||
|
|
||||||
linker->relocate();
|
linker->relocate();
|
||||||
loader = getLoader();
|
loader = getLoader();
|
||||||
|
@ -149,7 +146,7 @@ int PackCom::buildLoader(const Filter *ft)
|
||||||
ft->id ? "NRVDDONE" : "NRVDRETU",
|
ft->id ? "NRVDDONE" : "NRVDRETU",
|
||||||
"NRVDECO1",
|
"NRVDECO1",
|
||||||
ph.max_offset_found <= 0xd00 ? "NRVLED00" : "NRVGTD00",
|
ph.max_offset_found <= 0xd00 ? "NRVLED00" : "NRVGTD00",
|
||||||
"NRVDECO2,NRV2B169",
|
"NRVDECO2",
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
if (ft->id)
|
if (ft->id)
|
||||||
|
|
|
@ -82,11 +82,11 @@ void PackSys::patchLoader(OutputFile *fo,
|
||||||
|
|
||||||
unsigned copy_to = ph.u_len + d_len + ph.overlap_overhead;
|
unsigned copy_to = ph.u_len + d_len + ph.overlap_overhead;
|
||||||
|
|
||||||
linker->defineSymbol("sys_entry", get_le16(ibuf + 6) - copy_to - 1);
|
|
||||||
linker->defineSymbol("calltrick_calls", calls);
|
linker->defineSymbol("calltrick_calls", calls);
|
||||||
linker->defineSymbol("copy_source", ph.c_len + lsize -1);
|
linker->defineSymbol("copy_source", ph.c_len + lsize - 1);
|
||||||
linker->defineSymbol("copy_destination", copy_to);
|
linker->defineSymbol("copy_destination", copy_to);
|
||||||
linker->defineSymbol("decompressor", ph.u_len + ph.overlap_overhead + 2);
|
linker->defineSymbol("NRV2B160", ph.u_len + ph.overlap_overhead + 1);
|
||||||
|
linker->defineSymbol("original_strategy", get_le16(ibuf + 6));
|
||||||
|
|
||||||
linker->relocate();
|
linker->relocate();
|
||||||
loader = getLoader();
|
loader = getLoader();
|
||||||
|
@ -109,7 +109,7 @@ int PackSys::buildLoader(const Filter *ft)
|
||||||
ft->id ? "SYSCALLT" : "",
|
ft->id ? "SYSCALLT" : "",
|
||||||
"SYSMAIN3,UPX1HEAD,SYSCUTPO,NRV2B160,NRVDDONE,NRVDECO1",
|
"SYSMAIN3,UPX1HEAD,SYSCUTPO,NRV2B160,NRVDDONE,NRVDECO1",
|
||||||
ph.max_offset_found <= 0xd00 ? "NRVLED00" : "NRVGTD00",
|
ph.max_offset_found <= 0xd00 ? "NRVLED00" : "NRVGTD00",
|
||||||
"NRVDECO2,NRV2B169",
|
"NRVDECO2",
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
if (ft->id)
|
if (ft->id)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -95,8 +95,6 @@ getbit_n2b:
|
||||||
decomp_ret_n2b:
|
decomp_ret_n2b:
|
||||||
ret
|
ret
|
||||||
decomp_done_n2b:
|
decomp_done_n2b:
|
||||||
section NRV2B169
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -63,8 +63,7 @@ section COMPSHDI
|
||||||
section COMCALLT
|
section COMCALLT
|
||||||
push di
|
push di
|
||||||
section COMMAIN2
|
section COMMAIN2
|
||||||
.byte 0xe9
|
jmp decomp_start_n2b
|
||||||
.word decompressor /* FIXME decomp_start_n2b */
|
|
||||||
|
|
||||||
#include "include/header2.ash"
|
#include "include/header2.ash"
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,7 @@ section SYSSBBBP
|
||||||
section SYSCALLT
|
section SYSCALLT
|
||||||
push di
|
push di
|
||||||
section SYSMAIN3
|
section SYSMAIN3
|
||||||
jmp decompressor /* FIXME decomp_start_n2b */
|
jmp decomp_start_n2b
|
||||||
|
|
||||||
#include "include/header2.ash"
|
#include "include/header2.ash"
|
||||||
|
|
||||||
|
@ -107,8 +107,7 @@ section SYSI0862
|
||||||
pop bx
|
pop bx
|
||||||
pop ax
|
pop ax
|
||||||
section SYSJUMP1
|
section SYSJUMP1
|
||||||
.byte 0xe9
|
jmp original_strategy
|
||||||
.word sys_entry /* FIXME */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
; vi:ts=8:et:nowrap
|
; vi:ts=8:et:nowrap
|
||||||
|
|
Loading…
Reference in New Issue
Block a user