⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i386-linux.elf.execve-fold.s

📁 UPX 源代码
💻 S
字号:
/*;  i386-linux.elf.execve-fold.S -- linkage to C code to process Elf binary;;  This file is part of the UPX executable compressor.;;  Copyright (C) 2000-2007 John F. Reiser;  All Rights Reserved.;;  UPX and the UCL library are free software; you can redistribute them;  and/or modify them under the terms of the GNU General Public License as;  published by the Free Software Foundation; either version 2 of;  the License, or (at your option) any later version.;;  This program is distributed in the hope that it will be useful,;  but WITHOUT ANY WARRANTY; without even the implied warranty of;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the;  GNU General Public License for more details.;;  You should have received a copy of the GNU General Public License;  along with this program; see the file COPYING.;  If not, write to the Free Software Foundation, Inc.,;  59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.;;  Markus F.X.J. Oberhumer              Laszlo Molnar;  <mfx@users.sourceforge.net>          <ml1050@users.sourceforge.net>;;  John F. Reiser;  <jreiser@users.sourceforge.net>;*/#include "arch/i386/macros.S"// control just falls through, after this part and compiled C code// are uncompressed.#define szElf32_Ehdr 0x34#define szElf32_Phdr 8*4#define e_entry  (16 + 2*2 + 4)#define p_vaddr  2*4#define p_memsz  5*4#define szl_info 12#define szp_info 12fold_begin:  // enter: %ebx= &Elf32_Ehdr of this program                pop     eax                 // Pop the argument count                mov     ecx, esp            // argv starts just at the current stack top                lea     edx, [esp+eax*4+4]  // envp = &argv[argc + 1]                mov edi, [ebx + e_entry]                lea esi, [ebx + szElf32_Ehdr + 2*szElf32_Phdr + szl_info]                sub edi, esi  // length                lea ebx, [2 + ebp]  // f_unfilter, maybe                pusha  // (cprLen, cprSrc, f_decpr, xx, f_unf, envp, argv, argc).extern upx_main                call    upx_main            // Call the UPX main function                hlt                         // Crash if somehow upx_main does return#define __NR_mmap 90mmap: .globl mmap        push ebx        lea ebx, [2*4 + esp]        push __NR_mmap        pop eax        int 0x80        pop ebx        ret// vi:ts=8:et:nowrap

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -