New option --catch-sigsegv on amd64, arm64, arm.v4a
Catch SIGSEGV during de-compression, and print state info
("auto debug") using /proc/self/maps and gdb.
This was motivated by suspicion of unreliable hardware
which triggered "Heisenbugs": a crash which cannot be reproduced.
If SIGSGV occurs without the "auto debug" info, then that
implies an error user code after de-compression, often when
user code accesses /proc/self/exe, which is not the un-compressed file.
modified: misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
modified: src/help.cpp
modified: src/main.cpp
modified: src/options.h
modified: src/p_lx_elf.cpp
modified: src/stub/Makefile
modified: src/stub/src/amd64-linux.elf-entry.S
modified: src/stub/src/amd64-linux.elf-fold.S
modified: src/stub/src/arm.v4a-linux.elf-entry.S
modified: src/stub/src/arm.v4a-linux.elf-fold.S
modified: src/stub/src/arm64-linux.elf-entry.S
modified: src/stub/src/arm64-linux.elf-fold.S
plus generated .h .dump .map
This commit is contained in:
+42
-42
@@ -46,14 +46,14 @@ b8c35fa2956da17ca505956e9f5017bb5f3a746322647e24ccb8ff28059cafa4 *powerpc-linux.
|
|||||||
a0950546dc17fca9437219431d8ddb0249ce5b08e899e0c799a87ac982adee70 *powerpc64le-linux.elf/upx-3.95
|
a0950546dc17fca9437219431d8ddb0249ce5b08e899e0c799a87ac982adee70 *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t110_compress_ucl_nrv2b_3_no_filter="\
|
expected_sha256sums__t110_compress_ucl_nrv2b_3_no_filter="\
|
||||||
919f31ec6a70a81159f4fc1d3cd4e9d66800a242df2fac9e339a36e1bf648091 *amd64-linux.elf/upx-3.91
|
836d9c5d9092421e49aeb573cde449ef740afbfea54d131ccbd88d8c7d87860d *amd64-linux.elf/upx-3.91
|
||||||
548e950c9f082eb0eb42b18411bbc257365cfc9c937ab20f501ebf0db5850d25 *amd64-linux.elf/upx-3.95
|
9776a2d030719f9d74413d17c1bb732aaabb610b341031facd2c1a75348fc661 *amd64-linux.elf/upx-3.95
|
||||||
822718cc0f6ac5e57bb23eeb65be6f3f7e73df8b062853abddcc924ec8207596 *amd64-win64.pe/upx-3.95.exe
|
822718cc0f6ac5e57bb23eeb65be6f3f7e73df8b062853abddcc924ec8207596 *amd64-win64.pe/upx-3.95.exe
|
||||||
4d8b2a8f29b38e097287e550d11810d7ecd4c5f07744545b3a315de908987bf6 *arm-linux.elf/upx-3.95
|
e01b7eff05063c7f49482ac8d93ea7a89c779a0d6cb346eb8c3a96e2e204662d *arm-linux.elf/upx-3.95
|
||||||
1440d6b44968954baf56fbc2a0739a51873455876114d4445ae4b67cb5e7893b *arm-wince.pe/upx-3.91.exe
|
1440d6b44968954baf56fbc2a0739a51873455876114d4445ae4b67cb5e7893b *arm-wince.pe/upx-3.91.exe
|
||||||
04c08626d4b03a4e969018eed7093c24de191b5d27db2a25221b134827806929 *arm64-linux.elf/upx-3.95
|
35c08bf5086fe21ff19e3512359e54ac97c6d4513e6bb9ef4a59294bebf18f6a *arm64-linux.elf/upx-3.95
|
||||||
6c8b276a0b611402d336b43cf8514b9a8d98be4f55a8301e784b7b88031b2b85 *armeb-linux.elf/upx-3.91
|
5630b5bdd02121b97494a7b5aca48fec9e433b4a1230c5502d51add42c825b29 *armeb-linux.elf/upx-3.91
|
||||||
dcd0c0060d44886966ae4e97b79a2c172f02d56228ea76dbc5c880ad59ef4ee5 *armeb-linux.elf/upx-3.95
|
4c298423461506aa9895a450319931002c33439c09bc3bf793ab00b2d9a865ae *armeb-linux.elf/upx-3.95
|
||||||
a7ee051c5f9dcf233e2ee248274121b99fb8f098eff95469bc0638a7423723f0 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
a7ee051c5f9dcf233e2ee248274121b99fb8f098eff95469bc0638a7423723f0 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
85cf31be166cb59587a99419cdd0fc5a79825d7508ab2c9a4bc0d700d603354d *i386-dos32.djgpp2.coff/upx-3.95.exe
|
85cf31be166cb59587a99419cdd0fc5a79825d7508ab2c9a4bc0d700d603354d *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
fc7656d9a877967be7e339bfc98a0c63ea7b5abc30b96fa9e5931c75ecbe9827 *i386-linux.elf/upx-3.91
|
fc7656d9a877967be7e339bfc98a0c63ea7b5abc30b96fa9e5931c75ecbe9827 *i386-linux.elf/upx-3.91
|
||||||
@@ -69,14 +69,14 @@ acd3dc5ed3e4c4eeaa42e7cca71a79d687dd844ce5f384666ed6e78327b5a8e3 *powerpc-linux.
|
|||||||
3f02885d1e94e59062eb78c4c910cde042475a6cadb77a85a603de747a50f45c *powerpc64le-linux.elf/upx-3.95
|
3f02885d1e94e59062eb78c4c910cde042475a6cadb77a85a603de747a50f45c *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
|
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
|
||||||
c5bafac11df5a38c1b72fd070373a0e1d5a066527129937c5bc9a280e21ad656 *amd64-linux.elf/upx-3.91
|
8431343adec632690cec669038c246438c799e7dc1b8bc85586e0d2bcd2eebad *amd64-linux.elf/upx-3.91
|
||||||
6cc1e01ac0b6140464a06f5aefb51c0388fdfe28f264a38061b50b3508203c07 *amd64-linux.elf/upx-3.95
|
1852bded40be6eb5ddb07a491476dcfcca69cadda45a5f128aa8f967d567fa0b *amd64-linux.elf/upx-3.95
|
||||||
5ab022e2c3ecb09931e2181fb5f7699f35e2b453b54c823e42653c84b0df5f2c *amd64-win64.pe/upx-3.95.exe
|
5ab022e2c3ecb09931e2181fb5f7699f35e2b453b54c823e42653c84b0df5f2c *amd64-win64.pe/upx-3.95.exe
|
||||||
e21b2305df2c1896eeae61010c3b65d8a50d476ea4a9bab6ec2fa4f9a0bed5a6 *arm-linux.elf/upx-3.95
|
3bf7b3b955ac90d59a5efa197240c2c99eec5c21b7cf8125731ac9fe2d5939a4 *arm-linux.elf/upx-3.95
|
||||||
53121baf42c85991900aa3947f3d817fe6e894bc6f325ab1d576de6fba5fbcbf *arm-wince.pe/upx-3.91.exe
|
53121baf42c85991900aa3947f3d817fe6e894bc6f325ab1d576de6fba5fbcbf *arm-wince.pe/upx-3.91.exe
|
||||||
7431abc46f0960311364ecd690965dd1fc74b2de4baca8e0af8f966735b6372e *arm64-linux.elf/upx-3.95
|
3c9e49445280de6a771e77f6a88b3c3957815baa193e92a893d5defe6699f50a *arm64-linux.elf/upx-3.95
|
||||||
8b67fc95dc555c2de4e3d0c85e4ab977f4c3fba24d68a2f9c402c51e08ad5f3b *armeb-linux.elf/upx-3.91
|
83e91856e15fec9c92473a1d696806b20be9f7be1f9c5a4f2e4d03ba1399ece3 *armeb-linux.elf/upx-3.91
|
||||||
c3b3e5b0a379022b26bae96432c3f5f946990f45b0b26afe056afe1170bf33c7 *armeb-linux.elf/upx-3.95
|
c8931a326150591abfeac821cca4ca74055192e9745241020d69971635a07602 *armeb-linux.elf/upx-3.95
|
||||||
51e4faea51e12c7442b27bb50150f532ac51d8102f77a669cbce82f2675a2ef2 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
51e4faea51e12c7442b27bb50150f532ac51d8102f77a669cbce82f2675a2ef2 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
1196f578ab0b862bae8ac6b5166b770f072cf0ac521a2a23a6347c19ea82a0da *i386-dos32.djgpp2.coff/upx-3.95.exe
|
1196f578ab0b862bae8ac6b5166b770f072cf0ac521a2a23a6347c19ea82a0da *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
3015651261f28fb43ed43a8c1fa257bcfcdc788e6fd3f436f3de23733736c724 *i386-linux.elf/upx-3.91
|
3015651261f28fb43ed43a8c1fa257bcfcdc788e6fd3f436f3de23733736c724 *i386-linux.elf/upx-3.91
|
||||||
@@ -92,14 +92,14 @@ aea86bf87870a1e48a454ac1ea9a80d90d8abe5113d418a71d8a9c4a74bb2d0a *powerpc-linux.
|
|||||||
62038c87489dc5cd3772e8e4051cf1d416edecf267d37f390a649f4ae657e0f9 *powerpc64le-linux.elf/upx-3.95
|
62038c87489dc5cd3772e8e4051cf1d416edecf267d37f390a649f4ae657e0f9 *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
|
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
|
||||||
509bc9676a0f5f5ce6df118da8e792151db816fcce5490eadc87fc525aad5a35 *amd64-linux.elf/upx-3.91
|
f817034e8b7765d8b422dac9cb6f24f78ce5bfd7169cd3b33e8224e00b131eca *amd64-linux.elf/upx-3.91
|
||||||
e8d6bf8204c6bf5d170ca8d4c9cb48b3b7a48b04d665dd6e111980081fcba3b3 *amd64-linux.elf/upx-3.95
|
d21441a05514c085c10e99b00d8cc4d45484297a8e4e8a246364ca4347d0ed56 *amd64-linux.elf/upx-3.95
|
||||||
7bd7cd37093200fa94d21dd7fdfef4d7fb9c3049fbf5f408f1f242cb8d9c6a55 *amd64-win64.pe/upx-3.95.exe
|
7bd7cd37093200fa94d21dd7fdfef4d7fb9c3049fbf5f408f1f242cb8d9c6a55 *amd64-win64.pe/upx-3.95.exe
|
||||||
4424d813ae55bec589779461c4d4b25361a58ea91659f4a12a7a2d08158cea64 *arm-linux.elf/upx-3.95
|
46ea8dbdb15685f1f79f462acd2db6bafdcc731be26ae8ffaed6ddb954a473a7 *arm-linux.elf/upx-3.95
|
||||||
ad0a7a18e87657d28260b7c527d284863becd3c5f92259c570125465f88d4042 *arm-wince.pe/upx-3.91.exe
|
ad0a7a18e87657d28260b7c527d284863becd3c5f92259c570125465f88d4042 *arm-wince.pe/upx-3.91.exe
|
||||||
0bbeb73af475bc852313074a14360ae863364175d7fbd4c2f3450790bc3a58ee *arm64-linux.elf/upx-3.95
|
0b700f0f7dde3118694155e876e6c2003ef701fe94856d6562936ec081278747 *arm64-linux.elf/upx-3.95
|
||||||
7da4a04118f50824821c00f4f9abf6056128ac33de6ac45a145fb5d4810850d9 *armeb-linux.elf/upx-3.91
|
72a5ac1ad2dc8d0235d4be417244a8766610390450521400039dfeb6a9d7cec4 *armeb-linux.elf/upx-3.91
|
||||||
b4191959889ecb2b9bd2dd046318b414ab5a8268517572017466fbc9c986925e *armeb-linux.elf/upx-3.95
|
f1896a43459d0078c37eccd2c878ff5a91039c2f49025fefc617f6c4ad7ce246 *armeb-linux.elf/upx-3.95
|
||||||
6fcdc8e34ce8b3501db2260c8a921c6e963954fdeffedfefca353a27bcc02d56 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
6fcdc8e34ce8b3501db2260c8a921c6e963954fdeffedfefca353a27bcc02d56 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
6f4f901c1838252f9b3104060475a6f13a2ebec830096ff28d870148580e4287 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
6f4f901c1838252f9b3104060475a6f13a2ebec830096ff28d870148580e4287 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
8127f8380300508e8062e9391e321abd0429a6a31fec41e769cc7fe80af27e27 *i386-linux.elf/upx-3.91
|
8127f8380300508e8062e9391e321abd0429a6a31fec41e769cc7fe80af27e27 *i386-linux.elf/upx-3.91
|
||||||
@@ -115,14 +115,14 @@ aba8bd826ee52d533f9e1c4270d4f4194fe8d8747ea10a1d3ce59b6443f1a9f2 *powerpc-linux.
|
|||||||
d313dd128a54189b9551a529b1ed21b222aa0394a30f9ba552cde96edcd4011e *powerpc64le-linux.elf/upx-3.95
|
d313dd128a54189b9551a529b1ed21b222aa0394a30f9ba552cde96edcd4011e *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t140_compress_lzma_2_no_filter="\
|
expected_sha256sums__t140_compress_lzma_2_no_filter="\
|
||||||
ed2849169a873bb4070e9d878126f7bc19fb326d1dc6e169901ff3a3026661c3 *amd64-linux.elf/upx-3.91
|
fefac6fbd1e95479eb4066519f9bd801a30c29966685840b6a011e2911b984ca *amd64-linux.elf/upx-3.91
|
||||||
2b7f9baf27490274fe9301e8a962ac2bae03da0afec67c17df8f8f0e27157891 *amd64-linux.elf/upx-3.95
|
64487a0e0aade092a8ff7e6d8d9528ca550540cac8d432005ba610179782d042 *amd64-linux.elf/upx-3.95
|
||||||
a55ec5a7f2911f6da8b9336daf4f1051e753cfb7a4458c7f7baa6b63340c6daf *amd64-win64.pe/upx-3.95.exe
|
a55ec5a7f2911f6da8b9336daf4f1051e753cfb7a4458c7f7baa6b63340c6daf *amd64-win64.pe/upx-3.95.exe
|
||||||
8765db7ae04a03af743ad8afc586b943b84b65aca9f1ec240232daa2161ba703 *arm-linux.elf/upx-3.95
|
3c0e0ea709a193fdd0771e6f6cb196757df645ebdf5a794af0bb26a361e87a51 *arm-linux.elf/upx-3.95
|
||||||
7a6c603eecf214e5d6742f1fce922223c97c8bd2527678a968640dd6c1bc0d71 *arm-wince.pe/upx-3.91.exe
|
7a6c603eecf214e5d6742f1fce922223c97c8bd2527678a968640dd6c1bc0d71 *arm-wince.pe/upx-3.91.exe
|
||||||
810aa1e8f15d9617a0fac4bc4e5c5c5219fc44125d41ced661c744d6c5bb9857 *arm64-linux.elf/upx-3.95
|
c8435e2f82ba72a0b6abad4146539d40d495461c5e480af705b2bbd21d192128 *arm64-linux.elf/upx-3.95
|
||||||
1dbb05c09fb972c3a5f87ace0c802af48f8b20f7f977f5a14b91dad59800d6a6 *armeb-linux.elf/upx-3.91
|
e3d8e5f1fd529975483eef14c6d5985ce2869e26af67811d7185b99a426dc9ba *armeb-linux.elf/upx-3.91
|
||||||
a1fba814639540616175e0c058267e96f839d85a187b01af764af14ae1b6019c *armeb-linux.elf/upx-3.95
|
f70db696b4f6860de6804fdca48a837ff9fe1be9a88ecf5d32e927b3c7178ca6 *armeb-linux.elf/upx-3.95
|
||||||
7a8eaa5139b95cc56591200fce62d3c9af163671467952cab6fcf487318107bb *i386-dos32.djgpp2.coff/upx-3.91.exe
|
7a8eaa5139b95cc56591200fce62d3c9af163671467952cab6fcf487318107bb *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
9b5fc0f54a5f811bda190c36fb2fa5c5b03c6c3de0c62693e4191230b5a419b8 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
9b5fc0f54a5f811bda190c36fb2fa5c5b03c6c3de0c62693e4191230b5a419b8 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
68b4ce63cb0bd7dd5b287e1f9fa5d9bc234ac36359ce3ebff863984c503a698e *i386-linux.elf/upx-3.91
|
68b4ce63cb0bd7dd5b287e1f9fa5d9bc234ac36359ce3ebff863984c503a698e *i386-linux.elf/upx-3.91
|
||||||
@@ -138,14 +138,14 @@ e268c98fdacfd04268d76644f2bb4746ae04b57801407aaa1867798840eeeea0 *m68k-atari.tos
|
|||||||
efec1e5bbb9bcf11dbc7081adfc2020de18fae326ad86194551c44fba0d2148d *powerpc64le-linux.elf/upx-3.95
|
efec1e5bbb9bcf11dbc7081adfc2020de18fae326ad86194551c44fba0d2148d *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t150_compress_ucl_2_all_filters="\
|
expected_sha256sums__t150_compress_ucl_2_all_filters="\
|
||||||
fc30606d37c697f5c79742bf6e7d2afa8503e69fc87e52274d00b5210d03157a *amd64-linux.elf/upx-3.91
|
05b29bde32af1e63e837e2be499567c4b10d7e692c88082f24e3417e0c7b9f40 *amd64-linux.elf/upx-3.91
|
||||||
c6d66f6d4f92812801c021a854fbd94745a7b63e0477678b8eb1dc26c5b0a9a4 *amd64-linux.elf/upx-3.95
|
65c142ee01af09fa8741932c1f21d466be971aad059cc5afddbb7ecdf142c1bb *amd64-linux.elf/upx-3.95
|
||||||
cbb5c90bd9195bd9e3acd931312a70deeccfab5540f398ceda8826f8d6b332bf *amd64-win64.pe/upx-3.95.exe
|
cbb5c90bd9195bd9e3acd931312a70deeccfab5540f398ceda8826f8d6b332bf *amd64-win64.pe/upx-3.95.exe
|
||||||
bb88759de778b1099b51a012f915e646ebfddcbd2fb26b3a1e760fc81a41d2b9 *arm-linux.elf/upx-3.95
|
e29c6093fac30bf3a0f7e368f792343594f320142b58416bc7a3c0b17c6c037d *arm-linux.elf/upx-3.95
|
||||||
76a5f0518fc797bd3f132ce6eb61ca187b5d463f191417883a73d4584716c23a *arm-wince.pe/upx-3.91.exe
|
76a5f0518fc797bd3f132ce6eb61ca187b5d463f191417883a73d4584716c23a *arm-wince.pe/upx-3.91.exe
|
||||||
7b9290c2ab01632d8baa28b24498fbcd734caf8e3846864bb62a8282de3ffd9a *arm64-linux.elf/upx-3.95
|
4df30002376a4f18029ea9dd8260d395bec3a3fa11fbc5aa19859c2f0efdc2e6 *arm64-linux.elf/upx-3.95
|
||||||
0bafd7837327b590b3be06676ee73c52405e5e4a36a6d06f8b6773e93c499420 *armeb-linux.elf/upx-3.91
|
2bb47c4cd752022c0c58ea9ec21bbd62f1bf68f81356aadb94dcd03700e8126b *armeb-linux.elf/upx-3.91
|
||||||
aea39071ff8ce0b2a59f30e50603ef2ec39789693a3dd9baa4e6be1e49b4e068 *armeb-linux.elf/upx-3.95
|
60d7fb2d50b8ef6c8aed86f6444485749a99de4abf60727650c01a9910646422 *armeb-linux.elf/upx-3.95
|
||||||
aa05c3a2953f0f2d70842cba45786b707a79ffef22fd084f51e304762cc67765 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
aa05c3a2953f0f2d70842cba45786b707a79ffef22fd084f51e304762cc67765 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
c677241e9a8753ba1332ac3875ab6398fb2d792d2627edd9e58f2535b3131abe *i386-dos32.djgpp2.coff/upx-3.95.exe
|
c677241e9a8753ba1332ac3875ab6398fb2d792d2627edd9e58f2535b3131abe *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
7bcd42f58dcc8ddb6cb1a4e33d56b584fe6d49b002b01a0859571d1324dd593a *i386-linux.elf/upx-3.91
|
7bcd42f58dcc8ddb6cb1a4e33d56b584fe6d49b002b01a0859571d1324dd593a *i386-linux.elf/upx-3.91
|
||||||
@@ -161,14 +161,14 @@ c47d1299f6ecf86e62528fc54979117b2b2ddbb6c80f553689402399fc7eab28 *powerpc-linux.
|
|||||||
e3ce51b863905a4831958c72541b04e9f893f0d9827f32e615822db7aebd56bc *powerpc64le-linux.elf/upx-3.95
|
e3ce51b863905a4831958c72541b04e9f893f0d9827f32e615822db7aebd56bc *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t160_compress_all_methods_1_no_filter="\
|
expected_sha256sums__t160_compress_all_methods_1_no_filter="\
|
||||||
115046275f6bccbaa34b7aefbedeba8741aba4e4876340a3d7363bae86ee4209 *amd64-linux.elf/upx-3.91
|
94c91b97fcce7402a4494b22699b2450e8e4e2a9f4ddd66e1133c76ce198c167 *amd64-linux.elf/upx-3.91
|
||||||
a8394890b5d731258316b520da2a5e4b43902742d237536fb7fbc578c6197fbb *amd64-linux.elf/upx-3.95
|
5b3e85adb37919d051c6eaff205b8e1d77a2dfde0d8e7dcdee7c22f8fd5dc8c7 *amd64-linux.elf/upx-3.95
|
||||||
5a0ecb45658904bcd0b823b77dba039c9814e2eff4ed429784c36b7074b9858c *amd64-win64.pe/upx-3.95.exe
|
5a0ecb45658904bcd0b823b77dba039c9814e2eff4ed429784c36b7074b9858c *amd64-win64.pe/upx-3.95.exe
|
||||||
0976be6c56de1ac2314d8a4962ae3d9d7be962847600db5e2bab529ab32cebd6 *arm-linux.elf/upx-3.95
|
dce31e336759c334feac8099c0a93c281ef9b2abce75c53974049044f16250f6 *arm-linux.elf/upx-3.95
|
||||||
fdbe0395ac401285edb9c2f9bfbb0fbd3c0eaad5052a88d8369b1a66b35a8a3e *arm-wince.pe/upx-3.91.exe
|
fdbe0395ac401285edb9c2f9bfbb0fbd3c0eaad5052a88d8369b1a66b35a8a3e *arm-wince.pe/upx-3.91.exe
|
||||||
1c8d536870d0244bb12cb8fdd6cd35ad7e9a53bbc4aa8e2e12af72447caaf467 *arm64-linux.elf/upx-3.95
|
acdb7ff90d7c6f403872ec333e2987ee74e99d6e1390863b321b528d312c1084 *arm64-linux.elf/upx-3.95
|
||||||
912b6ca141a028974bc46aeb571314db371647201974283992752933f39200b1 *armeb-linux.elf/upx-3.91
|
31f1a8b1a4cc676c61b081da626116ded2f9413a847b8b87f3727b42e4bc5796 *armeb-linux.elf/upx-3.91
|
||||||
0b5757e474bcf3136edf10e403f95e706b214a5cf7d8577fbf7778175b1bef61 *armeb-linux.elf/upx-3.95
|
fe57f05ed19600015c00ef146808cff081c03574ec29f228d32eba8c44122154 *armeb-linux.elf/upx-3.95
|
||||||
0a0099246096d20ff6035a4df6566954b9d8aff9ed8fdbd35aa5ee4995b02bfe *i386-dos32.djgpp2.coff/upx-3.91.exe
|
0a0099246096d20ff6035a4df6566954b9d8aff9ed8fdbd35aa5ee4995b02bfe *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
5df7aa9f0896df87eb8798119ad16a9b89c87a7568a67339e33b5baa99ec361f *i386-dos32.djgpp2.coff/upx-3.95.exe
|
5df7aa9f0896df87eb8798119ad16a9b89c87a7568a67339e33b5baa99ec361f *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
53e5aae9bc70f58e3dc2aef5a94f66df2517d547670e72ee2b3189b7da809f41 *i386-linux.elf/upx-3.91
|
53e5aae9bc70f58e3dc2aef5a94f66df2517d547670e72ee2b3189b7da809f41 *i386-linux.elf/upx-3.91
|
||||||
@@ -184,14 +184,14 @@ d8227a8a88c083760889acaf259e7da59eab75a23e341289bc8e3c60563ae344 *powerpc-linux.
|
|||||||
e4b58ed65025b765953af02e80be9a171c49b6c707c835949b1c888fdbe8bba0 *powerpc64le-linux.elf/upx-3.95
|
e4b58ed65025b765953af02e80be9a171c49b6c707c835949b1c888fdbe8bba0 *powerpc64le-linux.elf/upx-3.95
|
||||||
"
|
"
|
||||||
expected_sha256sums__t170_compress_all_methods_no_lzma_5_no_filter="\
|
expected_sha256sums__t170_compress_all_methods_no_lzma_5_no_filter="\
|
||||||
09cee61e2a4e94455d75a76711078719c3ca7fab77f047c4c85c9424e651956d *amd64-linux.elf/upx-3.91
|
52a39c30b60abb82c1ec2826297eb46abdc29b5dd55d7a7a41dd2fc1c573f60a *amd64-linux.elf/upx-3.91
|
||||||
0196cbaa36e5224b26729f1bb13990327878ffb0d2cd5784f8fbe715f12dcc1c *amd64-linux.elf/upx-3.95
|
f0c728c42e8775767e0d963e1eef7ca78711f3f6dd180df980a1faef926d7cac *amd64-linux.elf/upx-3.95
|
||||||
e07e9babdeb12fddeebbfa1b0293163cc5e63017d6f0933d02587c8da1e90a82 *amd64-win64.pe/upx-3.95.exe
|
e07e9babdeb12fddeebbfa1b0293163cc5e63017d6f0933d02587c8da1e90a82 *amd64-win64.pe/upx-3.95.exe
|
||||||
4b93e4dd9baea301479fa989d935b7b6b43b2b54464c5def0db1a00b6a15d719 *arm-linux.elf/upx-3.95
|
bc63dfcb36bf806ea8f84adbfeb27901aeb8d71d6ce853c54ffa19638b6ce4ea *arm-linux.elf/upx-3.95
|
||||||
8d1706ab02013b536c3a4cec20d40a96591ffa45fdcb464ccd3f038567006d79 *arm-wince.pe/upx-3.91.exe
|
8d1706ab02013b536c3a4cec20d40a96591ffa45fdcb464ccd3f038567006d79 *arm-wince.pe/upx-3.91.exe
|
||||||
be753ff9bc789d80f32cec35cc0f9c67b102d297f607b328779ba8d80da13593 *arm64-linux.elf/upx-3.95
|
14932490ff17e27bb5bedde576b8683892c4720f4a0058f373aab9f8894fda09 *arm64-linux.elf/upx-3.95
|
||||||
4c6d40107b5bce15a40aef514b57ac6dd644162998915aee412feca21582118a *armeb-linux.elf/upx-3.91
|
69cec23ba1a584d733ff98852c21a17d0f4ed7855249e7bf1cf5ef24dff2337c *armeb-linux.elf/upx-3.91
|
||||||
9d70d663c00378aa1c1c43d55327a895be33ea081bac13ce8a7ea6895b539679 *armeb-linux.elf/upx-3.95
|
f1bfc701fdc9c162d5b324d2b8623dfe2e5ec0f5c161b6ad75f9f7f9c517b964 *armeb-linux.elf/upx-3.95
|
||||||
dda2c348c43741a1bd65049a8e7b51be1ebf873d215370ec002185c85390c168 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
dda2c348c43741a1bd65049a8e7b51be1ebf873d215370ec002185c85390c168 *i386-dos32.djgpp2.coff/upx-3.91.exe
|
||||||
560392427ded22f2f3fea59ef10e55d65cf841001e67b1e4558ef13514baa602 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
560392427ded22f2f3fea59ef10e55d65cf841001e67b1e4558ef13514baa602 *i386-dos32.djgpp2.coff/upx-3.95.exe
|
||||||
f3f8feceebe8536633554b204df68c2e94e1d1a313fe7a576b7f5d404c916083 *i386-linux.elf/upx-3.91
|
f3f8feceebe8536633554b204df68c2e94e1d1a313fe7a576b7f5d404c916083 *i386-linux.elf/upx-3.91
|
||||||
|
|||||||
@@ -342,6 +342,7 @@ void show_help(int verbose) {
|
|||||||
fg = con_fg(f, fg);
|
fg = con_fg(f, fg);
|
||||||
con_fprintf(f,
|
con_fprintf(f,
|
||||||
" --preserve-build-id copy .gnu.note.build-id to compressed output\n"
|
" --preserve-build-id copy .gnu.note.build-id to compressed output\n"
|
||||||
|
" --catch-sigsegv debug errors in hardware or de-compressor\n"
|
||||||
"\n");
|
"\n");
|
||||||
}
|
}
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|||||||
@@ -742,6 +742,9 @@ static int do_option(int optc, const char *arg) {
|
|||||||
case 678:
|
case 678:
|
||||||
opt->o_unix.android_old = true;
|
opt->o_unix.android_old = true;
|
||||||
break;
|
break;
|
||||||
|
case 679:
|
||||||
|
opt->o_unix.catch_sigsegv = true;
|
||||||
|
break;
|
||||||
// ps1/exe
|
// ps1/exe
|
||||||
case 670:
|
case 670:
|
||||||
opt->ps1_exe.boot_only = true;
|
opt->ps1_exe.boot_only = true;
|
||||||
@@ -957,6 +960,7 @@ int main_get_options(int argc, char **argv) {
|
|||||||
{"android-shlib", 0, N, 676},
|
{"android-shlib", 0, N, 676},
|
||||||
{"force-pie", 0x90, N, 677},
|
{"force-pie", 0x90, N, 677},
|
||||||
{"android-old", 0, N, 678},
|
{"android-old", 0, N, 678},
|
||||||
|
{"catch-sigsegv", 0, N, 679},
|
||||||
// ps1/exe
|
// ps1/exe
|
||||||
{"boot-only", 0x90, N, 670},
|
{"boot-only", 0x90, N, 670},
|
||||||
{"no-align", 0x90, N, 671},
|
{"no-align", 0x90, N, 671},
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ struct Options final {
|
|||||||
bool android_shlib; // keep some ElfXX_Shdr for dlopen()
|
bool android_shlib; // keep some ElfXX_Shdr for dlopen()
|
||||||
bool android_old; // < Android_10 ==> no memfd_create, inconsistent __NR_ftruncate
|
bool android_old; // < Android_10 ==> no memfd_create, inconsistent __NR_ftruncate
|
||||||
bool force_pie; // choose DF_1_PIE instead of is_shlib
|
bool force_pie; // choose DF_1_PIE instead of is_shlib
|
||||||
|
bool catch_sigsegv; // to debug hardware or de-compressor
|
||||||
} o_unix;
|
} o_unix;
|
||||||
struct {
|
struct {
|
||||||
bool boot_only;
|
bool boot_only;
|
||||||
|
|||||||
+13
-2
@@ -1681,7 +1681,11 @@ PackLinuxElf32::buildLinuxLoader(
|
|||||||
|| this->e_machine==Elf32_Ehdr::EM_MIPS
|
|| this->e_machine==Elf32_Ehdr::EM_MIPS
|
||||||
) { // main program with ELF2 de-compressor
|
) { // main program with ELF2 de-compressor
|
||||||
addLoader("ELFMAINX");
|
addLoader("ELFMAINX");
|
||||||
|
if (this->e_machine==Elf32_Ehdr::EM_ARM) { // hardware is more problematic
|
||||||
|
if (opt->o_unix.catch_sigsegv && hasLoaderSection("ELFSIGSEGV"))
|
||||||
|
addLoader("ELFSIGSEGV");
|
||||||
|
addLoader("ELFMAINX2");
|
||||||
|
}
|
||||||
// Only if $ARCH-linux.elf-entry.S calls upx_mmap_and_fd instead of memfd_create
|
// Only if $ARCH-linux.elf-entry.S calls upx_mmap_and_fd instead of memfd_create
|
||||||
if (this->e_machine != Elf32_Ehdr::EM_PPC
|
if (this->e_machine != Elf32_Ehdr::EM_PPC
|
||||||
&& this->e_machine != Elf32_Ehdr::EM_MIPS)
|
&& this->e_machine != Elf32_Ehdr::EM_MIPS)
|
||||||
@@ -1871,7 +1875,14 @@ PackLinuxElf64::buildLinuxLoader(
|
|||||||
|| this->e_machine==Elf64_Ehdr::EM_AARCH64
|
|| this->e_machine==Elf64_Ehdr::EM_AARCH64
|
||||||
|| this->e_machine==Elf64_Ehdr::EM_PPC64
|
|| this->e_machine==Elf64_Ehdr::EM_PPC64
|
||||||
) { // main program with ELF2 de-compressor
|
) { // main program with ELF2 de-compressor
|
||||||
addLoader("ELFMAINX,ELFMAINZ,FOLDEXEC,IDENTSTR");
|
addLoader("ELFMAINX");
|
||||||
|
// NYI for PPC64 {
|
||||||
|
if (opt->o_unix.catch_sigsegv && hasLoaderSection("ELFSIGSEGV"))
|
||||||
|
addLoader("ELFSIGSEGV");
|
||||||
|
if (this->e_machine!=Elf64_Ehdr::EM_PPC64)
|
||||||
|
addLoader("ELFMAINX2");
|
||||||
|
// } end NYI for PPC64
|
||||||
|
addLoader("ELFMAINZ,FOLDEXEC,IDENTSTR");
|
||||||
if (this->e_machine==Elf64_Ehdr::EM_PPC64
|
if (this->e_machine==Elf64_Ehdr::EM_PPC64
|
||||||
&& ehdri.e_ident[Elf64_Ehdr::EI_DATA]==Elf64_Ehdr::ELFDATA2MSB) {
|
&& ehdri.e_ident[Elf64_Ehdr::EI_DATA]==Elf64_Ehdr::ELFDATA2MSB) {
|
||||||
addLoader("ELFMAINZe");
|
addLoader("ELFMAINZe");
|
||||||
|
|||||||
@@ -423,8 +423,6 @@ tc.amd64-linux.elf.gcc = amd64-linux-gcc-3.4.4 -fPIC -m64 -nostdinc -MMD -MT $@
|
|||||||
tc.amd64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
tc.amd64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||||
tc.amd64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
tc.amd64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||||
|
|
||||||
#amd64-linux.elf-entry.h amd64-linux.elf-fold.h: tc.amd64-linux.elf.gcc += -DTEST_SIGSEGV
|
|
||||||
|
|
||||||
amd64-linux.elf-entry.h: $(srcdir)/src/$$T.S
|
amd64-linux.elf-entry.h: $(srcdir)/src/$$T.S
|
||||||
@echo; echo TARGET=$@ PATH=$(PATH); echo
|
@echo; echo TARGET=$@ PATH=$(PATH); echo
|
||||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
||||||
@@ -552,7 +550,6 @@ amd64-win64.pe.h : tc_objdump_disasm_options = -M intel-mnemonic
|
|||||||
|
|
||||||
tc.amd64-win64.pe.gcc = amd64-linux-gcc-4.1.1 -m64 -nostdinc -DWINDOWS_BACK=1 -MMD -MT $@
|
tc.amd64-win64.pe.gcc = amd64-linux-gcc-4.1.1 -m64 -nostdinc -DWINDOWS_BACK=1 -MMD -MT $@
|
||||||
tc.amd64-win64.pe.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
tc.amd64-win64.pe.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||||
tc.amd64-win64.pe.gcc += -mno-red-zone
|
|
||||||
tc.amd64-win64.pe.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
tc.amd64-win64.pe.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||||
tc.amd64-win64.pe.objdump = multiarch-objdump-2.23.90
|
tc.amd64-win64.pe.objdump = multiarch-objdump-2.23.90
|
||||||
|
|
||||||
@@ -836,8 +833,6 @@ tc.arm64-linux.elf.gcc = arm64-linux-gcc-4.9.2 -nostdinc -DDAISY_CHAIN=1 -MMD -
|
|||||||
tc.arm64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
tc.arm64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||||
tc.arm64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
tc.arm64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||||
|
|
||||||
#arm64-linux.elf-entry.h arm64-linux.elf-fold.h: tc.arm64-linux.elf.gcc += -DTEST_SIGSEGV
|
|
||||||
|
|
||||||
tc.arm64-expand.gcc = $(tc.arm64-linux.elf.gcc)
|
tc.arm64-expand.gcc = $(tc.arm64-linux.elf.gcc)
|
||||||
tc.arm64-linux.elf-upxfd_linux.gcc = $(tc.arm64-linux.elf.gcc)
|
tc.arm64-linux.elf-upxfd_linux.gcc = $(tc.arm64-linux.elf.gcc)
|
||||||
|
|
||||||
|
|||||||
Generated
+182
-74
@@ -1,5 +1,5 @@
|
|||||||
/* amd64-linux.elf-entry.h
|
/* amd64-linux.elf-entry.h
|
||||||
created from amd64-linux.elf-entry.bin, 1141 (0x475) bytes
|
created from amd64-linux.elf-entry.bin, 2869 (0xb35) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -32,81 +32,189 @@
|
|||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
|
||||||
#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 1141
|
#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 2869
|
||||||
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xd3b74a90
|
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xf865154a
|
||||||
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0x52b418e2
|
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0xe81955ed
|
||||||
|
|
||||||
unsigned char stub_amd64_linux_elf_entry[1141] = {
|
unsigned char stub_amd64_linux_elf_entry[2869] = {
|
||||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0010 */ 1, 0, 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0010 */ 1, 0, 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 0, 0, 0, 0, 0, 0,
|
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
|
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
|
||||||
/* 0x0040 */ 243, 15, 30,250, 89, 84, 95, 81, 82, 49,192, 72,175,117,252, 72,
|
/* 0x0040 */ 243, 15, 30,250, 89, 84, 95, 81, 82, 76,141, 61, 0, 0, 0, 0,
|
||||||
/* 0x0050 */ 175,117,252, 87,186, 0, 16, 0, 0, 94, 72,173,133,192,116, 8,
|
/* 0x0050 */ 87, 41,210, 82, 72,141, 5, 45, 0, 0, 0, 80,104, 4, 0, 0,
|
||||||
/* 0x0060 */ 131,248, 6, 72,173,117,243,146, 88, 72,247,218, 82, 80,104,117,
|
/* 0x0060 */ 4, 72,141, 5, 43, 0, 0, 0, 80, 76,141, 61,219, 2, 0, 0,
|
||||||
/* 0x0070 */ 112, 88, 0, 84, 95,106, 16, 94,184, 63, 1, 0, 0, 15, 5,133,
|
/* 0x0070 */ 84, 94,106, 11, 95,106, 8, 65, 90,106, 13, 88, 15, 5, 72,131,
|
||||||
/* 0x0080 */ 192,121, 29,133,246,116, 4, 49,246,235,237, 72,141, 53, 28, 1,
|
/* 0x0080 */ 196, 32, 95,233,216, 2, 0, 0,243, 15, 30,250,184, 15, 0, 0,
|
||||||
/* 0x0090 */ 0, 0,173,146,173, 86,150, 95,106, 2, 88,232, 0, 1, 0, 0,
|
/* 0x0090 */ 0, 15, 5,243, 15, 30,250, 82,186, 26, 0, 0, 0, 72,141, 53,
|
||||||
/* 0x00a0 */ 73,137,196, 89, 72,141, 61,145,255,255,255,139, 15, 72, 41,207,
|
/* 0x00a0 */ 111, 0, 0, 0,106, 2, 95,106, 1, 88, 15, 5, 49,246, 72,141,
|
||||||
/* 0x00b0 */ 72,141, 53, 0, 0, 0, 0,173,147, 65,137,221,173,146,131,194,
|
/* 0x00b0 */ 61,120, 0, 0, 0,106, 2, 88, 15, 5, 73,137,196,187, 0, 16,
|
||||||
/* 0x00c0 */ 16, 82,106,255, 87, 72, 41,217, 81, 72, 1,251, 83, 84, 93, 72,
|
/* 0x00c0 */ 0, 0, 72, 41,220,137,218, 84, 94, 76,137,231, 49,192, 15, 5,
|
||||||
/* 0x00d0 */ 41,212, 72,131,228,192, 84, 95,173, 80,173,102,131,248, 2,116,
|
/* 0x00d0 */ 133,192,126, 14,137,194, 84, 94,106, 2, 95,106, 1, 88, 15, 5,
|
||||||
/* 0x00e0 */ 1,244, 88, 72, 1,240, 80, 85, 49,219, 49,201, 72,141, 21,204,
|
/* 0x00e0 */ 235,227, 76,137,231, 72, 1,220,106, 3, 88, 15, 5, 90,106, 57,
|
||||||
/* 0x00f0 */ 0, 0, 0,106,255, 93,252,168,164,255,210,114,251,141, 65, 1,
|
/* 0x00f0 */ 88,232, 0, 0, 0, 0,133,192, 15,132,141, 1, 0, 0,235,254,
|
||||||
/* 0x0100 */ 255,210, 17,192,255,210,115,248,131,232, 3,114, 12,193,224, 8,
|
/* 0x0100 */ 47,112,114,111, 99, 47,115,101,108,102, 47, 99,109,100,108,105,
|
||||||
/* 0x0110 */ 172,131,240,255,116, 47, 72, 99,232,141, 65, 1,255,210, 17,201,
|
/* 0x0110 */ 110,101, 0, 10, 10, 83, 73, 71, 83, 69, 71, 86, 32, 97,100,100,
|
||||||
/* 0x0120 */ 255,210, 17,201,117, 13,137,193,131,192, 2,255,210, 17,201,255,
|
/* 0x0120 */ 114,101,115,115, 32,115,112, 97, 99,101, 58, 10, 0, 47,112,114,
|
||||||
/* 0x0130 */ 210,115,248,129,253, 0,243,255,255, 17,193, 86, 72,141, 52, 47,
|
/* 0x0130 */ 111, 99, 47,115,101,108,102, 47,109, 97,112,115, 0, 45,113, 0,
|
||||||
/* 0x0140 */ 243,164, 94,235,180, 93, 89, 72, 57,206,116, 1,244, 72,139, 69,
|
/* 0x0140 */ 47,117,115,114, 47, 98,105,110, 47,103,100, 98, 0,115,101,116,
|
||||||
/* 0x0150 */ 48, 72,137, 4, 36, 72,139, 85, 32, 72,131,234, 16, 84, 94, 76,
|
/* 0x0150 */ 32,112,114,111,109,112,116, 10,105,110,102,111, 32,105,110,102,
|
||||||
/* 0x0160 */ 137,231, 82,106, 1, 88,232, 53, 0, 0, 0, 72, 1,198, 41,194,
|
/* 0x0160 */ 101,114,105,111,114,115, 10,112,114,105,110,116, 32, 34,114, 56,
|
||||||
/* 0x0170 */ 117,241, 94, 85, 92, 77, 49,201, 77,137,224,106, 1, 65, 90,106,
|
/* 0x0170 */ 32, 45, 32,114, 49, 53, 34, 10,120, 47, 56,120,103, 32, 36,114,
|
||||||
/* 0x0180 */ 5, 90, 41,255,106, 9, 88,232, 20, 0, 0, 0, 80, 72,137, 69,
|
/* 0x0180 */ 100,120, 32, 43, 32, 53, 42, 56, 10,112,114,105,110,116, 32, 34,
|
||||||
/* 0x0190 */ 24, 65, 80, 95,106, 3, 88, 15, 5, 88, 72,131,192, 8,255,224,
|
/* 0x0190 */ 114,100,105, 44, 32,114,115,105, 44, 32,114, 98,112, 44, 32,114,
|
||||||
/* 0x01a0 */ 80, 15, 5, 89, 72, 61, 0,240,255,255,114, 1,244,195,192, 1,
|
/* 0x01a0 */ 98,120, 34, 10,120, 47, 52,120,103, 10,112,114,105,110,116, 32,
|
||||||
/* 0x01b0 */ 0, 0, 2, 0, 65, 0, 47,100,101,118, 47,115,104,109, 0,243,
|
/* 0x01b0 */ 34,114,100,120, 44, 32,114, 97,120, 44, 32,114, 99,120, 44, 32,
|
||||||
/* 0x01c0 */ 15, 30,250, 1,219,116, 2,243,195,139, 30, 72,131,238,252, 17,
|
/* 0x01c0 */ 114,115,112, 34, 10,120, 47, 52,120,103, 10,112,114,105,110,116,
|
||||||
/* 0x01d0 */ 219,243,195, 0, 0, 0, 0, 0,102,105,108,101, 32,102,111,114,
|
/* 0x01d0 */ 32, 34,114,105,112, 44, 32,101,102,108, 34, 10,120, 47, 50,120,
|
||||||
/* 0x01e0 */ 109, 97,116, 32,101,108,102, 54, 52, 45,120, 56, 54, 45, 54, 52,
|
/* 0x01e0 */ 103, 10,115,101,116, 32, 36,112, 99, 32, 61, 32, 42, 40,108,111,
|
||||||
/* 0x01f0 */ 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32,
|
/* 0x01f0 */ 110,103, 32, 42, 41, 40, 36,114,100,120, 32, 43, 32, 49, 54, 56,
|
||||||
/* 0x0200 */ 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,
|
/* 0x0200 */ 41, 10,112,114,105,110,116, 32, 34,102, 97,117,108,116,105,110,
|
||||||
/* 0x0210 */ 122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32,
|
/* 0x0210 */ 103, 32,105,110,115,116,114, 34, 10,120, 47,105, 32, 36,112, 99,
|
||||||
/* 0x0220 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32,
|
/* 0x0220 */ 10,112,114,105,110,116, 32, 34,102, 97,117,108,116, 32, 99,111,
|
||||||
/* 0x0230 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101,
|
/* 0x0230 */ 110,116,101,120,116, 34, 10,120, 47, 49, 54,105, 32, 36,112, 99,
|
||||||
/* 0x0240 */ 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,
|
/* 0x0240 */ 32, 45, 32, 48,120, 50, 48, 10,112,114,105,110,116, 32, 34,117,
|
||||||
/* 0x0250 */ 115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32,
|
/* 0x0250 */ 115,101,114, 32,115,116, 97, 99,107, 34, 10,120, 47, 54, 52,120,
|
||||||
/* 0x0260 */ 32, 32, 32, 32, 48, 49, 57, 51, 32, 32, 48, 32, 32, 48, 32, 32,
|
/* 0x0260 */ 103, 32, 42, 40,108,111,110,103, 32, 42, 41, 40, 36,114,100,120,
|
||||||
/* 0x0270 */ 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
|
/* 0x0270 */ 32, 43, 32, 53, 42, 56, 32, 43, 32, 49, 53, 42, 56, 41, 10,107,
|
||||||
/* 0x0280 */ 78, 84, 83, 10, 32, 32, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90,
|
/* 0x0280 */ 105,108,108, 10,113,117,105,116, 32, 49, 0, 72,129,236, 0, 16,
|
||||||
/* 0x0290 */ 32, 32, 32, 32, 32, 32, 48, 52, 32, 32, 48, 32, 32, 48, 32, 32,
|
/* 0x0290 */ 0, 0, 72,141, 61,103,254,255,255,106, 0, 94,106, 2, 88,232,
|
||||||
/* 0x02a0 */ 48, 49,100, 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84,
|
/* 0x02a0 */ 0, 0, 0, 0, 80, 95, 84, 94,104, 0, 16, 0, 0, 90,106, 0,
|
||||||
/* 0x02b0 */ 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76,
|
/* 0x02b0 */ 88,232, 0, 0, 0, 0,106, 3, 88,232, 0, 0, 0, 0,106,110,
|
||||||
/* 0x02c0 */ 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x02c0 */ 88, 15, 5, 80, 94, 49,192, 80, 80, 84, 95,232, 89, 0, 0, 0,
|
||||||
/* 0x02d0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77,
|
/* 0x02d0 */ 84, 94,106, 0, 86, 72,131,198, 16, 86, 72,141, 5, 92,254,255,
|
||||||
/* 0x02e0 */ 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
|
/* 0x02e0 */ 255, 80, 72,131,192, 3, 80, 49,255,106, 3, 88, 15, 5, 80, 84,
|
||||||
/* 0x02f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x02f0 */ 95,106, 22, 88,232, 0, 0, 0, 0, 95, 72,193,239, 32,104, 62,
|
||||||
/* 0x0300 */ 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78,
|
/* 0x0300 */ 1, 0, 0, 90, 72,141, 53, 66,254,255,255,106, 1, 88,232, 0,
|
||||||
/* 0x0310 */ 88, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48,
|
/* 0x0310 */ 0, 0, 0,106, 3, 88, 15, 5,106, 0, 90, 84, 94, 72,139, 62,
|
||||||
/* 0x0320 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
|
/* 0x0320 */ 106, 59, 88,232, 0, 0, 0, 0,244,106, 10, 89,137,240,232, 4,
|
||||||
/* 0x0330 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48,
|
/* 0x0330 */ 0, 0, 0,198, 7, 0,195, 49,210,247,241, 82,133,192,116, 5,
|
||||||
/* 0x0340 */ 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0340 */ 232,242,255,255,255, 88,131,192, 48,170,195,243, 15, 30,250,106,
|
||||||
/* 0x0350 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x0350 */ 8, 65, 90, 49,210, 49,246,106, 11, 95,106, 13, 88, 15, 5,195,
|
||||||
/* 0x0360 */ 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, 66, 73, 78, 70, 79,
|
/* 0x0360 */ 49,192, 72,175,117,252, 72,175,117,252, 87,186, 0, 16, 0, 0,
|
||||||
/* 0x0370 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
|
/* 0x0370 */ 94, 72,173,133,192,116, 8,131,248, 6, 72,173,117,243,146, 88,
|
||||||
/* 0x0380 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73,
|
/* 0x0380 */ 72,247,218, 82, 80,104,117,112, 88, 0, 84, 95,106, 16, 94,184,
|
||||||
/* 0x0390 */ 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
|
/* 0x0390 */ 63, 1, 0, 0, 15, 5,133,192,121, 29,133,246,116, 4, 49,246,
|
||||||
/* 0x03a0 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
|
/* 0x03a0 */ 235,237, 72,141, 53, 38, 1, 0, 0,173,146,173, 86,150, 95,106,
|
||||||
/* 0x03b0 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
|
/* 0x03b0 */ 2, 88,232, 10, 1, 0, 0, 73,137,196, 89, 72,141, 61, 0, 0,
|
||||||
/* 0x03c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55, 51, 32, 82,
|
/* 0x03c0 */ 0, 0,139, 15, 72, 41,207, 72,141, 53, 0, 0, 0, 0,173,147,
|
||||||
/* 0x03d0 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
|
/* 0x03d0 */ 65,137,221,173,146,131,194, 16, 82,106,255, 87, 72, 41,217, 81,
|
||||||
/* 0x03e0 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,102,102,102,
|
/* 0x03e0 */ 72, 1,251, 83, 84, 93, 72, 41,212, 72,131,228,192, 84, 95,173,
|
||||||
/* 0x03f0 */ 102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69,
|
/* 0x03f0 */ 80,173,102,131,248, 2,116, 1,244, 88, 72, 1,240, 80, 85, 49,
|
||||||
/* 0x0400 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
|
/* 0x0400 */ 219, 49,201, 72,141, 21,214, 0, 0, 0,106,255, 93,252,168,164,
|
||||||
/* 0x0410 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58,
|
/* 0x0410 */ 255,210,114,251,141, 65, 1,255,210, 17,192,255,210,115,248,131,
|
||||||
/* 0x0420 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x0420 */ 232, 3,114, 12,193,224, 8,172,131,240,255,116, 47, 72, 99,232,
|
||||||
/* 0x0430 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x0430 */ 141, 65, 1,255,210, 17,201,255,210, 17,201,117, 13,137,193,131,
|
||||||
/* 0x0440 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
|
/* 0x0440 */ 192, 2,255,210, 17,201,255,210,115,248,129,253, 0,243,255,255,
|
||||||
/* 0x0450 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 88, 56, 54,
|
/* 0x0450 */ 17,193, 86, 72,141, 52, 47,243,164, 94,235,180, 93, 89, 72, 57,
|
||||||
/* 0x0460 */ 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 79, 95, 66,
|
/* 0x0460 */ 206,116, 1,244, 72,139, 69, 48, 72,137, 4, 36, 76,137,124, 36,
|
||||||
/* 0x0470 */ 73, 78, 70, 79, 10
|
/* 0x0470 */ 8, 72,139, 85, 32, 72,131,234, 16, 84, 94, 76,137,231, 82,106,
|
||||||
|
/* 0x0480 */ 1, 88,232, 58, 0, 0, 0, 72, 1,198, 41,194,117,241, 94, 85,
|
||||||
|
/* 0x0490 */ 92, 77, 49,201, 77,137,224,106, 1, 65, 90,106, 5, 90, 41,255,
|
||||||
|
/* 0x04a0 */ 106, 9, 88,232, 25, 0, 0, 0, 80, 72,137, 69, 24, 65, 80, 95,
|
||||||
|
/* 0x04b0 */ 106, 3, 88, 15, 5, 88, 72,131,192, 16,255,224,243, 15, 30,250,
|
||||||
|
/* 0x04c0 */ 195, 80, 15, 5, 89, 72, 61, 0,240,255,255,114, 1,244,195,192,
|
||||||
|
/* 0x04d0 */ 1, 0, 0, 2, 0, 65, 0, 47,100,101,118, 47,115,104,109, 0,
|
||||||
|
/* 0x04e0 */ 243, 15, 30,250, 1,219,116, 2,243,195,139, 30, 72,131,238,252,
|
||||||
|
/* 0x04f0 */ 17,219,243,195, 0, 0, 0, 0,102,105,108,101, 32,102,111,114,
|
||||||
|
/* 0x0500 */ 109, 97,116, 32,101,108,102, 54, 52, 45,120, 56, 54, 45, 54, 52,
|
||||||
|
/* 0x0510 */ 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32,
|
||||||
|
/* 0x0520 */ 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,
|
||||||
|
/* 0x0530 */ 122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0540 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32,
|
||||||
|
/* 0x0550 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101,
|
||||||
|
/* 0x0560 */ 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,
|
||||||
|
/* 0x0570 */ 115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32,
|
||||||
|
/* 0x0580 */ 32, 32, 32, 32, 48, 49, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48,
|
||||||
|
/* 0x0590 */ 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
|
||||||
|
/* 0x05a0 */ 84, 83, 10, 32, 32, 49, 32, 69, 76, 70, 83, 73, 71, 83, 69, 71,
|
||||||
|
/* 0x05b0 */ 86, 32, 32, 32, 32, 48, 51, 49, 48, 32, 32, 48, 32, 32, 48, 32,
|
||||||
|
/* 0x05c0 */ 32, 48, 53, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84,
|
||||||
|
/* 0x05d0 */ 69, 78, 84, 83, 10, 32, 32, 50, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||||
|
/* 0x05e0 */ 88, 50, 32, 32, 32, 32, 32, 48, 49, 57, 52, 32, 32, 48, 32, 32,
|
||||||
|
/* 0x05f0 */ 48, 32, 32, 48, 51, 54, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67,
|
||||||
|
/* 0x0600 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 51, 32, 69, 76, 70, 77,
|
||||||
|
/* 0x0610 */ 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 52, 32, 32, 48, 32,
|
||||||
|
/* 0x0620 */ 32, 48, 32, 32, 48, 52,102, 52, 32, 32, 50, 42, 42, 50, 32, 32,
|
||||||
|
/* 0x0630 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32,
|
||||||
|
/* 0x0640 */ 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0650 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
|
||||||
|
/* 0x0660 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77, 65,
|
||||||
|
/* 0x0670 */ 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0680 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70,
|
||||||
|
/* 0x0690 */ 77, 65, 73, 78, 88, 50, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||||
|
/* 0x06a0 */ 88, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x06b0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77,
|
||||||
|
/* 0x06c0 */ 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
|
||||||
|
/* 0x06d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x06e0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 83, 73, 71, 83,
|
||||||
|
/* 0x06f0 */ 69, 71, 86, 32, 48, 32, 69, 76, 70, 83, 73, 71, 83, 69, 71, 86,
|
||||||
|
/* 0x0700 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0710 */ 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73,
|
||||||
|
/* 0x0720 */ 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48,
|
||||||
|
/* 0x0730 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32,
|
||||||
|
/* 0x0740 */ 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, 66,
|
||||||
|
/* 0x0750 */ 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
|
||||||
|
/* 0x0760 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76,
|
||||||
|
/* 0x0770 */ 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
|
||||||
|
/* 0x0780 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32,
|
||||||
|
/* 0x0790 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85,
|
||||||
|
/* 0x07a0 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x07b0 */ 48, 99, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50,
|
||||||
|
/* 0x07c0 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,
|
||||||
|
/* 0x07d0 */ 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,
|
||||||
|
/* 0x07e0 */ 56, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69,
|
||||||
|
/* 0x07f0 */ 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 83, 73,
|
||||||
|
/* 0x0800 */ 71, 83, 69, 71, 86, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
|
||||||
|
/* 0x0810 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
|
||||||
|
/* 0x0820 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
|
||||||
|
/* 0x0830 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 97,
|
||||||
|
/* 0x0840 */ 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x0850 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x0860 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x0870 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 53,
|
||||||
|
/* 0x0880 */ 48, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x0890 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x08a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x08b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 54,
|
||||||
|
/* 0x08c0 */ 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x08d0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x08e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x08f0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 54,
|
||||||
|
/* 0x0900 */ 97, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x0910 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x0920 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x0930 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 97,
|
||||||
|
/* 0x0940 */ 53, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x0950 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x0960 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x0970 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 98,
|
||||||
|
/* 0x0980 */ 102, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x0990 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x09a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x09b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50,100,
|
||||||
|
/* 0x09c0 */ 52, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||||
|
/* 0x09d0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||||
|
/* 0x09e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||||
|
/* 0x09f0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
|
||||||
|
/* 0x0a00 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73,
|
||||||
|
/* 0x0a10 */ 78, 88, 50, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32,
|
||||||
|
/* 0x0a20 */ 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0a30 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48,
|
||||||
|
/* 0x0a40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53,101, 32,
|
||||||
|
/* 0x0a50 */ 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||||
|
/* 0x0a60 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 43, 48,120,102,102,102,
|
||||||
|
/* 0x0a70 */ 102,102,102,102,102,102,102,102,102,102,102,102, 56, 10, 48, 48,
|
||||||
|
/* 0x0a80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, 97, 32, 82,
|
||||||
|
/* 0x0a90 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
|
||||||
|
/* 0x0aa0 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,102,102,102,
|
||||||
|
/* 0x0ab0 */ 102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69,
|
||||||
|
/* 0x0ac0 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
|
||||||
|
/* 0x0ad0 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58,
|
||||||
|
/* 0x0ae0 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0af0 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0b00 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0b10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 88, 56, 54,
|
||||||
|
/* 0x0b20 */ 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 79, 95, 66,
|
||||||
|
/* 0x0b30 */ 73, 78, 70, 79, 10
|
||||||
};
|
};
|
||||||
|
|||||||
Generated
+1314
-1313
File diff suppressed because it is too large
Load Diff
Generated
+861
-834
File diff suppressed because it is too large
Load Diff
Generated
+866
-838
File diff suppressed because it is too large
Load Diff
Generated
+188
-106
@@ -1,5 +1,5 @@
|
|||||||
/* arm64-linux.elf-entry.h
|
/* arm64-linux.elf-entry.h
|
||||||
created from arm64-linux.elf-entry.bin, 1656 (0x678) bytes
|
created from arm64-linux.elf-entry.bin, 2971 (0xb9b) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -32,113 +32,195 @@
|
|||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
|
||||||
#define STUB_ARM64_LINUX_ELF_ENTRY_SIZE 1656
|
#define STUB_ARM64_LINUX_ELF_ENTRY_SIZE 2971
|
||||||
#define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0xebefbc2c
|
#define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0x0d9b4202
|
||||||
#define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x6e19662b
|
#define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x7209b84d
|
||||||
|
|
||||||
unsigned char stub_arm64_linux_elf_entry[1656] = {
|
unsigned char stub_arm64_linux_elf_entry[2971] = {
|
||||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0010 */ 1, 0,183, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
/* 0x0010 */ 1, 0,183, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 64, 4, 0, 0, 0, 0, 0, 0,
|
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 0,
|
||||||
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
|
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
|
||||||
/* 0x0040 */ 0, 0, 0, 0,224, 7,191,169,211,255,255, 24,224, 99, 0,145,
|
/* 0x0040 */ 0, 0, 0, 0,224, 7,191,169,211,255,255, 24, 18, 0, 0, 16,
|
||||||
/* 0x0050 */ 76, 0, 0,148, 75, 0, 0,148,246, 3, 0,170,255,131, 0,209,
|
/* 0x0050 */ 32, 20, 0, 16,129, 0,128,210,224, 7,188,169,255, 15, 0,249,
|
||||||
/* 0x0060 */ 1, 8,193,168, 63, 24, 0,113, 96, 0, 0, 84,161,255,255, 53,
|
/* 0x0060 */ 255, 19, 0,249, 3, 1,128,210,226, 3, 31,170,225, 3, 0,145,
|
||||||
/* 0x0070 */ 34, 0,160,210,250, 3, 2,203,250, 3, 0,249, 0, 0, 0,148,
|
/* 0x0070 */ 96, 1,128, 82,200, 16,128, 82, 1, 0, 0,212,255, 3, 1,145,
|
||||||
/* 0x0080 */ 244, 3, 30,170, 1, 2,128, 82, 0, 0, 0, 16,232, 34,128, 82,
|
/* 0x0080 */ 114, 25, 0, 16,209, 0, 0, 20, 47,112,114,111, 99, 47,115,101,
|
||||||
/* 0x0090 */ 1, 0, 0,212, 0, 2,248, 54, 97, 0, 0, 52,225, 3, 31, 42,
|
/* 0x0090 */ 108,102, 47, 99,109,100,108,105,110,101, 0, 10, 10, 83, 73, 71,
|
||||||
/* 0x00a0 */ 250,255,255, 23, 6, 0, 0,148,192, 1, 0, 0, 2, 64, 64, 0,
|
/* 0x00a0 */ 83, 69, 71, 86, 32, 97,100,100,114,101,115,115, 32,115,112, 97,
|
||||||
/* 0x00b0 */ 47,100,101,118, 47,115,104,109, 0, 0, 0, 0,195, 71, 64,184,
|
/* 0x00b0 */ 99,101, 58, 10, 0, 47,112,114,111, 99, 47,115,101,108,102, 47,
|
||||||
/* 0x00c0 */ 194, 71, 64,184,225, 3, 30,170, 96, 12,128, 18, 8, 7,128, 82,
|
/* 0x00c0 */ 109, 97,112,115, 0, 45,113, 0, 47,117,115,114, 47, 98,105,110,
|
||||||
/* 0x00d0 */ 1, 0, 0,212,251, 3, 0, 42,128, 6, 64,185,253, 3, 0,145,
|
/* 0x00d0 */ 47,103,100, 98, 0,115,101,116, 32,112,114,111,109,112,116, 10,
|
||||||
/* 0x00e0 */ 160, 3, 0,203, 0,236,124,146, 31, 0, 0,145,226, 3, 0,170,
|
/* 0x00e0 */ 105,110,102,111, 32,105,110,102,101,114,105,111,114,115, 10,112,
|
||||||
/* 0x00f0 */ 225, 15, 31,248,227, 3, 0,145,128, 66, 0,145,129, 10, 64,185,
|
/* 0x00f0 */ 114,105,110,116, 32, 34,120, 48, 45,120, 55, 34, 10,120, 47, 56,
|
||||||
/* 0x0100 */ 132, 50, 64, 57, 34, 0, 0,148,232, 7, 65,248,250, 3, 0,249,
|
/* 0x0100 */ 120,103, 32, 36,115,112, 32, 43, 32, 48,120, 49, 51, 56, 10,112,
|
||||||
/* 0x0110 */ 130, 6, 64,185,225, 3, 0,145,224, 3, 27, 42, 8, 8,128, 82,
|
/* 0x0110 */ 114,105,110,116, 32, 34,120, 56, 45,120, 49, 53, 34, 10,120, 47,
|
||||||
/* 0x0120 */ 1, 0, 0,212,191, 3, 0,145, 5, 0,128,210,228, 3, 27, 42,
|
/* 0x0120 */ 56,120,103, 10,112,114,105,110,116, 32, 34,120, 49, 54, 45,120,
|
||||||
/* 0x0130 */ 35, 0,128, 82,162, 0,128, 82,129, 6, 64,185,225, 15, 0,249,
|
/* 0x0130 */ 50, 51, 34, 10,120, 47, 56,120,103, 10,112,114,105,110,116, 32,
|
||||||
/* 0x0140 */ 0, 0,128,210,200, 27,128, 82, 1, 0, 0,212,224, 11, 0,249,
|
/* 0x0140 */ 34,120, 50, 52, 45,120, 51, 48, 34, 10,120, 47, 55,120,103, 10,
|
||||||
/* 0x0150 */ 252, 3, 0,170,224, 3, 27, 42, 40, 7,128, 82, 1, 0, 0,212,
|
/* 0x0150 */ 115,101,116, 32, 36,112, 99, 32, 61, 32, 42, 40,108,111,110,103,
|
||||||
/* 0x0160 */ 253, 11, 64,185,129, 2, 64,185,158, 83, 0,145,189, 3, 1, 75,
|
/* 0x0160 */ 32, 42, 41, 40, 36,115,112, 32, 43, 32, 48,120, 50, 51, 56, 41,
|
||||||
/* 0x0170 */ 253, 7, 0,249, 33,120, 30, 18, 60, 3, 1,139,192, 3, 31,214,
|
/* 0x0170 */ 10,112,114,105,110,116, 32, 34,102, 97,117,108,116,105,110,103,
|
||||||
/* 0x0180 */ 1,132, 64,248,225,255,255,181,192, 3, 95,214, 1, 64, 33,139,
|
/* 0x0180 */ 32,105,110,115,116,114, 34, 10,120, 47,105, 32, 36,112, 99, 10,
|
||||||
/* 0x0190 */ 225, 11,190,169,227,123, 1,169, 5, 0,128, 18, 4, 0,176, 82,
|
/* 0x0190 */ 112,114,105,110,116, 32, 34,102, 97,117,108,116, 32, 99,111,110,
|
||||||
/* 0x01a0 */ 26, 0, 0, 20,228,123, 65,169,225, 15,194,168, 0, 0, 1,203,
|
/* 0x01a0 */ 116,101,120,116, 34, 10,120, 47, 49, 53,105, 32, 36,112, 99, 32,
|
||||||
/* 0x01b0 */ 66, 0, 3,203,130, 0, 0,185,229, 3, 0,170,224, 3, 3,170,
|
/* 0x01b0 */ 45, 32, 55, 42, 52, 10,115,101,116, 32, 36,115,112, 32, 61, 32,
|
||||||
/* 0x01c0 */ 97, 0, 2,139,224, 3, 5,170,192, 3, 95,214,132, 0, 4, 43,
|
/* 0x01c0 */ 42, 40,108,111,110,103, 32, 42, 41, 40, 36,115,112, 32, 43, 32,
|
||||||
/* 0x01d0 */ 68, 0, 0, 52,192, 3, 95,214, 4, 68, 64,184,132, 0, 4, 58,
|
/* 0x01d0 */ 48,120, 50, 51, 48, 41, 10,112,114,105,110,116, 32, 34,117,115,
|
||||||
/* 0x01e0 */ 192, 3, 95,214, 33, 0,128, 82,240, 3, 30,170,248,255,255,151,
|
/* 0x01e0 */ 101,114, 32,115,116, 97, 99,107, 34, 10,120, 47, 54, 52,120,103,
|
||||||
/* 0x01f0 */ 33, 0, 1, 58,246,255,255,151,163,255,255, 84, 0, 2, 31,214,
|
/* 0x01f0 */ 32, 36,115,112, 10,107,105,108,108, 10,113,117,105,116, 32, 49,
|
||||||
/* 0x0200 */ 3, 20, 64, 56, 67, 20, 0, 56,241,255,255,151,162,255,255, 84,
|
/* 0x0200 */ 0, 0, 0, 0, 0, 0,128, 82, 40, 7,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0210 */ 245,255,255,151, 35, 12, 0,113, 1, 0,128, 82,163, 0, 0, 84,
|
/* 0x0210 */ 255,127,191,169, 1, 0,128, 82,224, 3, 0,145,104, 7,128, 82,
|
||||||
/* 0x0220 */ 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42,197,251,255, 52,
|
/* 0x0220 */ 1, 0, 0,212,240, 19, 0,145, 19, 2, 64,185,255, 67, 0,145,
|
||||||
/* 0x0230 */ 231,255,255,151, 33, 0, 1, 58,229,255,255,151, 33, 0, 1, 58,
|
/* 0x0230 */ 130, 37,128, 82, 1,245,255, 48,224, 3, 19, 42, 8, 8,128, 82,
|
||||||
/* 0x0240 */ 97, 0, 0, 84,232,255,255,151, 33, 8, 0, 17,191, 0, 52, 49,
|
/* 0x0240 */ 1, 0, 0,212,224, 3, 19, 42, 40, 7,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0250 */ 33, 36,129, 26, 67,200,101, 56, 33, 4, 0,113, 67, 20, 0, 56,
|
/* 0x0250 */ 255, 7, 64,209, 2, 0,128, 82,129,241,255, 16, 0, 0,128,146,
|
||||||
/* 0x0260 */ 162,255,255, 84,233,255,255, 23,117,112,120, 0,217, 19, 1,209,
|
/* 0x0260 */ 8, 7,128, 82, 1, 0, 0,212,243, 3, 0, 42,225, 3, 0,145,
|
||||||
/* 0x0270 */ 32, 3, 64,185, 57, 67, 32,203,224, 7, 0,249,192, 3, 63,214,
|
/* 0x0270 */ 2, 0,130, 82,232, 7,128, 82, 1, 0, 0,212,224, 3, 19, 42,
|
||||||
/* 0x0280 */ 0, 0, 0, 0,102,105,108,101, 32,102,111,114,109, 97,116, 32,
|
/* 0x0280 */ 40, 7,128, 82, 1, 0, 0,212,168, 21,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0290 */ 101,108,102, 54, 52, 45,108,105,116,116,108,101, 97, 97,114, 99,
|
/* 0x0290 */ 255,127,191,169,225, 3, 0, 42,224, 3, 0,145, 49, 0, 0,148,
|
||||||
/* 0x02a0 */ 104, 54, 52, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,
|
/* 0x02a0 */ 227, 3, 0,145,226, 67, 0,145,225,240,255, 48,224,240,255, 16,
|
||||||
/* 0x02b0 */ 100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x02b0 */ 224, 7,189,169,226, 15, 1,169,255, 19, 0,249, 2, 0,128,210,
|
||||||
/* 0x02c0 */ 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32,
|
/* 0x02c0 */ 225, 3, 0,145,168, 27,128, 82, 1, 0, 0,212, 0, 0, 0, 20,
|
||||||
/* 0x02d0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65,
|
/* 0x02d0 */ 31, 32, 3,213,225, 11, 63,169, 66, 3,128,210,225,237,255,112,
|
||||||
/* 0x02e0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,
|
/* 0x02e0 */ 64, 0,128, 82, 8, 8,128, 82, 1, 0, 0,212, 2, 0,128, 82,
|
||||||
/* 0x02f0 */ 105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,
|
/* 0x02f0 */ 33,238,255, 48, 0, 0,128, 18, 8, 7,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0300 */ 108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78,
|
/* 0x0300 */ 243, 3, 0, 42,255, 7, 64,209, 2, 0,130,210,225, 3, 0,145,
|
||||||
/* 0x0310 */ 88, 32, 32, 32, 32, 32, 32, 48, 50, 50, 56, 32, 32, 48, 32, 32,
|
/* 0x0310 */ 224, 3, 19, 42,232, 7,128, 82, 1, 0, 0,212,224, 0, 0, 52,
|
||||||
/* 0x0320 */ 48, 32, 32, 48, 52, 48, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79,
|
/* 0x0320 */ 226, 3, 0,170,225, 3, 0,145, 64, 0,128, 82, 8, 8,128, 82,
|
||||||
/* 0x0330 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 69, 76, 70, 77, 65,
|
/* 0x0330 */ 1, 0, 0,212,245,255,255, 23,255, 7, 64,145,224, 3, 16,170,
|
||||||
/* 0x0340 */ 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 32, 32, 48, 32, 32, 48,
|
/* 0x0340 */ 40, 7,128, 82, 1, 0, 0,212, 0, 0,128,210, 1, 0,128,210,
|
||||||
/* 0x0350 */ 32, 32, 48, 50, 54, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
|
/* 0x0350 */ 136, 27,128, 82, 1, 0, 0,212, 96,245,255,180, 0, 0, 0, 20,
|
||||||
/* 0x0360 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32, 69, 76, 70, 77, 65,
|
/* 0x0360 */ 254,127,191,169, 4, 0, 0,148,254, 7,193,168, 1, 0, 0, 57,
|
||||||
/* 0x0370 */ 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 49, 99, 32, 32, 48, 32,
|
/* 0x0370 */ 192, 3, 95,214,162,153,153, 82,130,153,185,114, 34,124,162,155,
|
||||||
/* 0x0380 */ 32, 48, 32, 32, 48, 50, 54, 56, 32, 32, 50, 42, 42, 50, 32, 32,
|
/* 0x0380 */ 67,252, 99,211, 98, 8, 3, 11, 33, 4, 2, 75,254, 7,191,169,
|
||||||
/* 0x0390 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32,
|
/* 0x0390 */ 99, 0, 0,180,225, 3, 3, 42,247,255,255,151,254, 7,193,168,
|
||||||
/* 0x03a0 */ 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x03a0 */ 33,192, 0, 17, 1, 20, 0, 56,192, 3, 95,214, 3, 1,128,210,
|
||||||
/* 0x03b0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
|
/* 0x03b0 */ 226, 3, 31,170,225, 3, 31,170, 96, 1,128, 82,200, 16,128, 82,
|
||||||
/* 0x03c0 */ 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65,
|
/* 0x03c0 */ 1, 0, 0,212,192, 3, 95,214,224, 99, 0,145, 82, 0, 0,148,
|
||||||
/* 0x03d0 */ 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x03d0 */ 81, 0, 0,148,246, 3, 0,170,255,131, 0,209, 1, 8,193,168,
|
||||||
/* 0x03e0 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70,
|
/* 0x03e0 */ 63, 24, 0,113, 96, 0, 0, 84,161,255,255, 53, 34, 0,160,210,
|
||||||
/* 0x03f0 */ 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88,
|
/* 0x03f0 */ 250, 3, 2,203,250, 3, 0,249, 25, 0, 0, 16, 32, 3, 64,185,
|
||||||
/* 0x0400 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0400 */ 224, 7, 0,249, 57, 67, 32,203, 0, 0, 0,148,244, 3, 30,170,
|
||||||
/* 0x0410 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73,
|
/* 0x0410 */ 1, 2,128, 82, 0, 0, 0, 16,232, 34,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0420 */ 78, 89, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48,
|
/* 0x0420 */ 0, 2,248, 54, 97, 0, 0, 52,225, 3, 31, 42,250,255,255, 23,
|
||||||
/* 0x0430 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
|
/* 0x0430 */ 6, 0, 0,148,192, 1, 0, 0, 2, 64, 64, 0, 47,100,101,118,
|
||||||
/* 0x0440 */ 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 77,
|
/* 0x0440 */ 47,115,104,109, 0, 0, 0, 0,195, 71, 64,184,194, 71, 64,184,
|
||||||
/* 0x0450 */ 70, 76, 71, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0450 */ 225, 3, 30,170, 96, 12,128, 18, 8, 7,128, 82, 1, 0, 0,212,
|
||||||
/* 0x0460 */ 48, 48, 48, 52, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70,
|
/* 0x0460 */ 251, 3, 0, 42,128, 6, 64,185,253, 3, 0,145,160, 3, 0,203,
|
||||||
/* 0x0470 */ 77, 65, 73, 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48,
|
/* 0x0470 */ 0,236,124,146, 31, 0, 0,145,226, 3, 0,170,225, 15, 31,248,
|
||||||
/* 0x0480 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 52, 99, 32,
|
/* 0x0480 */ 227, 3, 0,145,128, 66, 0,145,129, 10, 64,185,132, 50, 64, 57,
|
||||||
/* 0x0490 */ 103, 32, 32, 32, 32, 32, 70, 32, 69, 76, 70, 77, 65, 73, 78, 88,
|
/* 0x0490 */ 36, 0, 0,148,232, 7, 65,248,250, 3, 0,249,242, 7, 0,249,
|
||||||
/* 0x04a0 */ 32, 48,100, 99, 32,117, 99,108, 95,110,114,118, 50, 98, 95,100,
|
/* 0x04a0 */ 130, 6, 64,185,225, 3, 0,145,224, 3, 27, 42, 8, 8,128, 82,
|
||||||
/* 0x04b0 */ 101, 99,111,109,112,114,101,115,115, 95, 51, 50, 10, 48, 48, 48,
|
/* 0x04b0 */ 1, 0, 0,212,191, 3, 0,145, 5, 0,128,210,228, 3, 27, 42,
|
||||||
/* 0x04c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
|
/* 0x04c0 */ 35, 0,128, 82,162, 0,128, 82,129, 6, 64,185,225, 15, 0,249,
|
||||||
/* 0x04d0 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 48,
|
/* 0x04d0 */ 0, 0,128,210,200, 27,128, 82, 1, 0, 0,212,224, 11, 0,249,
|
||||||
/* 0x04e0 */ 32,101,110,100, 95,100,101, 99,111,109,112,114,101,115,115, 10,
|
/* 0x04e0 */ 252, 3, 0,170,224, 3, 27, 42, 40, 7,128, 82, 1, 0, 0,212,
|
||||||
/* 0x04f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x04f0 */ 253, 11, 64,185,129, 2, 64,185,158,115, 0,145,189, 3, 1, 75,
|
||||||
/* 0x0500 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48,
|
/* 0x0500 */ 253, 7, 0,249, 33,120, 30, 18, 60, 3, 1,139,192, 3, 31,214,
|
||||||
/* 0x0510 */ 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, 67, 65,
|
/* 0x0510 */ 192, 3, 95,214, 1,132, 64,248,225,255,255,181,192, 3, 95,214,
|
||||||
/* 0x0520 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82,
|
/* 0x0520 */ 1, 64, 33,139,225, 11,190,169,227,123, 1,169, 5, 0,128, 18,
|
||||||
/* 0x0530 */ 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70,
|
/* 0x0530 */ 4, 0,176, 82, 26, 0, 0, 20,228,123, 65,169,225, 15,194,168,
|
||||||
/* 0x0540 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89,
|
/* 0x0540 */ 0, 0, 1,203, 66, 0, 3,203,130, 0, 0,185,229, 3, 0,170,
|
||||||
/* 0x0550 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x0550 */ 224, 3, 3,170, 97, 0, 2,139,224, 3, 5,170,192, 3, 95,214,
|
||||||
/* 0x0560 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
/* 0x0560 */ 132, 0, 4, 43, 68, 0, 0, 52,192, 3, 95,214, 4, 68, 64,184,
|
||||||
/* 0x0570 */ 48, 48, 48, 48, 48, 48, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52,
|
/* 0x0570 */ 132, 0, 4, 58,192, 3, 95,214, 33, 0,128, 82,240, 3, 30,170,
|
||||||
/* 0x0580 */ 95, 65, 66, 83, 51, 50, 32, 32, 32, 77, 70, 76, 71, 10, 48, 48,
|
/* 0x0580 */ 248,255,255,151, 33, 0, 1, 58,246,255,255,151,163,255,255, 84,
|
||||||
/* 0x0590 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 99, 32, 82,
|
/* 0x0590 */ 0, 2, 31,214, 3, 20, 64, 56, 67, 20, 0, 56,241,255,255,151,
|
||||||
/* 0x05a0 */ 95, 65, 65, 82, 67, 72, 54, 52, 95, 67, 65, 76, 76, 50, 54, 32,
|
/* 0x05a0 */ 162,255,255, 84,245,255,255,151, 35, 12, 0,113, 1, 0,128, 82,
|
||||||
/* 0x05b0 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48,
|
/* 0x05b0 */ 163, 0, 0, 84, 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42,
|
||||||
/* 0x05c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 10, 48, 48, 48,
|
/* 0x05c0 */ 197,251,255, 52,231,255,255,151, 33, 0, 1, 58,229,255,255,151,
|
||||||
/* 0x05d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 56, 32, 82, 95,
|
/* 0x05d0 */ 33, 0, 1, 58, 97, 0, 0, 84,232,255,255,151, 33, 8, 0, 17,
|
||||||
/* 0x05e0 */ 65, 65, 82, 67, 72, 54, 52, 95, 65, 68, 82, 95, 80, 82, 69, 76,
|
/* 0x05e0 */ 191, 0, 52, 49, 33, 36,129, 26, 67,200,101, 56, 33, 4, 0,113,
|
||||||
/* 0x05f0 */ 95, 76, 79, 50, 49, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
|
/* 0x05f0 */ 67, 20, 0, 56,162,255,255, 84,233,255,255, 23,117,112,120, 0,
|
||||||
/* 0x0600 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79,
|
/* 0x0600 */ 192, 3, 63,214, 0, 0, 0, 0,102,105,108,101, 32,102,111,114,
|
||||||
/* 0x0610 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78,
|
/* 0x0610 */ 109, 97,116, 32,101,108,102, 54, 52, 45,108,105,116,116,108,101,
|
||||||
/* 0x0620 */ 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32,
|
/* 0x0620 */ 97, 97,114, 99,104, 54, 52, 10, 10, 83,101, 99,116,105,111,110,
|
||||||
/* 0x0630 */ 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32,
|
/* 0x0630 */ 115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32,
|
||||||
/* 0x0640 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48,
|
/* 0x0640 */ 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86,
|
||||||
/* 0x0650 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95,
|
/* 0x0650 */ 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x0660 */ 65, 65, 82, 67, 72, 54, 52, 95, 65, 66, 83, 51, 50, 32, 32, 32,
|
/* 0x0660 */ 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
/* 0x0670 */ 79, 95, 66, 73, 78, 70, 79, 10
|
/* 0x0670 */ 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,
|
||||||
|
/* 0x0680 */ 110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70,
|
||||||
|
/* 0x0690 */ 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 49, 48, 32, 32,
|
||||||
|
/* 0x06a0 */ 48, 32, 32, 48, 32, 32, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32,
|
||||||
|
/* 0x06b0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 69, 76,
|
||||||
|
/* 0x06c0 */ 70, 83, 73, 71, 83, 69, 71, 86, 32, 32, 32, 32, 48, 51, 55, 56,
|
||||||
|
/* 0x06d0 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 53, 48, 32, 32, 50, 42, 42,
|
||||||
|
/* 0x06e0 */ 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32,
|
||||||
|
/* 0x06f0 */ 69, 76, 70, 77, 65, 73, 78, 88, 50, 32, 32, 32, 32, 32, 48, 50,
|
||||||
|
/* 0x0700 */ 51, 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 99, 56, 32, 32,
|
||||||
|
/* 0x0710 */ 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32,
|
||||||
|
/* 0x0720 */ 32, 51, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0730 */ 32, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 53,102, 99, 32, 32,
|
||||||
|
/* 0x0740 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32,
|
||||||
|
/* 0x0750 */ 32, 52, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0760 */ 32, 48, 99, 32, 32, 48, 32, 32, 48, 32, 32, 48, 53,102, 99, 32,
|
||||||
|
/* 0x0770 */ 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10,
|
||||||
|
/* 0x0780 */ 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48,
|
||||||
|
/* 0x0790 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
|
||||||
|
/* 0x07a0 */ 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32,
|
||||||
|
/* 0x07b0 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x07c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32,
|
||||||
|
/* 0x07d0 */ 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 32, 48, 32,
|
||||||
|
/* 0x07e0 */ 69, 76, 70, 77, 65, 73, 78, 88, 50, 10, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x07f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
|
||||||
|
/* 0x0800 */ 100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32, 69, 76,
|
||||||
|
/* 0x0810 */ 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0820 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
|
||||||
|
/* 0x0830 */ 69, 76, 70, 83, 73, 71, 83, 69, 71, 86, 32, 48, 32, 69, 76, 70,
|
||||||
|
/* 0x0840 */ 83, 73, 71, 83, 69, 71, 86, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0850 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
|
||||||
|
/* 0x0860 */ 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 48, 32, 69, 76, 70, 77,
|
||||||
|
/* 0x0870 */ 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0880 */ 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85,
|
||||||
|
/* 0x0890 */ 78, 68, 42, 32, 48, 32, 77, 70, 76, 71, 10, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x08a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32,103, 32, 32, 32,
|
||||||
|
/* 0x08b0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 95,
|
||||||
|
/* 0x08c0 */ 115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x08d0 */ 48, 48, 48, 49, 53, 56, 32,103, 32, 32, 32, 32, 32, 70, 32, 69,
|
||||||
|
/* 0x08e0 */ 76, 70, 77, 65, 73, 78, 88, 50, 32, 48,100, 99, 32,117, 99,108,
|
||||||
|
/* 0x08f0 */ 95,110,114,118, 50, 98, 95,100,101, 99,111,109,112,114,101,115,
|
||||||
|
/* 0x0900 */ 115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0910 */ 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76,
|
||||||
|
/* 0x0920 */ 70, 77, 65, 73, 78, 89, 32, 48, 32,101,110,100, 95,100,101, 99,
|
||||||
|
/* 0x0930 */ 111,109,112,114,101,115,115, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0940 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0950 */ 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, 66, 73, 78, 70, 79,
|
||||||
|
/* 0x0960 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
|
||||||
|
/* 0x0970 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73,
|
||||||
|
/* 0x0980 */ 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0990 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x09a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
|
||||||
|
/* 0x09b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82,
|
||||||
|
/* 0x09c0 */ 95, 65, 65, 82, 67, 72, 54, 52, 95, 65, 66, 83, 51, 50, 32, 32,
|
||||||
|
/* 0x09d0 */ 32, 77, 70, 76, 71, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x09e0 */ 48, 48, 48, 48, 48, 99, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52,
|
||||||
|
/* 0x09f0 */ 95, 65, 68, 82, 95, 80, 82, 69, 76, 95, 76, 79, 50, 49, 32, 32,
|
||||||
|
/* 0x0a00 */ 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120, 48, 48, 48, 48,
|
||||||
|
/* 0x0a10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 52, 56, 10, 10, 82, 69,
|
||||||
|
/* 0x0a20 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
|
||||||
|
/* 0x0a30 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 50, 93,
|
||||||
|
/* 0x0a40 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0a50 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||||
|
/* 0x0a60 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48,
|
||||||
|
/* 0x0a70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 48, 32, 82, 95, 65, 65,
|
||||||
|
/* 0x0a80 */ 82, 67, 72, 54, 52, 95, 65, 68, 82, 95, 80, 82, 69, 76, 95, 76,
|
||||||
|
/* 0x0a90 */ 79, 50, 49, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 45, 48,120,
|
||||||
|
/* 0x0aa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52,
|
||||||
|
/* 0x0ab0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52,
|
||||||
|
/* 0x0ac0 */ 48, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 67, 65, 76, 76,
|
||||||
|
/* 0x0ad0 */ 50, 54, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48,
|
||||||
|
/* 0x0ae0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 10,
|
||||||
|
/* 0x0af0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 99,
|
||||||
|
/* 0x0b00 */ 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 65, 68, 82, 95, 80,
|
||||||
|
/* 0x0b10 */ 82, 69, 76, 95, 76, 79, 50, 49, 32, 32, 69, 76, 70, 77, 65, 73,
|
||||||
|
/* 0x0b20 */ 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82,
|
||||||
|
/* 0x0b30 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77,
|
||||||
|
/* 0x0b40 */ 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32,
|
||||||
|
/* 0x0b50 */ 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32,
|
||||||
|
/* 0x0b60 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10,
|
||||||
|
/* 0x0b70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
|
||||||
|
/* 0x0b80 */ 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 65, 66, 83, 51, 50,
|
||||||
|
/* 0x0b90 */ 32, 32, 32, 79, 95, 66, 73, 78, 70, 79, 10
|
||||||
};
|
};
|
||||||
|
|||||||
Generated
+1106
-1105
File diff suppressed because it is too large
Load Diff
Generated
+861
-833
File diff suppressed because it is too large
Load Diff
@@ -94,8 +94,9 @@ _start: .globl _start
|
|||||||
push %rsp; pop %rdi // argv
|
push %rsp; pop %rdi // argv
|
||||||
push %rcx // argc
|
push %rcx // argc
|
||||||
push %rdx // param for atexit()
|
push %rdx // param for atexit()
|
||||||
|
lea cancel_dummy(%rip),%r15
|
||||||
|
|
||||||
#if TEST_SIGSEGV
|
section ELFSIGSEGV
|
||||||
// install SIGSEGV handler for debugging
|
// install SIGSEGV handler for debugging
|
||||||
SIGSEGV= 11
|
SIGSEGV= 11
|
||||||
SA_SIGINFO= 4 // /usr/include/bits/sigaction.h
|
SA_SIGINFO= 4 // /usr/include/bits/sigaction.h
|
||||||
@@ -107,6 +108,7 @@ __NR_rt_sigaction= 13 // /usr/include/asm/unistd_64.h
|
|||||||
lea __restore_rt(%rip),%rax; push %rax // .sa_restorer
|
lea __restore_rt(%rip),%rax; push %rax // .sa_restorer
|
||||||
push $SA_RESTORER | SA_SIGINFO // .sa_flags
|
push $SA_RESTORER | SA_SIGINFO // .sa_flags
|
||||||
lea sigsegv_sigaction(%rip),%rax; push %rax // .sa_sigaction
|
lea sigsegv_sigaction(%rip),%rax; push %rax // .sa_sigaction
|
||||||
|
lea cancel_sigsegv(%rip),%r15
|
||||||
push %rsp; pop %rsi // arg2= &new struct sigaction
|
push %rsp; pop %rsi // arg2= &new struct sigaction
|
||||||
push $SIGSEGV; pop %rdi // arg1= signum
|
push $SIGSEGV; pop %rdi // arg1= signum
|
||||||
push $8; pop %r10 // sys4= sizeof(__sigset_t) ==> 64 bits
|
push $8; pop %r10 // sys4= sizeof(__sigset_t) ==> 64 bits
|
||||||
@@ -131,9 +133,173 @@ __NR_rt_sigaction= 13 // /usr/include/asm/unistd_64.h
|
|||||||
movl $0x66666666,%esi
|
movl $0x66666666,%esi
|
||||||
movl $0x77777777,%edi
|
movl $0x77777777,%edi
|
||||||
movl (%rdx),%edx // force SIGSEGV
|
movl (%rdx),%edx // force SIGSEGV
|
||||||
#endif //}
|
#endif // TEST_ONLY}
|
||||||
#endif // TEST_SIGSEGV
|
|
||||||
|
|
||||||
|
jmp end_sigsegv
|
||||||
|
|
||||||
|
__NR_rt_sigreturn= 15
|
||||||
|
__restore_rt:
|
||||||
|
endbr64
|
||||||
|
mov $__NR_rt_sigreturn,%eax
|
||||||
|
syscall
|
||||||
|
|
||||||
|
sigsegv_sigaction:
|
||||||
|
endbr64
|
||||||
|
push %rdx // save &ucontext_t
|
||||||
|
|
||||||
|
// print /proc/self/maps of child (same as parent: the beauty of fork())
|
||||||
|
mov $end_announce_sigaction - announce_sigaction,%edx // arg3 len
|
||||||
|
lea announce_sigaction(%rip),%rsi // arg2 buf
|
||||||
|
push $2; pop %rdi // arg1 fd_stderr
|
||||||
|
push $__NR_write; pop %rax; syscall // ignore error on write()
|
||||||
|
|
||||||
|
xor %esi,%esi // arg2 O_RDONLY
|
||||||
|
lea proc_self_maps(%rip),%arg1
|
||||||
|
push $__NR_open; pop %rax; syscall
|
||||||
|
mov %rax,%r12 // fd_maps
|
||||||
|
BUFLEN= 4096
|
||||||
|
mov $BUFLEN,%ebx; sub %rbx,%rsp // allocate buffer
|
||||||
|
loop_maps:
|
||||||
|
mov %ebx,%edx // arg3 buflen
|
||||||
|
push %rsp; pop %rsi // arg2 buffer
|
||||||
|
mov %r12,%rdi // arg1 fd_maps
|
||||||
|
xor %eax,%eax; syscall // __NR_read
|
||||||
|
test %eax,%eax; jle done_maps // ignore error on read()
|
||||||
|
mov %eax,%edx // arg3 buflen
|
||||||
|
push %rsp; pop %rsi // arg2 buf
|
||||||
|
push $2; pop %rdi // arg1 fd_stderr
|
||||||
|
push $__NR_write; pop %rax; syscall // ignore error on write()
|
||||||
|
jmp loop_maps
|
||||||
|
done_maps:
|
||||||
|
mov %r12,%rdi //arg1 fd_maps
|
||||||
|
add %rbx,%rsp // discard buffer
|
||||||
|
push $__NR_close; pop %rax; syscall
|
||||||
|
// end printing of /proc/self/maps
|
||||||
|
|
||||||
|
pop %rdx // restore &ucontext_t
|
||||||
|
__NR_fork= 57
|
||||||
|
push $__NR_fork; pop %rax; call sys_check
|
||||||
|
test %eax,%eax; je child
|
||||||
|
parent:
|
||||||
|
jmp parent // spin; paused by gdb
|
||||||
|
|
||||||
|
proc_self_cmdline:
|
||||||
|
.asciz "/proc/self/cmdline"
|
||||||
|
announce_sigaction:
|
||||||
|
.asciz "\n\nSIGSEGV address space:\n"
|
||||||
|
end_announce_sigaction:
|
||||||
|
|
||||||
|
proc_self_maps:
|
||||||
|
.asciz "/proc/self/maps"
|
||||||
|
minus_q:
|
||||||
|
.asciz "-q"
|
||||||
|
path_gdb:
|
||||||
|
.asciz "/usr/bin/gdb"
|
||||||
|
commands_gdb:
|
||||||
|
.ascii "set prompt\n" // null string prompt
|
||||||
|
.ascii "info inferiors\n"
|
||||||
|
// ucontext_t, mcontext_t, gregset_t, gret_t, REG_xxx: <sys/ucontext.h>
|
||||||
|
// stack_t <bits/types/stack_t.h>
|
||||||
|
.ascii "print \"r8 - r15\"\n"
|
||||||
|
.ascii "x/8xg $rdx + 5*8\n"
|
||||||
|
|
||||||
|
.ascii "print \"rdi, rsi, rbp, rbx\"\n"
|
||||||
|
.ascii "x/4xg\n"
|
||||||
|
.ascii "print \"rdx, rax, rcx, rsp\"\n"
|
||||||
|
.ascii "x/4xg\n"
|
||||||
|
.ascii "print \"rip, efl\"\n"
|
||||||
|
.ascii "x/2xg\n"
|
||||||
|
|
||||||
|
.ascii "set $pc = *(long *)($rdx + 168)\n"
|
||||||
|
.ascii "print \"faulting instr\"\n"
|
||||||
|
.ascii "x/i $pc\n"
|
||||||
|
.ascii "print \"fault context\"\n"
|
||||||
|
.ascii "x/16i $pc - 0x20\n"
|
||||||
|
|
||||||
|
.ascii "print \"user stack\"\n"
|
||||||
|
.ascii "x/64xg *(long *)($rdx + 5*8 + 15*8)\n"
|
||||||
|
|
||||||
|
.ascii "kill\n"
|
||||||
|
.ascii "quit 1"
|
||||||
|
.byte 0
|
||||||
|
commands_gdb_end:
|
||||||
|
|
||||||
|
child:
|
||||||
|
PATH_MAX= 4096
|
||||||
|
sub $PATH_MAX,%rsp
|
||||||
|
lea proc_self_cmdline(%rip),%arg1
|
||||||
|
O_RDONLY= 0
|
||||||
|
push $O_RDONLY; pop %arg2
|
||||||
|
push $__NR_open; pop %rax; call sys_check
|
||||||
|
push %rax; pop %arg1 // fd
|
||||||
|
push %rsp; pop %arg2 // buffer
|
||||||
|
push $PATH_MAX; pop %arg3
|
||||||
|
__NR_read= 0
|
||||||
|
push $__NR_read; pop %rax; call sys_check
|
||||||
|
push $__NR_close; pop %rax; call sys_check
|
||||||
|
|
||||||
|
__NR_getppid= 110
|
||||||
|
push $__NR_getppid; pop %rax; syscall
|
||||||
|
push %rax; pop %rsi
|
||||||
|
xor %eax,%eax; push %rax; push %rax // decimal(pid) fits in 16 bytes
|
||||||
|
push %rsp; pop %rdi; call unsimal
|
||||||
|
// argv
|
||||||
|
push %rsp; pop %rsi // fence post: &pid.unsimal
|
||||||
|
push $0 // argv[4]
|
||||||
|
push %rsi // arg3 pid
|
||||||
|
add $16,%rsi; push %rsi // arg2 exename
|
||||||
|
lea minus_q(%rip),%rax; push %rax // arg1 "-q"
|
||||||
|
add $(path_gdb - minus_q),%rax; push %rax // arg[0] "/usr/bin/gdb"
|
||||||
|
|
||||||
|
#if 1 //{ pipe input to gdb
|
||||||
|
xor %edi,%edi; push $__NR_close; pop %rax; syscall
|
||||||
|
push %rax; push %rsp; pop %rdi // &fd_pipe[2]; 4 bytes each
|
||||||
|
__NR_pipe= 22
|
||||||
|
push $__NR_pipe; pop %rax; call sys_check
|
||||||
|
pop %rdi; shr $32,%rdi // arg1 write side of pipe
|
||||||
|
|
||||||
|
push $commands_gdb_end - commands_gdb; pop %arg3
|
||||||
|
lea commands_gdb(%rip),%arg2
|
||||||
|
__NR_write= 1
|
||||||
|
push $__NR_write; pop %rax; call sys_check
|
||||||
|
push $__NR_close; pop %rax; syscall
|
||||||
|
#endif //}
|
||||||
|
|
||||||
|
push $0; pop %arg3 // _environ BUG
|
||||||
|
push %rsp; pop %arg2 // argv
|
||||||
|
movq (%arg2),%arg1 // "/usr/bin/gdb"
|
||||||
|
__NR_execve= 59
|
||||||
|
push $__NR_execve; pop %rax; call sys_check
|
||||||
|
hlt
|
||||||
|
|
||||||
|
unsimal: // (dst, value)
|
||||||
|
push $10; pop %rcx // radix
|
||||||
|
mov %esi,%eax // value
|
||||||
|
call 0f
|
||||||
|
movb $0,(%rdi) // terminator
|
||||||
|
ret
|
||||||
|
0:
|
||||||
|
xor %edx,%edx; div %ecx; push %rdx // eax= quo(%edx:%eax / %ecx); edx= rem
|
||||||
|
// 'div' undefines all flags!
|
||||||
|
test %eax,%eax; je 1f; call 0b
|
||||||
|
1:
|
||||||
|
pop %rax; add $'0',%eax
|
||||||
|
stosb
|
||||||
|
ret
|
||||||
|
|
||||||
|
// Uninstall SIGSEGV handler
|
||||||
|
cancel_sigsegv:
|
||||||
|
endbr64
|
||||||
|
push $8; pop %sys4 // sys_arg4 minimal byte count
|
||||||
|
xor %edx,%edx // no old
|
||||||
|
xor %esi,%esi // no new
|
||||||
|
push $SIGSEGV; pop %rdi
|
||||||
|
push $__NR_rt_sigaction; pop %eax; syscall
|
||||||
|
ret
|
||||||
|
|
||||||
|
end_sigsegv:
|
||||||
|
|
||||||
|
section ELFMAINX2
|
||||||
#define old_sp %rbp
|
#define old_sp %rbp
|
||||||
F_FRAME= 7*NBPW
|
F_FRAME= 7*NBPW
|
||||||
F_ENTR= 6*NBPW; F_PMASK= F_ENTR
|
F_ENTR= 6*NBPW; F_PMASK= F_ENTR
|
||||||
@@ -144,8 +310,9 @@ F_ELFA= 2*NBPW
|
|||||||
F_LENX= 1*NBPW
|
F_LENX= 1*NBPW
|
||||||
F_ADRX= 0*NBPW
|
F_ADRX= 0*NBPW
|
||||||
|
|
||||||
D_FOLD= 1*NBPW // .data space at start of unfold
|
D_FOLD= 2*NBPW // .data space at start of unfold
|
||||||
D_PMASK= 0*NBPW
|
D_PMASK= 0*NBPW
|
||||||
|
D_XSIGSEGV= 1*NBPW
|
||||||
|
|
||||||
// find auxv
|
// find auxv
|
||||||
xor %eax,%eax // 0
|
xor %eax,%eax // 0
|
||||||
@@ -303,6 +470,7 @@ eof_n2b:
|
|||||||
|
|
||||||
// Write de-compressed 'fold' to file
|
// Write de-compressed 'fold' to file
|
||||||
mov F_PMASK(old_sp),%rax; mov %rax,/*D_PMASK*/(%rsp) // propagate PAGE_MASK
|
mov F_PMASK(old_sp),%rax; mov %rax,/*D_PMASK*/(%rsp) // propagate PAGE_MASK
|
||||||
|
mov %r15,D_XSIGSEGV(%rsp) // propagate cancel_sigsegv
|
||||||
mov F_LENU(old_sp),%arg3 // LENU
|
mov F_LENU(old_sp),%arg3 // LENU
|
||||||
sub $INSURANCE,%arg3 // memcheck limit
|
sub $INSURANCE,%arg3 // memcheck limit
|
||||||
push %rsp; pop %arg2 // buffer
|
push %rsp; pop %arg2 // buffer
|
||||||
@@ -334,159 +502,9 @@ eof_n2b:
|
|||||||
add $D_FOLD,%rax // beyond .data
|
add $D_FOLD,%rax // beyond .data
|
||||||
jmp *%rax // goto unfolded stub
|
jmp *%rax // goto unfolded stub
|
||||||
|
|
||||||
#if TEST_SIGSEGV
|
cancel_dummy:
|
||||||
__NR_rt_sigreturn= 15
|
|
||||||
.balign 16
|
|
||||||
__restore_rt:
|
|
||||||
endbr64
|
endbr64
|
||||||
mov $__NR_rt_sigreturn,%eax
|
|
||||||
syscall
|
|
||||||
|
|
||||||
.balign 16
|
|
||||||
sigsegv_sigaction:
|
|
||||||
endbr64
|
|
||||||
push %rdx // save &ucontext_t
|
|
||||||
|
|
||||||
// print /proc/self/maps of child (same as parent: the beauty of fork())
|
|
||||||
mov $end_announce_sigaction - announce_sigaction,%edx // arg3 len
|
|
||||||
lea announce_sigaction(%rip),%rsi // arg2 buf
|
|
||||||
push $2; pop %rdi // arg1 fd_stderr
|
|
||||||
push $__NR_write; pop %rax; syscall // ignore error on write()
|
|
||||||
|
|
||||||
xor %esi,%esi // arg2 O_RDONLY
|
|
||||||
lea proc_self_maps(%rip),%arg1
|
|
||||||
push $__NR_open; pop %rax; syscall
|
|
||||||
mov %rax,%r12 // fd_maps
|
|
||||||
BUFLEN= 4096
|
|
||||||
mov $BUFLEN,%ebx; sub %rbx,%rsp // allocate buffer
|
|
||||||
loop_maps:
|
|
||||||
mov %ebx,%edx // arg3 buflen
|
|
||||||
push %rsp; pop %rsi // arg2 buffer
|
|
||||||
mov %r12,%rdi // arg1 fd_maps
|
|
||||||
xor %eax,%eax; syscall // __NR_read
|
|
||||||
test %eax,%eax; jle done_maps // ignore error on read()
|
|
||||||
mov %eax,%edx // arg3 buflen
|
|
||||||
push %rsp; pop %rsi // arg2 buf
|
|
||||||
push $2; pop %rdi // arg1 fd_stderr
|
|
||||||
push $__NR_write; pop %rax; syscall // ignore error on write()
|
|
||||||
jmp loop_maps
|
|
||||||
done_maps:
|
|
||||||
mov %r12,%rdi //arg1 fd_maps
|
|
||||||
add %rbx,%rsp // discard buffer
|
|
||||||
push $__NR_close; pop %rax; syscall
|
|
||||||
// end printing of /proc/self/maps
|
|
||||||
|
|
||||||
pop %rdx // restore &ucontext_t
|
|
||||||
__NR_fork= 57
|
|
||||||
push $__NR_fork; pop %rax; call sys_check
|
|
||||||
test %eax,%eax; je child
|
|
||||||
parent:
|
|
||||||
jmp parent // spin; paused by gdb
|
|
||||||
|
|
||||||
proc_self_cmdline:
|
|
||||||
.asciz "/proc/self/cmdline"
|
|
||||||
announce_sigaction:
|
|
||||||
.asciz "\n\nSIGSEGV address space:\n"
|
|
||||||
end_announce_sigaction:
|
|
||||||
|
|
||||||
proc_self_maps:
|
|
||||||
.asciz "/proc/self/maps"
|
|
||||||
minus_q:
|
|
||||||
.asciz "-q"
|
|
||||||
path_gdb:
|
|
||||||
.asciz "/usr/bin/gdb"
|
|
||||||
commands_gdb:
|
|
||||||
.ascii "set prompt\n" // null string prompt
|
|
||||||
.ascii "info inferiors\n"
|
|
||||||
// ucontext_t, mcontext_t, gregset_t, gret_t, REG_xxx: <sys/ucontext.h>
|
|
||||||
// stack_t <bits/types/stack_t.h>
|
|
||||||
.ascii "print \"r8 - r15\"\n"
|
|
||||||
.ascii "x/8xg $rdx + 5*8\n"
|
|
||||||
|
|
||||||
.ascii "print \"rdi, rsi, rbp, rbx\"\n"
|
|
||||||
.ascii "x/4xg\n"
|
|
||||||
.ascii "print \"rdx, rax, rcx, rsp\"\n"
|
|
||||||
.ascii "x/4xg\n"
|
|
||||||
.ascii "print \"rip, efl\"\n"
|
|
||||||
.ascii "x/2xg\n"
|
|
||||||
|
|
||||||
.ascii "set $pc = *(long *)($rdx + 168)\n"
|
|
||||||
.ascii "print \"faulting instr\"\n"
|
|
||||||
.ascii "x/i $pc\n"
|
|
||||||
.ascii "print \"fault context\"\n"
|
|
||||||
.ascii "x/16i $pc - 0x20\n"
|
|
||||||
|
|
||||||
.ascii "print \"user stack\"\n"
|
|
||||||
.ascii "x/64xg *(long *)($rdx + 5*8 + 15*8)\n"
|
|
||||||
|
|
||||||
.ascii "kill\n"
|
|
||||||
.ascii "quit 1"
|
|
||||||
.byte 0
|
|
||||||
commands_gdb_end:
|
|
||||||
|
|
||||||
child:
|
|
||||||
PATH_MAX= 4096
|
|
||||||
sub $PATH_MAX,%rsp
|
|
||||||
lea proc_self_cmdline(%rip),%arg1
|
|
||||||
O_RDONLY= 0
|
|
||||||
push $O_RDONLY; pop %arg2
|
|
||||||
push $__NR_open; pop %rax; call sys_check
|
|
||||||
push %rax; pop %arg1 // fd
|
|
||||||
push %rsp; pop %arg2 // buffer
|
|
||||||
push $PATH_MAX; pop %arg3
|
|
||||||
__NR_read= 0
|
|
||||||
push $__NR_read; pop %rax; call sys_check
|
|
||||||
push $__NR_close; pop %rax; call sys_check
|
|
||||||
|
|
||||||
__NR_getppid= 110
|
|
||||||
push $__NR_getppid; pop %rax; syscall
|
|
||||||
push %rax; pop %rsi
|
|
||||||
xor %eax,%eax; push %rax; push %rax // decimal(pid) fits in 16 bytes
|
|
||||||
push %rsp; pop %rdi; call unsimal
|
|
||||||
// argv
|
|
||||||
push %rsp; pop %rsi // fence post: &pid.unsimal
|
|
||||||
push $0 // argv[4]
|
|
||||||
push %rsi // arg3 pid
|
|
||||||
add $16,%rsi; push %rsi // arg2 exename
|
|
||||||
lea minus_q(%rip),%rax; push %rax // arg1 "-q"
|
|
||||||
add $(path_gdb - minus_q),%rax; push %rax // arg[0] "/usr/bin/gdb"
|
|
||||||
|
|
||||||
#if 1 //{ pipe input to gdb
|
|
||||||
xor %edi,%edi; push $__NR_close; pop %rax; syscall
|
|
||||||
push %rax; push %rsp; pop %rdi // &fd_pipe[2]; 4 bytes each
|
|
||||||
__NR_pipe= 22
|
|
||||||
push $__NR_pipe; pop %rax; call sys_check
|
|
||||||
pop %rdi; shr $32,%rdi // arg1 write side of pipe
|
|
||||||
|
|
||||||
push $commands_gdb_end - commands_gdb; pop %arg3
|
|
||||||
lea commands_gdb(%rip),%arg2
|
|
||||||
__NR_write= 1
|
|
||||||
push $__NR_write; pop %rax; call sys_check
|
|
||||||
push $__NR_close; pop %rax; syscall
|
|
||||||
#endif //}
|
|
||||||
|
|
||||||
push $0; pop %arg3 // _environ BUG
|
|
||||||
push %rsp; pop %arg2 // argv
|
|
||||||
movq (%arg2),%arg1 // "/usr/bin/gdb"
|
|
||||||
__NR_execve= 59
|
|
||||||
push $__NR_execve; pop %rax; call sys_check
|
|
||||||
hlt
|
|
||||||
|
|
||||||
unsimal: // (dst, value)
|
|
||||||
push $10; pop %rcx // radix
|
|
||||||
mov %esi,%eax // value
|
|
||||||
call 0f
|
|
||||||
movb $0,(%rdi) // terminator
|
|
||||||
ret
|
ret
|
||||||
0:
|
|
||||||
xor %edx,%edx; div %ecx; push %rdx // eax= quo(%edx:%eax / %ecx); edx= rem
|
|
||||||
// 'div' undefines all flags!
|
|
||||||
test %eax,%eax; je 1f; call 0b
|
|
||||||
1:
|
|
||||||
pop %rax; add $'0',%eax
|
|
||||||
stosb
|
|
||||||
ret
|
|
||||||
#endif // TEST_SIGSEGV
|
|
||||||
|
|
||||||
sys_check:
|
sys_check:
|
||||||
push %rax // save __NR_ for debug
|
push %rax // save __NR_ for debug
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ is_ptinterp= (1<<0)
|
|||||||
|
|
||||||
.balign 8
|
.balign 8
|
||||||
PAGE_MASK: .quad -1<<12 // default
|
PAGE_MASK: .quad -1<<12 // default
|
||||||
|
cancel_sigsegv: .quad 0 // subroutine that cancels sigaction(SIGSEGV,)
|
||||||
|
|
||||||
// IN: [ADRX,+LENX): compressed data; [ADRU,+LENU): expanded fold (w/ upx_main2)
|
// IN: [ADRX,+LENX): compressed data; [ADRU,+LENU): expanded fold (w/ upx_main2)
|
||||||
// %rsp= %rbp= &F_ADRX; %r13= O_BINFO | is_ptinterp | unmap_all_pages
|
// %rsp= %rbp= &F_ADRX; %r13= O_BINFO | is_ptinterp | unmap_all_pages
|
||||||
@@ -174,19 +175,11 @@ no_env_pse:
|
|||||||
*/
|
*/
|
||||||
// rsp/ {OVERHEAD},ADRU,LENU,rdx,%entry, argc,argv,0,envp,0,auxv,0,strings
|
// rsp/ {OVERHEAD},ADRU,LENU,rdx,%entry, argc,argv,0,envp,0,auxv,0,strings
|
||||||
addq $OVERHEAD,%rsp # Elf64_Ehdr temporary space
|
addq $OVERHEAD,%rsp # Elf64_Ehdr temporary space
|
||||||
mov %ebp,%ebx # fd
|
#define r_fd ebx
|
||||||
|
mov %ebp,%r_fd
|
||||||
movq %rax,3*NBPW(%rsp) # entry
|
movq %rax,3*NBPW(%rsp) # entry
|
||||||
|
|
||||||
#if TEST_SIGSEGV
|
call *cancel_sigsegv(%rip)
|
||||||
// Uninstall SIGSEGV handler
|
|
||||||
SIGSEGV= 11
|
|
||||||
__NR_rt_sigaction= 13 // /usr/include/asm/unistd_64.h
|
|
||||||
push $8; pop %sys4 // sys_arg4 minimal byte count
|
|
||||||
xor %edx,%edx // no old
|
|
||||||
xor %esi,%esi // no new
|
|
||||||
push $SIGSEGV; pop %rdi
|
|
||||||
push $__NR_rt_sigaction; pop %eax; syscall
|
|
||||||
#endif // TEST_SIGSEGV
|
|
||||||
|
|
||||||
sz_Ehdr= 8*NBPW
|
sz_Ehdr= 8*NBPW
|
||||||
e_type= 16
|
e_type= 16
|
||||||
@@ -201,16 +194,16 @@ p_memsz= 5*NBPW
|
|||||||
movq %r13,%arg1; call munmap # discard C_TEXT compressed data
|
movq %r13,%arg1; call munmap # discard C_TEXT compressed data
|
||||||
|
|
||||||
// Map 1 page of /proc/self/exe so that the symlink does not disappear.
|
// Map 1 page of /proc/self/exe so that the symlink does not disappear.
|
||||||
test %ebx,%ebx; js no_pse_map
|
test %r_fd,%r_fd; js no_pse_map
|
||||||
subq %arg6,%arg6 # 0 offset
|
subq %arg6,%arg6 # 0 offset
|
||||||
mov %ebx,%arg5l # fd
|
mov %r_fd,%arg5l # fd
|
||||||
push $MAP_PRIVATE; pop %arg4
|
push $MAP_PRIVATE; pop %arg4
|
||||||
push $PROT_READ; pop %arg3
|
push $PROT_READ; pop %arg3
|
||||||
mov $1<<12,%arg2l
|
mov $1<<12,%arg2l
|
||||||
subl %arg1l,%arg1l # 0
|
subl %arg1l,%arg1l # 0
|
||||||
call mmap
|
call mmap
|
||||||
|
|
||||||
mov %ebx,%edi # fd
|
mov %r_fd,%edi # fd
|
||||||
call close
|
call close
|
||||||
|
|
||||||
.macro NOTRACK
|
.macro NOTRACK
|
||||||
|
|||||||
@@ -66,6 +66,8 @@ MAP_ANONYMOUS= 0x20
|
|||||||
MAP_FIXED= 0x10
|
MAP_FIXED= 0x10
|
||||||
MAP_PRIVATE= 0x02
|
MAP_PRIVATE= 0x02
|
||||||
|
|
||||||
|
FD_CWD= -1 // AT_CWD= -100
|
||||||
|
FD_stdin= 0
|
||||||
FD_stderr= 2
|
FD_stderr= 2
|
||||||
O_RDONLY= 0
|
O_RDONLY= 0
|
||||||
|
|
||||||
@@ -81,13 +83,15 @@ PAGE_SIZE = ( 1<<PAGE_SHIFT)
|
|||||||
|
|
||||||
__NR_SYSCALL_BASE = 0
|
__NR_SYSCALL_BASE = 0
|
||||||
|
|
||||||
__NR_exit= 1 + __NR_SYSCALL_BASE
|
|
||||||
__NR_open= 5 + __NR_SYSCALL_BASE
|
|
||||||
__NR_close= 6 + __NR_SYSCALL_BASE
|
__NR_close= 6 + __NR_SYSCALL_BASE
|
||||||
|
__NR_execve= 11 + __NR_SYSCALL_BASE
|
||||||
|
__NR_exit= 1 + __NR_SYSCALL_BASE
|
||||||
__NR_fdatasync=148 + __NR_SYSCALL_BASE
|
__NR_fdatasync=148 + __NR_SYSCALL_BASE
|
||||||
|
__NR_fork= 2 + __NR_SYSCALL_BASE
|
||||||
__NR_fsync= 118 + __NR_SYSCALL_BASE
|
__NR_fsync= 118 + __NR_SYSCALL_BASE
|
||||||
__NR_ftruncate=93 + __NR_SYSCALL_BASE
|
__NR_ftruncate=93 + __NR_SYSCALL_BASE
|
||||||
__NR_getpid= 20 + __NR_SYSCALL_BASE
|
__NR_getpid= 20 + __NR_SYSCALL_BASE
|
||||||
|
__NR_getppid= 64 + __NR_SYSCALL_BASE
|
||||||
__NR_lseek= 19 + __NR_SYSCALL_BASE
|
__NR_lseek= 19 + __NR_SYSCALL_BASE
|
||||||
__NR_memfd_create= 385 + __NR_SYSCALL_BASE
|
__NR_memfd_create= 385 + __NR_SYSCALL_BASE
|
||||||
__NR_mkdir= 39 + __NR_SYSCALL_BASE
|
__NR_mkdir= 39 + __NR_SYSCALL_BASE
|
||||||
@@ -95,12 +99,16 @@ __NR_mmap2= 192 + __NR_SYSCALL_BASE
|
|||||||
__NR_mprotect=125 + __NR_SYSCALL_BASE
|
__NR_mprotect=125 + __NR_SYSCALL_BASE
|
||||||
__NR_msync= 144 + __NR_SYSCALL_BASE // 0x90
|
__NR_msync= 144 + __NR_SYSCALL_BASE // 0x90
|
||||||
__NR_open= 5 + __NR_SYSCALL_BASE
|
__NR_open= 5 + __NR_SYSCALL_BASE
|
||||||
|
__NR_openat= 322 + __NR_SYSCALL_BASE
|
||||||
|
__NR_pipe= 42 + __NR_SYSCALL_BASE
|
||||||
__NR_read= 3 + __NR_SYSCALL_BASE
|
__NR_read= 3 + __NR_SYSCALL_BASE
|
||||||
|
__NR_sigaction=67 + __NR_SYSCALL_BASE
|
||||||
__NR_stat= 106 + __NR_SYSCALL_BASE
|
__NR_stat= 106 + __NR_SYSCALL_BASE
|
||||||
__NR_uname= 122 + __NR_SYSCALL_BASE
|
__NR_uname= 122 + __NR_SYSCALL_BASE
|
||||||
__NR_unlink= 10 + __NR_SYSCALL_BASE
|
__NR_unlink= 10 + __NR_SYSCALL_BASE
|
||||||
__NR_write= 4 + __NR_SYSCALL_BASE
|
__NR_write= 4 + __NR_SYSCALL_BASE
|
||||||
|
|
||||||
|
|
||||||
__ARM_NR_BASE= 0xf0000 + __NR_SYSCALL_BASE
|
__ARM_NR_BASE= 0xf0000 + __NR_SYSCALL_BASE
|
||||||
__ARM_NR_cacheflush= 2 + __ARM_NR_BASE
|
__ARM_NR_cacheflush= 2 + __ARM_NR_BASE
|
||||||
|
|
||||||
@@ -145,6 +153,49 @@ _start: .globl _start
|
|||||||
//// nop; bkpt // DEBUG
|
//// nop; bkpt // DEBUG
|
||||||
stmdb sp!,{r0,r1,lr} // ABI crt0 -static may have data here
|
stmdb sp!,{r0,r1,lr} // ABI crt0 -static may have data here
|
||||||
sub sp,sp,#-3*NBPW + F_SIZE // F_R0,F_R1 separately
|
sub sp,sp,#-3*NBPW + F_SIZE // F_R0,F_R1 separately
|
||||||
|
|
||||||
|
ldr r1,sz_pack2
|
||||||
|
adr r0,sz_pack2
|
||||||
|
sub r0,r0,r1 @ elfaddr= &Elf_Ehdr of this program
|
||||||
|
str r0,[sp,#F_ELFA]
|
||||||
|
mov r_pack2,r1 @ save sz_pack2
|
||||||
|
|
||||||
|
ldr r0,mflg
|
||||||
|
str r0,[sp,#F_QFLG]
|
||||||
|
|
||||||
|
section ELFSIGSEGV
|
||||||
|
#if TEST_SIGSEGV //{ #defined on -devel branch only; not seen on arm64 hardware
|
||||||
|
// install SIGSEGV handler for debugging
|
||||||
|
SIGSEGV= 11
|
||||||
|
SA_SIGINFO= 4 // /usr/include/bits/sigaction.h
|
||||||
|
SA_RESTORER= 0x04000000
|
||||||
|
sa_sigaction = 0 * NBPW
|
||||||
|
sa_flags = 1 * NBPW
|
||||||
|
sa_mask = 3 * NBPW // location of mask
|
||||||
|
sa_restorer = 4 * NBPW
|
||||||
|
sa_frame = 5 * NBPW
|
||||||
|
call adr_sigaction; mov r0,lr // .sa_sigaction
|
||||||
|
mov r1,#SA_SIGINFO // .sa_flags
|
||||||
|
mov r2,#0 // .sa_mask
|
||||||
|
mov r3,#0
|
||||||
|
mov r4,#0 // .sa_restorer
|
||||||
|
stmdb sp!,{r0,r1,r2,r3,r4}
|
||||||
|
|
||||||
|
mov arg4,#8 // 8 bytes ==> 64 bits
|
||||||
|
mov arg3,#0 // do not save old_sigaction
|
||||||
|
mov arg2,sp // &new_sigaction
|
||||||
|
mov arg1,#SIGSEGV
|
||||||
|
do_sys7t __NR_sigaction
|
||||||
|
add sp,sp,#sa_frame
|
||||||
|
|
||||||
|
#if 0 //{ TEST ONLY
|
||||||
|
mov r0,#0xc0;mov r1,#0xc1;mov r2,#0xc2;mov r3,#0xc3;mov r4,#0xc4;mov r5,#0xc5;mov r6,#0xc6;mov r7,#0xc7
|
||||||
|
mov r8,#0xc8;mov r9,#0xc9;mov r10,#0xca;mov r11,#0xcb;mov r12,#0xcc
|
||||||
|
ldr r0,[r0] // cause SIGSEGV
|
||||||
|
#endif //}
|
||||||
|
#endif //}
|
||||||
|
|
||||||
|
section ELFMAINX2
|
||||||
add arg1,sp,#NBPW + F_SIZE // avoid feint of 0==argc
|
add arg1,sp,#NBPW + F_SIZE // avoid feint of 0==argc
|
||||||
call zfind // out: r0= &envp
|
call zfind // out: r0= &envp
|
||||||
call zfind
|
call zfind
|
||||||
@@ -159,14 +210,6 @@ _start: .globl _start
|
|||||||
mvn r2,r2; add r2,r2,#1 // neg
|
mvn r2,r2; add r2,r2,#1 // neg
|
||||||
mov r_pmask,r2
|
mov r_pmask,r2
|
||||||
|
|
||||||
ldr r1,sz_pack2
|
|
||||||
adr r0,sz_pack2
|
|
||||||
sub r0,r0,r1 @ elfaddr= &Elf_Ehdr of this program
|
|
||||||
str r0,[sp,#F_ELFA]
|
|
||||||
mov r_pack2,r1 @ save sz_pack2
|
|
||||||
|
|
||||||
ldr r0,mflg
|
|
||||||
str r0,[sp,#F_QFLG]
|
|
||||||
|
|
||||||
call get_data // cpr0 can be too far away
|
call get_data // cpr0 can be too far away
|
||||||
old_sp .req r11
|
old_sp .req r11
|
||||||
@@ -242,7 +285,7 @@ mfd .req old_sp
|
|||||||
ldr arg3,[sp,#F_LENU]
|
ldr arg3,[sp,#F_LENU]
|
||||||
ldr arg2,[sp,#F_ADRU]
|
ldr arg2,[sp,#F_ADRU]
|
||||||
mov arg1,mfd
|
mov arg1,mfd
|
||||||
do_sys __NR_write
|
do_sys7t __NR_write
|
||||||
|
|
||||||
mov r5,#0
|
mov r5,#0
|
||||||
mov r4,mfd
|
mov r4,mfd
|
||||||
@@ -268,6 +311,176 @@ mfd .req old_sp
|
|||||||
ldr r12,[sp,#F_ADRU]
|
ldr r12,[sp,#F_ADRU]
|
||||||
add pc,r12,#D_FOLD // goto unfolded code
|
add pc,r12,#D_FOLD // goto unfolded code
|
||||||
|
|
||||||
|
#if TEST_SIGSEGV //{ #defined on -devel branch only; not seen on arm64 hardware
|
||||||
|
proc_self_cmdline:
|
||||||
|
.asciz "/proc/self/cmdline"
|
||||||
|
.balign 4
|
||||||
|
|
||||||
|
#define r_fd r6
|
||||||
|
PATH_MAX= 4096
|
||||||
|
child:
|
||||||
|
#if 1 //{ pipe input to gdb
|
||||||
|
mov arg1,#FD_stdin; do_sys7t __NR_close
|
||||||
|
mov arg2,#0; mov arg1,#0; stmdb sp!,{arg1,arg2} // space for result of pipe()
|
||||||
|
mov arg1,sp
|
||||||
|
do_sys7t __NR_pipe // read side will be 0 (FD_stdin)
|
||||||
|
ldmia sp!,{r0,r_fd} // write side of pipe
|
||||||
|
|
||||||
|
mov arg3,#commands_gdb_end - commands_gdb // len
|
||||||
|
adr arg2,commands_gdb
|
||||||
|
mov arg1,r_fd
|
||||||
|
do_sys7t __NR_write
|
||||||
|
mov arg1,r_fd; do_sys7t __NR_close
|
||||||
|
#endif //}
|
||||||
|
|
||||||
|
sub sp,sp,#PATH_MAX
|
||||||
|
mov arg3,#O_RDONLY
|
||||||
|
adr arg2,proc_self_cmdline
|
||||||
|
mov arg1,#FD_CWD
|
||||||
|
do_sys27t __NR_openat; mov r_fd,r0 // fd
|
||||||
|
mov arg2,sp // buffer
|
||||||
|
mov arg3,#PATH_MAX
|
||||||
|
do_sys7t __NR_read
|
||||||
|
mov arg1,r_fd; do_sys7t __NR_close
|
||||||
|
|
||||||
|
do_sys7t __NR_getppid
|
||||||
|
sub sp,sp,#16 // decimal(pid) fits in 16 bytes
|
||||||
|
mov arg2,arg1; mov arg1,sp; call unsimal
|
||||||
|
|
||||||
|
mov arg5,#0 // terminator
|
||||||
|
mov arg4,sp // &"pid" (result of unsimal)
|
||||||
|
add arg3,sp,#16 // cmdline argv[0] [skip "pid"]
|
||||||
|
adr arg2,minus_q
|
||||||
|
adr arg1,path_gdb
|
||||||
|
stmdb sp!,{arg1,arg2,arg3,arg4,arg5} // argv
|
||||||
|
mov arg3,#0 // _envviron BUG
|
||||||
|
mov arg2,sp // &argv
|
||||||
|
do_sys7t __NR_execve
|
||||||
|
0:
|
||||||
|
b 0b
|
||||||
|
minus_q:
|
||||||
|
.asciz "-q"
|
||||||
|
path_gdb:
|
||||||
|
.asciz "/usr/bin/gdb"
|
||||||
|
commands_gdb:
|
||||||
|
.ascii "set prompt\n" // null string prompt
|
||||||
|
.ascii "info inferiors\n"
|
||||||
|
.ascii "print \"r0-r7\"\n"
|
||||||
|
.ascii "x/8xw $sp + 0x28\n"
|
||||||
|
.ascii "print \"r8-r15\"\n"
|
||||||
|
.ascii "x/8xw\n"
|
||||||
|
.ascii "set $pc = *(int *)($sp + 0x64)\n"
|
||||||
|
.ascii "print \"faulting instr\"\n"
|
||||||
|
.ascii "x/i $pc\n"
|
||||||
|
.ascii "print \"fault context\"\n"
|
||||||
|
.ascii "x/15i $pc - 7*4\n"
|
||||||
|
//.ascii "print \"intercept stack\"\n"
|
||||||
|
//.ascii "x/76xw $sp\n"
|
||||||
|
.ascii "set $sp = *(long *)($sp + 0x5c)\n"
|
||||||
|
.ascii "print \"user stack\"\n"
|
||||||
|
.ascii "x/64xw $sp\n"
|
||||||
|
.ascii "kill\n"
|
||||||
|
.ascii "quit 1"
|
||||||
|
.byte 0
|
||||||
|
commands_gdb_end:
|
||||||
|
.balign 4
|
||||||
|
|
||||||
|
// ucontext_t, mcontext_t, gregset_t, gret_t, REG_xxx: <sys/ucontext.h>
|
||||||
|
// stack_t <bits/types/stack_t.h>
|
||||||
|
__restore_rt:
|
||||||
|
nop
|
||||||
|
|
||||||
|
proc_self_maps:
|
||||||
|
.asciz "/proc/self/maps"
|
||||||
|
announce_sigaction:
|
||||||
|
.ascii "\n\nSIGSEGV address space:\n"
|
||||||
|
end_announce_sigaction:
|
||||||
|
.balign 4
|
||||||
|
|
||||||
|
adr_sigaction:
|
||||||
|
mov r12,lr; mov lr,pc; mov pc,r12 // blx lr
|
||||||
|
sigsegv_sigaction:
|
||||||
|
stmdb sp!,{arg2,arg3} // save siginfo *, ucontext *
|
||||||
|
// print /proc/self/maps of child (same as parent: the beauty of fork())
|
||||||
|
mov arg3,#end_announce_sigaction - announce_sigaction // arg3 len
|
||||||
|
adr arg2,announce_sigaction // buf
|
||||||
|
mov arg1,#FD_stderr
|
||||||
|
do_sys7t __NR_write
|
||||||
|
|
||||||
|
mov arg3,#O_RDONLY // flags
|
||||||
|
adr arg2,proc_self_maps // path
|
||||||
|
mov arg1,#FD_CWD
|
||||||
|
do_sys27t __NR_openat; mov r_fd,r0 // fd_maps
|
||||||
|
BUFLEN= 4096
|
||||||
|
sub sp,sp,#BUFLEN
|
||||||
|
loop_maps:
|
||||||
|
mov arg3,#BUFLEN // buflen
|
||||||
|
mov arg2,sp // buffer
|
||||||
|
mov arg1,r_fd // fd_maps
|
||||||
|
do_sys7t __NR_read
|
||||||
|
cmp r0,#0; beq done_maps
|
||||||
|
mov arg3,r0 // buflen
|
||||||
|
mov arg2,sp // buf
|
||||||
|
mov arg1,#FD_stderr
|
||||||
|
do_sys7t __NR_write
|
||||||
|
b loop_maps
|
||||||
|
done_maps:
|
||||||
|
add sp,sp,#BUFLEN // discard buffer
|
||||||
|
mov arg1,r_fd; do_sys7t __NR_close
|
||||||
|
// end printing of /proc/self/maps
|
||||||
|
|
||||||
|
mov arg1,#0; mov arg2,#0 // paranoia
|
||||||
|
do_sys7t __NR_fork
|
||||||
|
cmp r0,#0; beq child // fork()
|
||||||
|
parent:
|
||||||
|
NR_exit= 1
|
||||||
|
b parent // spin; paused by gdb
|
||||||
|
|
||||||
|
unsimal: // (dst, value)
|
||||||
|
mov r2,#0
|
||||||
|
stmdb sp!,{r2,lr}; call 0f
|
||||||
|
ldmia sp!,{r2,lr}
|
||||||
|
strb r2,[r0] // terminator
|
||||||
|
ret
|
||||||
|
0:
|
||||||
|
mov ip,r1 // extra copy used at end
|
||||||
|
mov r2,#0 // hi
|
||||||
|
|
||||||
|
mov r3,r1 // copy lo
|
||||||
|
adds r1,r1,r1,lsl #3 // 9*lo
|
||||||
|
adc r2,r2,r2,lsl #3 // 9*hi + C
|
||||||
|
add r2,r2,r3,lsr #(32 - 3) // bits shifted from lo to hi
|
||||||
|
|
||||||
|
mov r3,r1 // copy lo
|
||||||
|
adds r1,r1,r1,lsl #4
|
||||||
|
adc r2,r2,r2,lsl #4
|
||||||
|
add r2,r2,r3,lsr #(32 - 4) // * 0x99
|
||||||
|
|
||||||
|
mov r3,r1 // copy lo
|
||||||
|
adds r1,r1,r1,lsl #8
|
||||||
|
adc r2,r2,r2,lsl #8
|
||||||
|
add r2,r2,r3,lsr #(32 - 8) // * 0x9999
|
||||||
|
|
||||||
|
mov r3,r1 // copy lo
|
||||||
|
adds r1,r1,r1,lsl #16
|
||||||
|
adc r2,r2,r2,lsl #16
|
||||||
|
add r2,r2,r3,lsr #(32 - 16) // * 0x99999999
|
||||||
|
|
||||||
|
subs r1,r1,ip,lsl #(32 - 1) // - * 0x80000000
|
||||||
|
sbc r2,r2,ip,lsr #1 // * 0x19999999
|
||||||
|
|
||||||
|
adds r1,r1,ip
|
||||||
|
adcs r1,r2,#0 // * 0x0.1999999a; r1 = quo(ip, 10); set flags
|
||||||
|
add r2,r1,r1,lsl #2 // r2 = quo * 5
|
||||||
|
sub r2,ip,r2,lsl #1 // rem = ip - 10 * quo
|
||||||
|
|
||||||
|
stmdb sp!,{r2,lr} // save rem and retaddr
|
||||||
|
beq 1f; call 0b // stop if 0==quo; else recurse for next remainder
|
||||||
|
1:
|
||||||
|
ldmia sp!,{r1,lr}; add r1,r1,#'0'; strb r1,[r0],#1
|
||||||
|
ret
|
||||||
|
#endif // TEST_SIGSEGV}
|
||||||
|
|
||||||
zfind:
|
zfind:
|
||||||
ldr r1,[r0],#NBPW
|
ldr r1,[r0],#NBPW
|
||||||
cmp r1,#0; bne zfind
|
cmp r1,#0; bne zfind
|
||||||
@@ -322,7 +535,7 @@ L610: @ each word
|
|||||||
mov r0,#'\n'; strb r0,[r2],#1
|
mov r0,#'\n'; strb r0,[r2],#1
|
||||||
sub r2,r2,sp @ count
|
sub r2,r2,sp @ count
|
||||||
mov r1,sp @ buf
|
mov r1,sp @ buf
|
||||||
mov r0,#2 @ FD_STDERR
|
mov r0,#FD_stderr
|
||||||
#if defined(ARMEL_EABI4) /*{*/
|
#if defined(ARMEL_EABI4) /*{*/
|
||||||
mov r7,#__NR_write
|
mov r7,#__NR_write
|
||||||
swi 0
|
swi 0
|
||||||
|
|||||||
@@ -255,6 +255,17 @@ r_elfa .req r9
|
|||||||
add sp,sp,#MAX_ELF_HDR_32 + OVERHEAD @ un-alloca
|
add sp,sp,#MAX_ELF_HDR_32 + OVERHEAD @ un-alloca
|
||||||
str r0,[sp,#F_ENTR] @ entry address
|
str r0,[sp,#F_ENTR] @ entry address
|
||||||
|
|
||||||
|
#if TEST_SIGSEGV
|
||||||
|
// Uninstall SIGSEGV handler
|
||||||
|
SIGSEGV= 11
|
||||||
|
__NR_rt_sigaction= 67
|
||||||
|
mov arg4,#0
|
||||||
|
mov arg3,#0 // no old
|
||||||
|
mov arg2,#0 // no new
|
||||||
|
mov arg1,#SIGSEGV
|
||||||
|
do_sys __NR_rt_sigaction
|
||||||
|
#endif // TEST_SIGSEGV
|
||||||
|
|
||||||
// Map 1 page of /proc/self/exe so that it does not disappear
|
// Map 1 page of /proc/self/exe so that it does not disappear
|
||||||
ldr r0,[sp,#F_obinfo]; tst r0,#unmap_all_pages; bne no_map_pse
|
ldr r0,[sp,#F_obinfo]; tst r0,#unmap_all_pages; bne no_map_pse
|
||||||
mov arg6,#0 @ SEEK_SET offset
|
mov arg6,#0 @ SEEK_SET offset
|
||||||
|
|||||||
@@ -140,6 +140,13 @@ wszuf .req w21
|
|||||||
xszuf .req x21
|
xszuf .req x21
|
||||||
xFOLD .req x20
|
xFOLD .req x20
|
||||||
wPrivAnon .req w19
|
wPrivAnon .req w19
|
||||||
|
cancel_SEGV .req x18
|
||||||
|
|
||||||
|
D_PMASK= 0*NBPW
|
||||||
|
D_XSIGSEGV= 1*NBPW
|
||||||
|
D_GETPM= 2*NBPW
|
||||||
|
D_PRIVANON= 2*NBPW + 2*4
|
||||||
|
D_FOLD= 2*NBPW + 3*4 // .data space at start of unfold
|
||||||
|
|
||||||
// http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055b/IHI0055B_aapcs64.pdf
|
// http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055b/IHI0055B_aapcs64.pdf
|
||||||
// x18 is CLOBBERED: "The platform register"
|
// x18 is CLOBBERED: "The platform register"
|
||||||
@@ -160,9 +167,10 @@ _start: .globl _start
|
|||||||
#endif /*}*/
|
#endif /*}*/
|
||||||
stp x0,x1,[sp,#-2*NBPW]! // ABI: -static crt0 might pass data in x0,x1
|
stp x0,x1,[sp,#-2*NBPW]! // ABI: -static crt0 might pass data in x0,x1
|
||||||
ldr wPrivAnon,mflg
|
ldr wPrivAnon,mflg
|
||||||
|
adr cancel_SEGV,cancel_dummy
|
||||||
|
|
||||||
#if TEST_SIGSEGV
|
section ELFSIGSEGV
|
||||||
// install SIGSEGV handler for debugging
|
// install SIGSEGV handler for debugging hardware and de-compressor
|
||||||
SIGSEGV= 11
|
SIGSEGV= 11
|
||||||
SA_SIGINFO= 4 // /usr/include/bits/sigaction.h
|
SA_SIGINFO= 4 // /usr/include/bits/sigaction.h
|
||||||
SA_RESTORER= 0x04000000
|
SA_RESTORER= 0x04000000
|
||||||
@@ -183,6 +191,8 @@ sa_frame = 8 * NBPW
|
|||||||
mov w0,#SIGSEGV
|
mov w0,#SIGSEGV
|
||||||
do_sys __NR_sigaction
|
do_sys __NR_sigaction
|
||||||
add sp,sp,sa_frame
|
add sp,sp,sa_frame
|
||||||
|
adr cancel_SEGV,cancel_sigsegv
|
||||||
|
b L300
|
||||||
|
|
||||||
#if 0 //{ TEST ONLY
|
#if 0 //{ TEST ONLY
|
||||||
mov x0,#0xc0;mov x1,#0xc1;mov x2,#0xc2;mov x3,#0xc3;mov x4,#0xc4;mov x5,#0xc5;mov x6,#0xc6;mov x7,#0xc7
|
mov x0,#0xc0;mov x1,#0xc1;mov x2,#0xc2;mov x3,#0xc3;mov x4,#0xc4;mov x5,#0xc5;mov x6,#0xc6;mov x7,#0xc7
|
||||||
@@ -191,116 +201,7 @@ mov x16,#0xd0;mov x17,#0xd1;mov x18,#0xd2;mov x19,#0xd3;mov x20,#0xd4;mov x21,#0
|
|||||||
mov x24,#0xd8;mov x25,#0xd9;mov x26,#0xda;mov x27,#0xdb;mov x28,#0xdc;mov x29,#0xdd;mov x30,#0xde
|
mov x24,#0xd8;mov x25,#0xd9;mov x26,#0xda;mov x27,#0xdb;mov x28,#0xdc;mov x29,#0xdd;mov x30,#0xde
|
||||||
ldr x0,[x0] // cause SIGSEGV
|
ldr x0,[x0] // cause SIGSEGV
|
||||||
#endif //}
|
#endif //}
|
||||||
#endif // TEST_SIGSEGV
|
|
||||||
|
|
||||||
add x0,sp,#(1+ 2)*NBPW
|
|
||||||
call zfind // avoid feint of 0==argc; out: x0= &envp
|
|
||||||
call zfind; mov xauxv,x0 // &Elf64_auxv
|
|
||||||
|
|
||||||
sub sp,sp,#4*NBPW // space for PMASK, SZPK2, ADRU, LENU
|
|
||||||
F_PMASK= 0 * NBPW
|
|
||||||
F_SZPK2= 1 * NBPW
|
|
||||||
F_ADRU= 2 * NBPW
|
|
||||||
F_LENU= 3 * NBPW
|
|
||||||
|
|
||||||
// set xPMASK by finding actual page size in Elf64_auxv
|
|
||||||
1:
|
|
||||||
ldp x1,x2,[x0],#2*NBPW
|
|
||||||
cmp w1,#AT_PAGESZ; beq 2f
|
|
||||||
cbnz w1,1b // AT_NULL
|
|
||||||
mov x2,#PAGE_SIZE // default
|
|
||||||
2:
|
|
||||||
neg xPMASK,x2 // save for folded code
|
|
||||||
str xPMASK,[sp,#F_PMASK]
|
|
||||||
|
|
||||||
call main
|
|
||||||
L00:
|
|
||||||
mov xFOLD,lr
|
|
||||||
|
|
||||||
mov w1,#MFD_EXEC // flags
|
|
||||||
0: // try memfd_create
|
|
||||||
adr x0,strupx
|
|
||||||
do_sys __NR_memfd_create
|
|
||||||
tbz w0,#31,ok_memfd // success
|
|
||||||
cbz w1,no_memfd // already failed twice
|
|
||||||
mov w1,wzr; b 0b // try again without MFD_EXEC
|
|
||||||
no_memfd: // so try /dev/shm
|
|
||||||
O_RDWR= 2
|
|
||||||
O_DIRECTORY= 040000 // 0x04000
|
|
||||||
O_TMPFILE= 020000000 // 0x400000
|
|
||||||
call 0f; .int 0700, O_RDWR|O_DIRECTORY|O_TMPFILE; .asciz "/dev/shm"
|
|
||||||
.balign 4; 0:
|
|
||||||
ldr w3,[lr],#4 // mode
|
|
||||||
ldr w2,[lr],#4 // flags
|
|
||||||
mov x1,lr // name
|
|
||||||
mov w0,#AT_FDCWD
|
|
||||||
do_sys __NR_openat
|
|
||||||
ok_memfd:
|
|
||||||
mov mfd,w0
|
|
||||||
|
|
||||||
// alloca() for de-compressed stub
|
|
||||||
ldr w0,[xFOLD,#sz_unc + LBINFO - LxFOLD] // .sz_unc of fold
|
|
||||||
mov fp,sp
|
|
||||||
sub x0,fp,x0
|
|
||||||
and x0,x0,#-2*NBPW
|
|
||||||
mov sp,x0
|
|
||||||
|
|
||||||
src .req x0
|
|
||||||
lsrc .req w1
|
|
||||||
dst .req x2
|
|
||||||
ldst .req x3
|
|
||||||
xmeth .req x4
|
|
||||||
wmeth .req w4
|
|
||||||
|
|
||||||
// Decompress folded code of this stub
|
|
||||||
mov dst,x0 // ADRU
|
|
||||||
PUSH1(x1); mov ldst,sp // &slot on stack; lzma uses for EOF
|
|
||||||
add src, xFOLD,#sz_b_info + LBINFO - LxFOLD // folded code
|
|
||||||
ldr lsrc, [XFOLD,#sz_cpr + LBINFO - LxFOLD]
|
|
||||||
ldrb wmeth,[xFOLD,#b_method + LBINFO - LxFOLD]
|
|
||||||
TRACE(#1)
|
|
||||||
call f_expand // decompress it
|
|
||||||
POP1(x8) // discard lzma EOF
|
|
||||||
|
|
||||||
.unreq src
|
|
||||||
.unreq lsrc
|
|
||||||
.unreq dst
|
|
||||||
.unreq ldst
|
|
||||||
.unreq xmeth
|
|
||||||
.unreq wmeth
|
|
||||||
|
|
||||||
str xPMASK,[sp] // propagate PAGE_MASK
|
|
||||||
|
|
||||||
// Write de-compressed stub
|
|
||||||
ldr w2,[xFOLD,#sz_unc + LBINFO - LxFOLD] // .sz_unc of fold
|
|
||||||
mov x1,sp
|
|
||||||
mov w0,mfd
|
|
||||||
do_sys __NR_write
|
|
||||||
mov sp,fp
|
|
||||||
|
|
||||||
mov arg6,#0 // beginning of file
|
|
||||||
mov arg5w,mfd
|
|
||||||
mov arg4w,#MAP_SHARED // modes
|
|
||||||
mov arg3w,#PROT_READ|PROT_EXEC // FIXME: add PROT_WRITE for DEBUG only
|
|
||||||
ldr arg2w,[xFOLD,#sz_unc + LBINFO - LxFOLD]
|
|
||||||
str arg2,[sp,#F_LENU]
|
|
||||||
mov arg1,#0 // addr (kernel chooses)
|
|
||||||
do_sys __NR_mmap; str x0,[sp,#F_ADRU]; mov xADRU,x0
|
|
||||||
|
|
||||||
mov arg1w,mfd
|
|
||||||
do_sys __NR_close
|
|
||||||
|
|
||||||
// Use the unfolded stub
|
|
||||||
ldr wLENC,[sp,#F_SZPK2]
|
|
||||||
ldr w1,[xFOLD, #LOBINFO - LxFOLD] // O_BINFO
|
|
||||||
add lr,xADRU,#3*4 + NBPW // jmp to fold_begin
|
|
||||||
sub wLENC,wLENC,w1
|
|
||||||
str xLENC,[sp,#F_SZPK2]
|
|
||||||
bic w1,w1,#unmap_all_pages
|
|
||||||
add xADRC,xelfa,x1 // &b_info of compressed input data
|
|
||||||
jr lr // goto unfolded stub
|
|
||||||
|
|
||||||
#if TEST_SIGSEGV
|
|
||||||
proc_self_cmdline:
|
proc_self_cmdline:
|
||||||
.asciz "/proc/self/cmdline"
|
.asciz "/proc/self/cmdline"
|
||||||
announce_sigaction:
|
announce_sigaction:
|
||||||
@@ -364,7 +265,7 @@ child:
|
|||||||
mov arg3w,#O_RDONLY
|
mov arg3w,#O_RDONLY
|
||||||
adr arg2,proc_self_cmdline
|
adr arg2,proc_self_cmdline
|
||||||
mov arg1,#-1 // fake FD_CWD
|
mov arg1,#-1 // fake FD_CWD
|
||||||
do_sys __NR_openat; mov r_fd,w0 // fd
|
do_sys __NR_openat; mov r_fd,w0
|
||||||
mov arg2,sp // buffer
|
mov arg2,sp // buffer
|
||||||
mov arg3w,#PATH_MAX
|
mov arg3w,#PATH_MAX
|
||||||
do_sys __NR_read
|
do_sys __NR_read
|
||||||
@@ -423,7 +324,7 @@ done_maps:
|
|||||||
mov x0,x16; do_sys __NR_close
|
mov x0,x16; do_sys __NR_close
|
||||||
// end printing of /proc/self/maps
|
// end printing of /proc/self/maps
|
||||||
|
|
||||||
mov arg1,#0; mov arg2,#0; mov arg3,#0; mov arg4,#0 // paranoia
|
mov arg1,#0; mov arg2,#0 // paranoia
|
||||||
do_sys __NR_fork; cbz x0,child
|
do_sys __NR_fork; cbz x0,child
|
||||||
parent:
|
parent:
|
||||||
b parent // spin; paused by gdb
|
b parent // spin; paused by gdb
|
||||||
@@ -434,10 +335,10 @@ unsimal: // (dst, value)
|
|||||||
strb w1,[x0] // terminator
|
strb w1,[x0] // terminator
|
||||||
ret
|
ret
|
||||||
0:
|
0:
|
||||||
mov w2,#0xcccc
|
mov w2,#0xcccd
|
||||||
movk w2, 0xcccc, lsl 16 // 0xcccccccc ==> 4/5 as 32-bit fraction
|
movk w2, 0xcccc, lsl 16 // 0xcccccccd ==> 4/5 as 32-bit fraction
|
||||||
umull x2,w1,w2
|
umull x2,w1,w2
|
||||||
add x2,x2,#0x1000 // BUG? unsimal(p, 730)
|
//add x2,x2,#0x1000 // BUG? unsimal(p, 730)
|
||||||
lsr x3,x2,35 // quo(value, 10)
|
lsr x3,x2,35 // quo(value, 10)
|
||||||
add w2,w3,w3,lsl 2 // 5 * quo
|
add w2,w3,w3,lsl 2 // 5 * quo
|
||||||
sub w1,w1,w2,lsl 1 // rem = (val - (10 * quo))
|
sub w1,w1,w2,lsl 1 // rem = (val - (10 * quo))
|
||||||
@@ -446,7 +347,131 @@ unsimal: // (dst, value)
|
|||||||
1:
|
1:
|
||||||
ldp lr,x1,[sp],#2 * NBPW; add w1,w1,#'0'; strb w1,[x0],#1
|
ldp lr,x1,[sp],#2 * NBPW; add w1,w1,#'0'; strb w1,[x0],#1
|
||||||
ret
|
ret
|
||||||
#endif // TEST_SIGSEGV
|
|
||||||
|
cancel_sigsegv:
|
||||||
|
mov x3,#8 // 8 bytes ==> 64 bits
|
||||||
|
mov x2,xzr // no old
|
||||||
|
mov x1,xzr // no new
|
||||||
|
mov w0,#SIGSEGV
|
||||||
|
do_sys __NR_sigaction
|
||||||
|
ret
|
||||||
|
|
||||||
|
L300:
|
||||||
|
|
||||||
|
section ELFMAINX2
|
||||||
|
add x0,sp,#(1+ 2)*NBPW
|
||||||
|
call zfind // avoid feint of 0==argc; out: x0= &envp
|
||||||
|
call zfind; mov xauxv,x0 // &Elf64_auxv
|
||||||
|
|
||||||
|
sub sp,sp,#4*NBPW // space for PMASK, SZPK2, ADRU, LENU
|
||||||
|
F_PMASK= 0 * NBPW
|
||||||
|
F_SZPK2= 1 * NBPW
|
||||||
|
F_ADRU= 2 * NBPW
|
||||||
|
F_LENU= 3 * NBPW
|
||||||
|
|
||||||
|
// set xPMASK by finding actual page size in Elf64_auxv
|
||||||
|
1:
|
||||||
|
ldp x1,x2,[x0],#2*NBPW
|
||||||
|
cmp w1,#AT_PAGESZ; beq 2f
|
||||||
|
cbnz w1,1b // AT_NULL
|
||||||
|
mov x2,#PAGE_SIZE // default
|
||||||
|
2:
|
||||||
|
neg xPMASK,x2 // save for folded code
|
||||||
|
str xPMASK,[sp,#F_PMASK]
|
||||||
|
|
||||||
|
adr xelfa,sz_pack2
|
||||||
|
ldr w0,[xelfa] // sz_pack2 causes unknown R_AARCH64_LD_PREL_LO19
|
||||||
|
str x0,[sp,#F_SZPK2]
|
||||||
|
sub xelfa,xelfa,w0,uxtw
|
||||||
|
call main
|
||||||
|
mov xFOLD,lr
|
||||||
|
|
||||||
|
mov w1,#MFD_EXEC // flags
|
||||||
|
0: // try memfd_create
|
||||||
|
adr x0,strupx
|
||||||
|
do_sys __NR_memfd_create
|
||||||
|
tbz w0,#31,ok_memfd // success
|
||||||
|
cbz w1,no_memfd // already failed twice
|
||||||
|
mov w1,wzr; b 0b // try again without MFD_EXEC
|
||||||
|
no_memfd: // so try /dev/shm
|
||||||
|
O_RDWR= 2
|
||||||
|
O_DIRECTORY= 040000 // 0x04000
|
||||||
|
O_TMPFILE= 020000000 // 0x400000
|
||||||
|
call 0f; .int 0700, O_RDWR|O_DIRECTORY|O_TMPFILE; .asciz "/dev/shm"
|
||||||
|
.balign 4; 0:
|
||||||
|
ldr w3,[lr],#4 // mode
|
||||||
|
ldr w2,[lr],#4 // flags
|
||||||
|
mov x1,lr // name
|
||||||
|
mov w0,#AT_FDCWD
|
||||||
|
do_sys __NR_openat
|
||||||
|
ok_memfd:
|
||||||
|
mov mfd,w0
|
||||||
|
|
||||||
|
// alloca() for de-compressed stub
|
||||||
|
ldr w0,[xFOLD,#sz_unc + LBINFO - LxFOLD] // .sz_unc of fold
|
||||||
|
mov fp,sp
|
||||||
|
sub x0,fp,x0
|
||||||
|
and x0,x0,#-2*NBPW
|
||||||
|
mov sp,x0
|
||||||
|
|
||||||
|
src .req x0
|
||||||
|
lsrc .req w1
|
||||||
|
dst .req x2
|
||||||
|
ldst .req x3
|
||||||
|
xmeth .req x4
|
||||||
|
wmeth .req w4
|
||||||
|
|
||||||
|
// Decompress folded code of this stub
|
||||||
|
mov dst,x0 // ADRU
|
||||||
|
PUSH1(x1); mov ldst,sp // &slot on stack; lzma uses for EOF
|
||||||
|
add src, xFOLD,#sz_b_info + LBINFO - LxFOLD // folded code
|
||||||
|
ldr lsrc, [XFOLD,#sz_cpr + LBINFO - LxFOLD]
|
||||||
|
ldrb wmeth,[xFOLD,#b_method + LBINFO - LxFOLD]
|
||||||
|
TRACE(#1)
|
||||||
|
call f_expand // decompress it
|
||||||
|
POP1(x8) // discard lzma EOF
|
||||||
|
|
||||||
|
.unreq src
|
||||||
|
.unreq lsrc
|
||||||
|
.unreq dst
|
||||||
|
.unreq ldst
|
||||||
|
.unreq xmeth
|
||||||
|
.unreq wmeth
|
||||||
|
|
||||||
|
str xPMASK,[sp] // propagate PAGE_MASK D_PMASK
|
||||||
|
str cancel_SEGV,[sp, #D_XSIGSEGV]
|
||||||
|
|
||||||
|
// Write de-compressed stub
|
||||||
|
ldr w2,[xFOLD,#sz_unc + LBINFO - LxFOLD] // .sz_unc of fold
|
||||||
|
mov x1,sp
|
||||||
|
mov w0,mfd
|
||||||
|
do_sys __NR_write
|
||||||
|
mov sp,fp
|
||||||
|
|
||||||
|
mov arg6,#0 // beginning of file
|
||||||
|
mov arg5w,mfd
|
||||||
|
mov arg4w,#MAP_SHARED // modes
|
||||||
|
mov arg3w,#PROT_READ|PROT_EXEC // FIXME: add PROT_WRITE for DEBUG only
|
||||||
|
ldr arg2w,[xFOLD,#sz_unc + LBINFO - LxFOLD]
|
||||||
|
str arg2,[sp,#F_LENU]
|
||||||
|
mov arg1,#0 // addr (kernel chooses)
|
||||||
|
do_sys __NR_mmap; str x0,[sp,#F_ADRU]; mov xADRU,x0
|
||||||
|
|
||||||
|
mov arg1w,mfd
|
||||||
|
do_sys __NR_close
|
||||||
|
|
||||||
|
// Use the unfolded stub
|
||||||
|
ldr wLENC,[sp,#F_SZPK2]
|
||||||
|
ldr w1,[xFOLD, #LOBINFO - LxFOLD] // O_BINFO
|
||||||
|
add lr,xADRU,#D_FOLD // jmp to fold_begin
|
||||||
|
sub wLENC,wLENC,w1
|
||||||
|
str xLENC,[sp,#F_SZPK2]
|
||||||
|
bic w1,w1,#unmap_all_pages
|
||||||
|
add xADRC,xelfa,x1 // &b_info of compressed input data
|
||||||
|
jr lr // goto unfolded stub
|
||||||
|
|
||||||
|
cancel_dummy:
|
||||||
|
ret
|
||||||
|
|
||||||
zfind:
|
zfind:
|
||||||
ldr x1,[x0],#NBPW; cbnz x1,zfind
|
ldr x1,[x0],#NBPW; cbnz x1,zfind
|
||||||
@@ -569,12 +594,8 @@ strupx:
|
|||||||
.asciz "upx"
|
.asciz "upx"
|
||||||
.balign 4
|
.balign 4
|
||||||
|
|
||||||
main:
|
main: // In: w0= sz_pack2
|
||||||
lr .req x30
|
lr .req x30
|
||||||
add xelfa,lr,#sz_pack2 - L00 // &sz_pack2
|
|
||||||
ldr w0,[xelfa]
|
|
||||||
sub xelfa,xelfa,w0,uxtw
|
|
||||||
str x0,[sp,#F_SZPK2]
|
|
||||||
callr lr
|
callr lr
|
||||||
LxFOLD:
|
LxFOLD:
|
||||||
LOBINFO:
|
LOBINFO:
|
||||||
|
|||||||
@@ -84,16 +84,16 @@ PATH_MAX= 4096
|
|||||||
#define OVERHEAD 2048
|
#define OVERHEAD 2048
|
||||||
#include "MAX_ELF_HDR.S"
|
#include "MAX_ELF_HDR.S"
|
||||||
|
|
||||||
PAGE_MASK: .quad ~0<<12 // default
|
PAGE_MASK: .quad ~0<<12 // default D_PMASK
|
||||||
get_page_mask: .globl get_page_mask
|
cancel_sigsegv: .quad 0 // D_XSIGSEGV
|
||||||
|
|
||||||
|
get_page_mask: .globl get_page_mask // D_GETPM
|
||||||
ldr x0,PAGE_MASK
|
ldr x0,PAGE_MASK
|
||||||
ret
|
ret
|
||||||
|
bits_privanon: // known offset (2*NBPW + 2*4) D_PRIVANON
|
||||||
bits_privanon: // known offset (NBPW + 2*4)
|
|
||||||
.int MAP_PRIVATE | MAP_ANONYMOUS // Linux default; else QNX
|
.int MAP_PRIVATE | MAP_ANONYMOUS // Linux default; else QNX
|
||||||
|
|
||||||
fold_begin: // known offset (NBPW + 3*4)
|
fold_begin: // known offset D_FOLD = (2*NBPW + 3*4)
|
||||||
//// bkpt // DEBUG
|
|
||||||
b L10
|
b L10
|
||||||
|
|
||||||
// In: sp/ PMASK,LENC,ADRU,LENU, x0,x1, argc,argv,...
|
// In: sp/ PMASK,LENC,ADRU,LENU, x0,x1, argc,argv,...
|
||||||
@@ -271,16 +271,8 @@ no_env_pse:
|
|||||||
add sp,sp,#MAX_ELF_HDR_64 + OVERHEAD // un-alloca
|
add sp,sp,#MAX_ELF_HDR_64 + OVERHEAD // un-alloca
|
||||||
mov xfexp,x0 // entry address
|
mov xfexp,x0 // entry address
|
||||||
|
|
||||||
#if TEST_SIGSEGV
|
ldr x0,cancel_sigsegv
|
||||||
// Uninstall SIGSEGV handler
|
blr x0 // callr
|
||||||
SIGSEGV= 11
|
|
||||||
__NR_sigaction = 0x86 // 134
|
|
||||||
mov w3,#8 // minimal byte count
|
|
||||||
mov x2,#0 // no old
|
|
||||||
mov x1,#0 // no new
|
|
||||||
mov w0,#SIGSEGV
|
|
||||||
do_sys __NR_sigaction
|
|
||||||
#endif // TEST_SIGSEGV
|
|
||||||
|
|
||||||
// Discard pages of compressed input data (includes [ADRC,+LENC) )
|
// Discard pages of compressed input data (includes [ADRC,+LENC) )
|
||||||
ldr x1,[xelfa,#p_memsz+sz_Phdr+sz_Ehdr] // Phdr[C_TEXT= 1].p_memsz
|
ldr x1,[xelfa,#p_memsz+sz_Phdr+sz_Ehdr] // Phdr[C_TEXT= 1].p_memsz
|
||||||
|
|||||||
+23
-4
@@ -2,17 +2,36 @@ file format elf64-x86-64
|
|||||||
|
|
||||||
Sections:
|
Sections:
|
||||||
Idx Name Size VMA LMA File off Algn Flags
|
Idx Name Size VMA LMA File off Algn Flags
|
||||||
0 ELFMAINX 0193 0 0 040 2**0 CONTENTS
|
0 ELFMAINX 010 0 0 040 2**0 CONTENTS
|
||||||
1 ELFMAINZ 04 0 0 01d4 2**2 CONTENTS
|
1 ELFSIGSEGV 0310 0 0 050 2**0 CONTENTS
|
||||||
|
2 ELFMAINX2 0194 0 0 0360 2**0 CONTENTS
|
||||||
|
3 ELFMAINZ 04 0 0 04f4 2**2 CONTENTS
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
0000000000000000 l d ELFMAINZ 0 ELFMAINZ
|
|
||||||
0000000000000000 l d ELFMAINX 0 ELFMAINX
|
0000000000000000 l d ELFMAINX 0 ELFMAINX
|
||||||
|
0000000000000000 l d ELFMAINX2 0 ELFMAINX2
|
||||||
|
0000000000000000 l d ELFMAINZ 0 ELFMAINZ
|
||||||
|
0000000000000000 l d ELFSIGSEGV 0 ELFSIGSEGV
|
||||||
0000000000000000 g ELFMAINX 0 _start
|
0000000000000000 g ELFMAINX 0 _start
|
||||||
0000000000000000 *UND* 0 O_BINFO
|
0000000000000000 *UND* 0 O_BINFO
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
0000000000000073 R_X86_64_PC32 ELFMAINZ+0xfffffffffffffffc
|
000000000000000c R_X86_64_PC32 ELFMAINX2+0x0000000000000158
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [ELFSIGSEGV]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000000000000a2 R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||||
|
0000000000000250 R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||||
|
0000000000000262 R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||||
|
000000000000026a R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||||
|
00000000000002a5 R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||||
|
00000000000002bf R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||||
|
00000000000002d4 R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [ELFMAINX2]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
000000000000005e R_X86_64_PC32 ELFMAINX+0xfffffffffffffff8
|
||||||
|
000000000000006a R_X86_64_PC32 ELFMAINZ+0xfffffffffffffffc
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [ELFMAINZ]:
|
RELOCATION RECORDS FOR [ELFMAINZ]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
|
|||||||
+8
-8
@@ -8,14 +8,14 @@ Linker script and memory map
|
|||||||
|
|
||||||
0x0000000000000040 . = SIZEOF_HEADERS
|
0x0000000000000040 . = SIZEOF_HEADERS
|
||||||
|
|
||||||
.text 0x0000000000000000 0x9cd
|
.text 0x0000000000000000 0x9d9
|
||||||
.text 0x0000000000000000 0x165 tmp/amd64-linux.elf-fold.o
|
.text 0x0000000000000000 0x173 tmp/amd64-linux.elf-fold.o
|
||||||
0x000000000000015d get_page_mask
|
0x000000000000016b get_page_mask
|
||||||
*fill* 0x0000000000000165 0x3 00
|
*fill* 0x0000000000000173 0x1 00
|
||||||
.text 0x0000000000000168 0x0 tmp/amd64-expand.o
|
.text 0x0000000000000174 0x0 tmp/amd64-expand.o
|
||||||
.text 0x0000000000000168 0x865 tmp/amd64-linux.elf-main2.o
|
.text 0x0000000000000174 0x865 tmp/amd64-linux.elf-main2.o
|
||||||
0x0000000000000898 upx_main2
|
0x00000000000008a4 upx_main2
|
||||||
0x00000000000002c6 underlay
|
0x00000000000002d2 underlay
|
||||||
|
|
||||||
UMF_LINUX 0x0000000000000000 0xf9
|
UMF_LINUX 0x0000000000000000 0xf9
|
||||||
UMF_LINUX 0x0000000000000000 0xf9 tmp/amd64-linux.elf-upxfd_linux.o
|
UMF_LINUX 0x0000000000000000 0xf9 tmp/amd64-linux.elf-upxfd_linux.o
|
||||||
|
|||||||
+68
-61
@@ -2,53 +2,86 @@ file format elf32-littlearm
|
|||||||
|
|
||||||
Sections:
|
Sections:
|
||||||
Idx Name Size VMA LMA File off Algn Flags
|
Idx Name Size VMA LMA File off Algn Flags
|
||||||
0 ELFMAINY 0 0 0 034 2**0 CONTENTS
|
0 ELFSIGSEGV 0 0 0 034 2**0 CONTENTS
|
||||||
1 HUMF_A 04 0 0 034 2**0 CONTENTS
|
1 ELFMAINX2 0234 0 0 034 2**2 CONTENTS
|
||||||
2 HUMF_L 04 0 0 038 2**0 CONTENTS
|
2 ELFMAINY 0 0 0 0268 2**0 CONTENTS
|
||||||
3 UMF_ANDROID 0544 0 0 03c 2**2 CONTENTS
|
3 HUMF_A 04 0 0 0268 2**0 CONTENTS
|
||||||
4 UMF_LINUX 0144 0 0 0580 2**2 CONTENTS
|
4 HUMF_L 04 0 0 026c 2**0 CONTENTS
|
||||||
5 ELFMAINX 0264 0 0 06c4 2**2 CONTENTS
|
5 UMF_ANDROID 0544 0 0 0270 2**2 CONTENTS
|
||||||
6 ELFMAINZ 0218 0264 0264 0928 2**0 CONTENTS
|
6 UMF_LINUX 0144 0 0 07b4 2**2 CONTENTS
|
||||||
|
7 ELFMAINX 028 0 0 08f8 2**0 CONTENTS
|
||||||
|
8 ELFMAINZ 0218 028 028 0920 2**0 CONTENTS
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
|
00000000 l d ELFMAINX2 0 ELFMAINX2
|
||||||
00000000 l d UMF_ANDROID 0 UMF_ANDROID
|
00000000 l d UMF_ANDROID 0 UMF_ANDROID
|
||||||
00000000 l d UMF_LINUX 0 UMF_LINUX
|
00000000 l d UMF_LINUX 0 UMF_LINUX
|
||||||
00000000 l d ELFMAINX 0 ELFMAINX
|
00000028 l d ELFMAINZ 0 ELFMAINZ
|
||||||
00000264 l d ELFMAINZ 0 ELFMAINZ
|
00000000 l d ELFSIGSEGV 0 ELFSIGSEGV
|
||||||
00000000 l d ELFMAINY 0 ELFMAINY
|
00000000 l d ELFMAINY 0 ELFMAINY
|
||||||
00000000 l d HUMF_A 0 HUMF_A
|
00000000 l d HUMF_A 0 HUMF_A
|
||||||
00000000 l d HUMF_L 0 HUMF_L
|
00000000 l d HUMF_L 0 HUMF_L
|
||||||
00000258 g ELFMAINX 0 get_page_mask
|
00000000 l d ELFMAINX 0 ELFMAINX
|
||||||
|
00000228 g ELFMAINX2 0 get_page_mask
|
||||||
00000000 *UND* 0 MFLG
|
00000000 *UND* 0 MFLG
|
||||||
00000350 g ELFMAINZ 0 getpid
|
00000114 g ELFMAINZ 0 getpid
|
||||||
00000264 g ELFMAINX 0 upx_mmap_and_fd
|
00000234 g ELFMAINX2 0 upx_mmap_and_fd
|
||||||
0000026c g ELFMAINZ 0 memcpy
|
00000030 g ELFMAINZ 0 memcpy
|
||||||
00000000 *UND* 0 O_BINFO
|
00000000 *UND* 0 O_BINFO
|
||||||
00000404 g ELFMAINZ 0 Psync
|
000001c8 g ELFMAINZ 0 Psync
|
||||||
000002b0 g ELFMAINZ 0 mempcpy
|
00000074 g ELFMAINZ 0 mempcpy
|
||||||
0000033c g ELFMAINZ 0 ftruncate
|
00000100 g ELFMAINZ 0 ftruncate
|
||||||
00000364 g ELFMAINZ 0 lseek
|
00000128 g ELFMAINZ 0 lseek
|
||||||
000002c4 g F UMF_ANDROID 0280 upx_mmap_and_fd_android
|
000002c4 g F UMF_ANDROID 0280 upx_mmap_and_fd_android
|
||||||
00000434 g ELFMAINZ 0 mmap
|
000001f8 g ELFMAINZ 0 mmap
|
||||||
00000000 g F UMF_LINUX 0144 upx_mmap_and_fd_linux
|
00000000 g F UMF_LINUX 0144 upx_mmap_and_fd_linux
|
||||||
000003c8 g ELFMAINZ 0 uname
|
0000018c g ELFMAINZ 0 uname
|
||||||
00000000 g ELFMAINY 0 end_decompress
|
00000000 g ELFMAINY 0 end_decompress
|
||||||
000003f0 g ELFMAINZ 0 write
|
000001b4 g ELFMAINZ 0 write
|
||||||
00000314 g ELFMAINZ 0 fdatasync
|
000000d8 g ELFMAINZ 0 fdatasync
|
||||||
00000264 g ELFMAINZ 0 get_upxfn_path
|
00000028 g ELFMAINZ 0 get_upxfn_path
|
||||||
000002cc g ELFMAINZ 0 memfd_create
|
00000090 g ELFMAINZ 0 memfd_create
|
||||||
00000004 g ELFMAINX 0 _start
|
00000004 g ELFMAINX 0 _start
|
||||||
000003a0 g ELFMAINZ 0 read
|
00000164 g ELFMAINZ 0 read
|
||||||
000003dc g ELFMAINZ 0 unlink
|
000001a0 g ELFMAINZ 0 unlink
|
||||||
00000290 g ELFMAINZ 0 memset
|
00000054 g ELFMAINZ 0 memset
|
||||||
00000194 g F ELFMAINX 0c4 ucl_nrv2b_decompress_8
|
00000164 g F ELFMAINX2 0c4 ucl_nrv2b_decompress_8
|
||||||
0000042c g ELFMAINZ 0 my_bkpt
|
000001f0 g ELFMAINZ 0 my_bkpt
|
||||||
00000328 g ELFMAINZ 0 fsync
|
000000ec g ELFMAINZ 0 fsync
|
||||||
000003b4 g ELFMAINZ 0 stat
|
00000178 g ELFMAINZ 0 stat
|
||||||
0000047c g ELFMAINZ 0 cpr0
|
00000240 g ELFMAINZ 0 cpr0
|
||||||
00000300 g ELFMAINZ 0 exit
|
000000c4 g ELFMAINZ 0 exit
|
||||||
0000038c g ELFMAINZ 0 open
|
00000150 g ELFMAINZ 0 open
|
||||||
00000378 g ELFMAINZ 0 mkdir
|
0000013c g ELFMAINZ 0 mkdir
|
||||||
000002ec g ELFMAINZ 0 close
|
000000b0 g ELFMAINZ 0 close
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [ELFMAINX2]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000004 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000008 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000014 R_ARM_PC24 ELFMAINX2
|
||||||
|
0000001c R_ARM_PC24 ELFMAINX2
|
||||||
|
00000030 R_ARM_PC24 ELFMAINZ
|
||||||
|
00000068 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000078 R_ARM_PC24 upx_mmap_and_fd
|
||||||
|
00000080 R_ARM_PC24 ELFMAINX2
|
||||||
|
000000b0 R_ARM_PC24 ELFMAINX2
|
||||||
|
000000ec R_ARM_PC24 ELFMAINX2
|
||||||
|
0000015c R_ARM_PC24 ELFMAINX2
|
||||||
|
00000174 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001ac R_ARM_PC24 ELFMAINX2
|
||||||
|
000001b4 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001b8 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001c8 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001cc R_ARM_PC24 ELFMAINX2
|
||||||
|
000001d0 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001dc R_ARM_PC24 ELFMAINX2
|
||||||
|
000001ec R_ARM_PC24 ELFMAINX2
|
||||||
|
000001f0 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001f8 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000200 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000204 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000220 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000224 R_ARM_PC24 ELFMAINX2
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [HUMF_A]:
|
RELOCATION RECORDS FOR [HUMF_A]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
@@ -171,32 +204,6 @@ OFFSET TYPE VALUE
|
|||||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000000 R_ARM_ABS32 MFLG
|
00000000 R_ARM_ABS32 MFLG
|
||||||
00000010 R_ARM_PC24 ELFMAINX
|
|
||||||
00000014 R_ARM_PC24 ELFMAINX
|
|
||||||
00000020 R_ARM_PC24 ELFMAINX
|
|
||||||
00000028 R_ARM_PC24 ELFMAINX
|
|
||||||
00000058 R_ARM_PC24 ELFMAINZ
|
|
||||||
00000090 R_ARM_PC24 ELFMAINX
|
|
||||||
000000a0 R_ARM_PC24 upx_mmap_and_fd
|
|
||||||
000000a8 R_ARM_PC24 ELFMAINX
|
|
||||||
000000d8 R_ARM_PC24 ELFMAINX
|
|
||||||
00000114 R_ARM_PC24 ELFMAINX
|
|
||||||
0000018c R_ARM_PC24 ELFMAINX
|
|
||||||
000001a4 R_ARM_PC24 ELFMAINX
|
|
||||||
000001dc R_ARM_PC24 ELFMAINX
|
|
||||||
000001e4 R_ARM_PC24 ELFMAINX
|
|
||||||
000001e8 R_ARM_PC24 ELFMAINX
|
|
||||||
000001f8 R_ARM_PC24 ELFMAINX
|
|
||||||
000001fc R_ARM_PC24 ELFMAINX
|
|
||||||
00000200 R_ARM_PC24 ELFMAINX
|
|
||||||
0000020c R_ARM_PC24 ELFMAINX
|
|
||||||
0000021c R_ARM_PC24 ELFMAINX
|
|
||||||
00000220 R_ARM_PC24 ELFMAINX
|
|
||||||
00000228 R_ARM_PC24 ELFMAINX
|
|
||||||
00000230 R_ARM_PC24 ELFMAINX
|
|
||||||
00000234 R_ARM_PC24 ELFMAINX
|
|
||||||
00000250 R_ARM_PC24 ELFMAINX
|
|
||||||
00000254 R_ARM_PC24 ELFMAINX
|
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [ELFMAINZ]:
|
RELOCATION RECORDS FOR [ELFMAINZ]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
|
|||||||
+44
-37
@@ -2,25 +2,29 @@ file format elf32-littlearm
|
|||||||
|
|
||||||
Sections:
|
Sections:
|
||||||
Idx Name Size VMA LMA File off Algn Flags
|
Idx Name Size VMA LMA File off Algn Flags
|
||||||
0 ELFMAINY 0 0 0 034 2**0 CONTENTS
|
0 ELFSIGSEGV 0 0 0 034 2**0 CONTENTS
|
||||||
1 ELFMAINZ 0218 0 0 034 2**0 CONTENTS
|
1 ELFMAINX2 0234 0 0 034 2**2 CONTENTS
|
||||||
2 HUMF_A 04 0 0 024c 2**0 CONTENTS
|
2 ELFMAINY 0 0 0 0268 2**0 CONTENTS
|
||||||
3 HUMF_L 04 0 0 0250 2**0 CONTENTS
|
3 ELFMAINZ 0218 0 0 0268 2**0 CONTENTS
|
||||||
4 UMF_ANDROID 054c 0 0 0254 2**2 CONTENTS
|
4 HUMF_A 04 0 0 0480 2**0 CONTENTS
|
||||||
5 UMF_LINUX 0140 0 0 07a0 2**2 CONTENTS
|
5 HUMF_L 04 0 0 0484 2**0 CONTENTS
|
||||||
6 ELFMAINX 0264 0 0 08e0 2**2 CONTENTS
|
6 UMF_ANDROID 054c 0 0 0488 2**2 CONTENTS
|
||||||
|
7 UMF_LINUX 0140 0 0 09d4 2**2 CONTENTS
|
||||||
|
8 ELFMAINX 028 0 0 0b14 2**0 CONTENTS
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
|
00000000 l d ELFMAINX2 0 ELFMAINX2
|
||||||
00000000 l d ELFMAINZ 0 ELFMAINZ
|
00000000 l d ELFMAINZ 0 ELFMAINZ
|
||||||
00000000 l d UMF_ANDROID 0 UMF_ANDROID
|
00000000 l d UMF_ANDROID 0 UMF_ANDROID
|
||||||
00000000 l d UMF_LINUX 0 UMF_LINUX
|
00000000 l d UMF_LINUX 0 UMF_LINUX
|
||||||
00000000 l d ELFMAINX 0 ELFMAINX
|
00000000 l d ELFSIGSEGV 0 ELFSIGSEGV
|
||||||
00000000 l d ELFMAINY 0 ELFMAINY
|
00000000 l d ELFMAINY 0 ELFMAINY
|
||||||
00000000 l d HUMF_A 0 HUMF_A
|
00000000 l d HUMF_A 0 HUMF_A
|
||||||
00000000 l d HUMF_L 0 HUMF_L
|
00000000 l d HUMF_L 0 HUMF_L
|
||||||
00000258 g ELFMAINX 0 get_page_mask
|
00000000 l d ELFMAINX 0 ELFMAINX
|
||||||
|
00000228 g ELFMAINX2 0 get_page_mask
|
||||||
00000000 *UND* 0 MFLG
|
00000000 *UND* 0 MFLG
|
||||||
000000ec g ELFMAINZ 0 getpid
|
000000ec g ELFMAINZ 0 getpid
|
||||||
00000264 g ELFMAINX 0 upx_mmap_and_fd
|
00000234 g ELFMAINX2 0 upx_mmap_and_fd
|
||||||
00000008 g ELFMAINZ 0 memcpy
|
00000008 g ELFMAINZ 0 memcpy
|
||||||
00000000 *UND* 0 O_BINFO
|
00000000 *UND* 0 O_BINFO
|
||||||
000001a0 g ELFMAINZ 0 Psync
|
000001a0 g ELFMAINZ 0 Psync
|
||||||
@@ -40,7 +44,7 @@ SYMBOL TABLE:
|
|||||||
0000013c g ELFMAINZ 0 read
|
0000013c g ELFMAINZ 0 read
|
||||||
00000178 g ELFMAINZ 0 unlink
|
00000178 g ELFMAINZ 0 unlink
|
||||||
0000002c g ELFMAINZ 0 memset
|
0000002c g ELFMAINZ 0 memset
|
||||||
00000194 g F ELFMAINX 0c4 ucl_nrv2b_decompress_8
|
00000164 g F ELFMAINX2 0c4 ucl_nrv2b_decompress_8
|
||||||
000001c8 g ELFMAINZ 0 my_bkpt
|
000001c8 g ELFMAINZ 0 my_bkpt
|
||||||
000000c4 g ELFMAINZ 0 fsync
|
000000c4 g ELFMAINZ 0 fsync
|
||||||
00000150 g ELFMAINZ 0 stat
|
00000150 g ELFMAINZ 0 stat
|
||||||
@@ -50,6 +54,35 @@ SYMBOL TABLE:
|
|||||||
00000114 g ELFMAINZ 0 mkdir
|
00000114 g ELFMAINZ 0 mkdir
|
||||||
00000088 g ELFMAINZ 0 close
|
00000088 g ELFMAINZ 0 close
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [ELFMAINX2]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000004 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000008 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000014 R_ARM_PC24 ELFMAINX2
|
||||||
|
0000001c R_ARM_PC24 ELFMAINX2
|
||||||
|
00000030 R_ARM_PC24 ELFMAINZ
|
||||||
|
00000068 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000078 R_ARM_PC24 upx_mmap_and_fd
|
||||||
|
00000080 R_ARM_PC24 ELFMAINX2
|
||||||
|
000000b0 R_ARM_PC24 ELFMAINX2
|
||||||
|
000000ec R_ARM_PC24 ELFMAINX2
|
||||||
|
0000015c R_ARM_PC24 ELFMAINX2
|
||||||
|
00000174 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001ac R_ARM_PC24 ELFMAINX2
|
||||||
|
000001b4 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001b8 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001c8 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001cc R_ARM_PC24 ELFMAINX2
|
||||||
|
000001d0 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001dc R_ARM_PC24 ELFMAINX2
|
||||||
|
000001ec R_ARM_PC24 ELFMAINX2
|
||||||
|
000001f0 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001f8 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000200 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000204 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000220 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000224 R_ARM_PC24 ELFMAINX2
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [ELFMAINZ]:
|
RELOCATION RECORDS FOR [ELFMAINZ]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
0000000c R_ARM_PC24 ELFMAINZ
|
0000000c R_ARM_PC24 ELFMAINZ
|
||||||
@@ -183,29 +216,3 @@ OFFSET TYPE VALUE
|
|||||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000000 R_ARM_ABS32 MFLG
|
00000000 R_ARM_ABS32 MFLG
|
||||||
00000010 R_ARM_PC24 ELFMAINX
|
|
||||||
00000014 R_ARM_PC24 ELFMAINX
|
|
||||||
00000020 R_ARM_PC24 ELFMAINX
|
|
||||||
00000028 R_ARM_PC24 ELFMAINX
|
|
||||||
00000058 R_ARM_PC24 ELFMAINZ
|
|
||||||
00000090 R_ARM_PC24 ELFMAINX
|
|
||||||
000000a0 R_ARM_PC24 upx_mmap_and_fd
|
|
||||||
000000a8 R_ARM_PC24 ELFMAINX
|
|
||||||
000000d8 R_ARM_PC24 ELFMAINX
|
|
||||||
00000114 R_ARM_PC24 ELFMAINX
|
|
||||||
0000018c R_ARM_PC24 ELFMAINX
|
|
||||||
000001a4 R_ARM_PC24 ELFMAINX
|
|
||||||
000001dc R_ARM_PC24 ELFMAINX
|
|
||||||
000001e4 R_ARM_PC24 ELFMAINX
|
|
||||||
000001e8 R_ARM_PC24 ELFMAINX
|
|
||||||
000001f8 R_ARM_PC24 ELFMAINX
|
|
||||||
000001fc R_ARM_PC24 ELFMAINX
|
|
||||||
00000200 R_ARM_PC24 ELFMAINX
|
|
||||||
0000020c R_ARM_PC24 ELFMAINX
|
|
||||||
0000021c R_ARM_PC24 ELFMAINX
|
|
||||||
00000220 R_ARM_PC24 ELFMAINX
|
|
||||||
00000228 R_ARM_PC24 ELFMAINX
|
|
||||||
00000230 R_ARM_PC24 ELFMAINX
|
|
||||||
00000234 R_ARM_PC24 ELFMAINX
|
|
||||||
00000250 R_ARM_PC24 ELFMAINX
|
|
||||||
00000254 R_ARM_PC24 ELFMAINX
|
|
||||||
|
|||||||
+17
-8
@@ -2,25 +2,34 @@ file format elf64-littleaarch64
|
|||||||
|
|
||||||
Sections:
|
Sections:
|
||||||
Idx Name Size VMA LMA File off Algn Flags
|
Idx Name Size VMA LMA File off Algn Flags
|
||||||
0 ELFMAINX 0228 0 0 040 2**2 CONTENTS
|
0 ELFMAINX 010 0 0 040 2**0 CONTENTS
|
||||||
1 ELFMAINY 0 0 0 0268 2**0 CONTENTS
|
1 ELFSIGSEGV 0378 0 0 050 2**2 CONTENTS
|
||||||
2 ELFMAINZ 01c 0 0 0268 2**2 CONTENTS
|
2 ELFMAINX2 0234 0 0 03c8 2**2 CONTENTS
|
||||||
|
3 ELFMAINY 0 0 0 05fc 2**0 CONTENTS
|
||||||
|
4 ELFMAINZ 0c 0 0 05fc 2**2 CONTENTS
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
0000000000000000 l d ELFMAINZ 0 ELFMAINZ
|
|
||||||
0000000000000000 l d ELFMAINX 0 ELFMAINX
|
0000000000000000 l d ELFMAINX 0 ELFMAINX
|
||||||
|
0000000000000000 l d ELFMAINX2 0 ELFMAINX2
|
||||||
|
0000000000000000 l d ELFMAINZ 0 ELFMAINZ
|
||||||
|
0000000000000000 l d ELFSIGSEGV 0 ELFSIGSEGV
|
||||||
0000000000000000 l d ELFMAINY 0 ELFMAINY
|
0000000000000000 l d ELFMAINY 0 ELFMAINY
|
||||||
0000000000000000 *UND* 0 MFLG
|
0000000000000000 *UND* 0 MFLG
|
||||||
0000000000000004 g ELFMAINX 0 _start
|
0000000000000004 g ELFMAINX 0 _start
|
||||||
000000000000014c g F ELFMAINX 0dc ucl_nrv2b_decompress_32
|
0000000000000158 g F ELFMAINX2 0dc ucl_nrv2b_decompress_32
|
||||||
0000000000000000 g ELFMAINY 0 end_decompress
|
0000000000000000 g ELFMAINY 0 end_decompress
|
||||||
0000000000000000 *UND* 0 O_BINFO
|
0000000000000000 *UND* 0 O_BINFO
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
0000000000000000 R_AARCH64_ABS32 MFLG
|
0000000000000000 R_AARCH64_ABS32 MFLG
|
||||||
000000000000003c R_AARCH64_CALL26 ELFMAINZ+0x0000000000000004
|
000000000000000c R_AARCH64_ADR_PREL_LO21 ELFMAINX2+0x0000000000000148
|
||||||
0000000000000048 R_AARCH64_ADR_PREL_LO21 ELFMAINZ
|
|
||||||
|
RELOCATION RECORDS FOR [ELFMAINX2]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
0000000000000030 R_AARCH64_ADR_PREL_LO21 ELFMAINX-0x0000000000000004
|
||||||
|
0000000000000040 R_AARCH64_CALL26 ELFMAINZ+0x0000000000000004
|
||||||
|
000000000000004c R_AARCH64_ADR_PREL_LO21 ELFMAINZ
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [ELFMAINZ]:
|
RELOCATION RECORDS FOR [ELFMAINZ]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
0000000000000018 R_AARCH64_ABS32 O_BINFO
|
0000000000000008 R_AARCH64_ABS32 O_BINFO
|
||||||
|
|||||||
+13
-13
@@ -12,19 +12,19 @@ LOAD tmp/arm64-expand.o
|
|||||||
LOAD tmp/arm64-linux.elf-main2.o
|
LOAD tmp/arm64-linux.elf-main2.o
|
||||||
OUTPUT(tmp/arm64-linux.elf-fold.bin elf64-littleaarch64)
|
OUTPUT(tmp/arm64-linux.elf-fold.bin elf64-littleaarch64)
|
||||||
|
|
||||||
.text 0x0000000000000000 0xb84
|
.text 0x0000000000000000 0xb94
|
||||||
.text 0x0000000000000000 0x2c4 tmp/arm64-linux.elf-fold.o
|
.text 0x0000000000000000 0x2d4 tmp/arm64-linux.elf-fold.o
|
||||||
0x0000000000000008 get_page_mask
|
0x0000000000000010 get_page_mask
|
||||||
0x0000000000000018 mmap_privanon
|
0x0000000000000020 mmap_privanon
|
||||||
0x0000000000000028 Psync
|
0x0000000000000030 Psync
|
||||||
0x0000000000000098 msync
|
0x00000000000000a0 msync
|
||||||
0x00000000000000a4 mmap
|
0x00000000000000ac mmap
|
||||||
0x00000000000000c0 Pprotect
|
0x00000000000000c8 Pprotect
|
||||||
0x00000000000000c0 mprotect
|
0x00000000000000c8 mprotect
|
||||||
.text 0x00000000000002c4 0x0 tmp/arm64-expand.o
|
.text 0x00000000000002d4 0x0 tmp/arm64-expand.o
|
||||||
.text 0x00000000000002c4 0x8c0 tmp/arm64-linux.elf-main2.o
|
.text 0x00000000000002d4 0x8c0 tmp/arm64-linux.elf-main2.o
|
||||||
0x00000000000009e0 underlay
|
0x00000000000009f0 underlay
|
||||||
0x0000000000000a4c upx_main2
|
0x0000000000000a5c upx_main2
|
||||||
|
|
||||||
.data 0x0000000000000000 0x0
|
.data 0x0000000000000000 0x0
|
||||||
.data 0x0000000000000000 0x0 tmp/arm64-linux.elf-fold.o
|
.data 0x0000000000000000 0x0 tmp/arm64-linux.elf-fold.o
|
||||||
|
|||||||
+44
-37
@@ -2,25 +2,29 @@ file format elf32-bigarm
|
|||||||
|
|
||||||
Sections:
|
Sections:
|
||||||
Idx Name Size VMA LMA File off Algn Flags
|
Idx Name Size VMA LMA File off Algn Flags
|
||||||
0 ELFMAINY 0 0 0 034 2**0 CONTENTS
|
0 ELFSIGSEGV 0 0 0 034 2**0 CONTENTS
|
||||||
1 ELFMAINZ 0218 0 0 034 2**0 CONTENTS
|
1 ELFMAINX2 0234 0 0 034 2**2 CONTENTS
|
||||||
2 HUMF_A 04 0 0 024c 2**0 CONTENTS
|
2 ELFMAINY 0 0 0 0268 2**0 CONTENTS
|
||||||
3 HUMF_L 04 0 0 0250 2**0 CONTENTS
|
3 ELFMAINZ 0218 0 0 0268 2**0 CONTENTS
|
||||||
4 UMF_ANDROID 0544 0 0 0254 2**2 CONTENTS
|
4 HUMF_A 04 0 0 0480 2**0 CONTENTS
|
||||||
5 UMF_LINUX 0144 0 0 0798 2**2 CONTENTS
|
5 HUMF_L 04 0 0 0484 2**0 CONTENTS
|
||||||
6 ELFMAINX 0264 0 0 08dc 2**2 CONTENTS
|
6 UMF_ANDROID 0544 0 0 0488 2**2 CONTENTS
|
||||||
|
7 UMF_LINUX 0144 0 0 09cc 2**2 CONTENTS
|
||||||
|
8 ELFMAINX 028 0 0 0b10 2**0 CONTENTS
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
|
00000000 l d ELFMAINX2 0 ELFMAINX2
|
||||||
00000000 l d ELFMAINZ 0 ELFMAINZ
|
00000000 l d ELFMAINZ 0 ELFMAINZ
|
||||||
00000000 l d UMF_ANDROID 0 UMF_ANDROID
|
00000000 l d UMF_ANDROID 0 UMF_ANDROID
|
||||||
00000000 l d UMF_LINUX 0 UMF_LINUX
|
00000000 l d UMF_LINUX 0 UMF_LINUX
|
||||||
00000000 l d ELFMAINX 0 ELFMAINX
|
00000000 l d ELFSIGSEGV 0 ELFSIGSEGV
|
||||||
00000000 l d ELFMAINY 0 ELFMAINY
|
00000000 l d ELFMAINY 0 ELFMAINY
|
||||||
00000000 l d HUMF_A 0 HUMF_A
|
00000000 l d HUMF_A 0 HUMF_A
|
||||||
00000000 l d HUMF_L 0 HUMF_L
|
00000000 l d HUMF_L 0 HUMF_L
|
||||||
00000258 g ELFMAINX 0 get_page_mask
|
00000000 l d ELFMAINX 0 ELFMAINX
|
||||||
|
00000228 g ELFMAINX2 0 get_page_mask
|
||||||
00000000 *UND* 0 MFLG
|
00000000 *UND* 0 MFLG
|
||||||
000000ec g ELFMAINZ 0 getpid
|
000000ec g ELFMAINZ 0 getpid
|
||||||
00000264 g ELFMAINX 0 upx_mmap_and_fd
|
00000234 g ELFMAINX2 0 upx_mmap_and_fd
|
||||||
00000008 g ELFMAINZ 0 memcpy
|
00000008 g ELFMAINZ 0 memcpy
|
||||||
00000000 *UND* 0 O_BINFO
|
00000000 *UND* 0 O_BINFO
|
||||||
000001a0 g ELFMAINZ 0 Psync
|
000001a0 g ELFMAINZ 0 Psync
|
||||||
@@ -40,7 +44,7 @@ SYMBOL TABLE:
|
|||||||
0000013c g ELFMAINZ 0 read
|
0000013c g ELFMAINZ 0 read
|
||||||
00000178 g ELFMAINZ 0 unlink
|
00000178 g ELFMAINZ 0 unlink
|
||||||
0000002c g ELFMAINZ 0 memset
|
0000002c g ELFMAINZ 0 memset
|
||||||
00000194 g F ELFMAINX 0c4 ucl_nrv2b_decompress_8
|
00000164 g F ELFMAINX2 0c4 ucl_nrv2b_decompress_8
|
||||||
000001c8 g ELFMAINZ 0 my_bkpt
|
000001c8 g ELFMAINZ 0 my_bkpt
|
||||||
000000c4 g ELFMAINZ 0 fsync
|
000000c4 g ELFMAINZ 0 fsync
|
||||||
00000150 g ELFMAINZ 0 stat
|
00000150 g ELFMAINZ 0 stat
|
||||||
@@ -50,6 +54,35 @@ SYMBOL TABLE:
|
|||||||
00000114 g ELFMAINZ 0 mkdir
|
00000114 g ELFMAINZ 0 mkdir
|
||||||
00000088 g ELFMAINZ 0 close
|
00000088 g ELFMAINZ 0 close
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [ELFMAINX2]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000004 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000008 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000014 R_ARM_PC24 ELFMAINX2
|
||||||
|
0000001c R_ARM_PC24 ELFMAINX2
|
||||||
|
00000030 R_ARM_PC24 ELFMAINZ
|
||||||
|
00000068 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000078 R_ARM_PC24 upx_mmap_and_fd
|
||||||
|
00000080 R_ARM_PC24 ELFMAINX2
|
||||||
|
000000b0 R_ARM_PC24 ELFMAINX2
|
||||||
|
000000ec R_ARM_PC24 ELFMAINX2
|
||||||
|
0000015c R_ARM_PC24 ELFMAINX2
|
||||||
|
00000174 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001ac R_ARM_PC24 ELFMAINX2
|
||||||
|
000001b4 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001b8 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001c8 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001cc R_ARM_PC24 ELFMAINX2
|
||||||
|
000001d0 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001dc R_ARM_PC24 ELFMAINX2
|
||||||
|
000001ec R_ARM_PC24 ELFMAINX2
|
||||||
|
000001f0 R_ARM_PC24 ELFMAINX2
|
||||||
|
000001f8 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000200 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000204 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000220 R_ARM_PC24 ELFMAINX2
|
||||||
|
00000224 R_ARM_PC24 ELFMAINX2
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [ELFMAINZ]:
|
RELOCATION RECORDS FOR [ELFMAINZ]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
0000000c R_ARM_PC24 ELFMAINZ
|
0000000c R_ARM_PC24 ELFMAINZ
|
||||||
@@ -181,29 +214,3 @@ OFFSET TYPE VALUE
|
|||||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000000 R_ARM_ABS32 MFLG
|
00000000 R_ARM_ABS32 MFLG
|
||||||
00000010 R_ARM_PC24 ELFMAINX
|
|
||||||
00000014 R_ARM_PC24 ELFMAINX
|
|
||||||
00000020 R_ARM_PC24 ELFMAINX
|
|
||||||
00000028 R_ARM_PC24 ELFMAINX
|
|
||||||
00000058 R_ARM_PC24 ELFMAINZ
|
|
||||||
00000090 R_ARM_PC24 ELFMAINX
|
|
||||||
000000a0 R_ARM_PC24 upx_mmap_and_fd
|
|
||||||
000000a8 R_ARM_PC24 ELFMAINX
|
|
||||||
000000d8 R_ARM_PC24 ELFMAINX
|
|
||||||
00000114 R_ARM_PC24 ELFMAINX
|
|
||||||
0000018c R_ARM_PC24 ELFMAINX
|
|
||||||
000001a4 R_ARM_PC24 ELFMAINX
|
|
||||||
000001dc R_ARM_PC24 ELFMAINX
|
|
||||||
000001e4 R_ARM_PC24 ELFMAINX
|
|
||||||
000001e8 R_ARM_PC24 ELFMAINX
|
|
||||||
000001f8 R_ARM_PC24 ELFMAINX
|
|
||||||
000001fc R_ARM_PC24 ELFMAINX
|
|
||||||
00000200 R_ARM_PC24 ELFMAINX
|
|
||||||
0000020c R_ARM_PC24 ELFMAINX
|
|
||||||
0000021c R_ARM_PC24 ELFMAINX
|
|
||||||
00000220 R_ARM_PC24 ELFMAINX
|
|
||||||
00000228 R_ARM_PC24 ELFMAINX
|
|
||||||
00000230 R_ARM_PC24 ELFMAINX
|
|
||||||
00000234 R_ARM_PC24 ELFMAINX
|
|
||||||
00000250 R_ARM_PC24 ELFMAINX
|
|
||||||
00000254 R_ARM_PC24 ELFMAINX
|
|
||||||
|
|||||||
Reference in New Issue
Block a user