首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux下Shellcode编写

学习自:《Penetration Testing with Shellcode》 基本过程是首先使用汇编通过系统调用的方式实现程序功能,编译成可执行文件,然后使用 objdump 进行机器码提取 Hello...0 syscall 使用 objdump 提取 shellcode,这一长串的魔法般的正则我就不解释了我也不会 yichen@ubuntu:~$ objdump -M intel -D hello-world.../test shellcode length:2 t 因为 shellcode 中存在一些 \x00,我们称为:bad character,它会使字符串截断,就没有后面什么事情了,所以要想办法消除这些...写个shell 学会了这些基本的消除 bad character 的方法之后来写个真正的 shellcode 试试, 一个可以获得 shell 的 C 语言代码如下 char *const argv[]...rax 作为截断 push rdi mov rsi,rsp 以及系统调用号是 59,最后加一个 syscall add rax,59 syscall 把提取的 shellcode 放到之前的代码中编译~

2.3K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    msf生成的shellcode分析--走,组团分析shellcode呀

    的这个payload,本着一定要知道利用代码是怎么运行的想法,开始对该shellcode的详细分析。...实验环境 • 虚拟机:Kali Linux 2022.1 x64 • 物理机:Windows 10 21H2 家庭版 • 软件:x86dbg,scdbg,windbg,010 Editor 生成shellcode...使用Kali Linux生成shellcode: ┌──(selph㉿kali)-[~/桌面/shellcode] └─$ msfvenom -p windows/exec cmd=calc.exe...shellcode本身的地址,通过硬编码偏移获得shellcode末尾的字符串“calc.exe”,然后入栈3个参数call ebp(ebp的值是刚刚call进来的call指令的下一行) shellcode...,去依次调用接下来要调用的函数:GetVersion,ExitProcess 这里shellcode最后这个call ebp之后的内容,不是指令,是我们调用函数的字符串参数“calc.exe” 到这里shellcode

    2.8K00

    shellcode 开发

    ,这就是内存里的空间换时间 对齐的方式有很多,上面说的就是以一层楼(4字节,32位)为对齐方式 很明显,如果13层楼只占用了1个字节(8位),那么你的东西至少会放在14楼开始的地方,但是你的东西只有...shellcode,如果注释掉,如果换成下面我注释的那四行代表生成 64 位 exe。...加载 shellcode,可以自己写,也可以用这个项目里的 runshc64.exe 测试一下 https://github.com/hasherezade/pe_to_shellcode。...0x04 shellcode 退出 shellcode 执行完相应的功能,退出的方式有以下几种: 调用 kernel32!ExitProcess,适合直接终止整个程序 调用 kernel32!...之后的地方继续执行,会出现访问异常,这个调了一下,发现是 shellcode 执行过程把 rsi 寄存器改了,所以解决办法就是像 rbp 一样,先保存一下,最后恢复回去: push rsi

    74730

    Shellcode 技术

    由于我们正在加密 shellcode,我们的二进制文件的熵相当高,这清楚地表明二进制文件中的代码部分被混淆了。...我们可以通过延迟执行我们的 shellcode 来滥用这个限制。简单地计算一个大素数是我个人的最爱。您可以更进一步,确定性地计算一个质数,并将该数字用作加密 shellcode 的(一部分)密钥。...简而言之,他的方法调整了典型 shellcode 加载器的以下行为: 与其分配一大块内存并直接将 ~250KB 植入 shellcode 写入该内存,不如分配小的连续块,例如 shellcode 写入分配的内存页面。 在上述每个操作之间引入延迟。这将增加执行 shellcode 所需的时间,但也会使连续执行模式变得不那么突出。...通过检查可疑进程中线程的返回地址,可以很容易地识别出我们的植入 shellcode。为了避免这种情况,想打破返回地址和shellcode之间的这种联系。Sleep()我们可以通过挂钩函数来做到这一点。

    1.6K20

    ShellCode生成框架

    这里先写个简单的静态加载到exe文件中,明天再来写个动态的 因为vs编译后自己会生成很多东西,我们稍微配置下 ? ?...看下偏移是400然后我们ue打开然后找到对应得偏移地址复制这个16进制就是我们需要的shellcode,然后把shellcode插入到进程中执行就可以了,这里我们可以静态得插入到未执行得exe文件中,或者动态的插入到正在执行得进程的内存中...这里是29行+4个,我用以前写的端口扫描做测试 先看看入口的文件偏移 ?...修改同样大小他shellcode替换了,所以只要运行这个exe就会运行我们的shellcode ? 然后我们保存运行 ?...说明我们的shellcode插入了这个exe中,执行他就执行了我们的shellcode 我们也可以把他shellcode生成为一个bin文件再写个加载器运行。

    83230

    ShellCode注入原理

    可以看到可读可写不可执行,修改保存就行了 因为shellcode在程序的全局区,没有可执行权限,代码所在内存必须可读可执行,但是重新编译不行,因为重新编译了就变了,所以还可以在当前程序申请一块可写可读可执行的代码区...0C6916Ch,他们之间是有强烈的依赖关系,所以我们如果直接把代码抽出来是无法利用的 ?...所以如果上面我们想要执行成功就要处理掉相关依赖,比如相关函数的地址,字符串地址 自己重定位了,shellcode:一段与地址无关的代码,只要把它放在任意32位程序中只要给他一个起点就能执行 所以我们要先开辟空间然后再写入...,这里shellcode为32位所以我们需要获取的也是32位的 //获取快照 HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS...: 定义控制台应用程序的入口点。

    1K20

    FUD-UUID-Shellcode:一款基于C++的Shellcode注入工具

    关于FUD-UUID-Shellcode FUD-UUID-Shellcode是一款功能强大的Shellcode注入工具,该工具基于C++语言开发,并使用了异或XOR加密技术UUID字符串混淆来尝试绕过...工作机制 Shellcode生成 首先,该工具会以二进制源码的形式生成一个Payload(使用CobaltStrike或msfvenom),以msfvenom举例,我们可以通过下列方式生成一个Payload...: msfvenom -p windows/messagebox -f raw -o shellcode.bin (向右滑动,查看更多) 然后工具会使用提供的Python 3脚本(bin_to_uuid.py.../bin_to_uuid.py -p shellcode.bin > uuid.txt 接下来,工具会使用另一个Python 3脚本(xor_encryptor.py)对uuid.txt中的UUID字符串进行异或...Shellcode注入执行 该工具实现的Shellcode注入技术由以下几个步骤序列组成: 1、使用VirtualAlloc给Payload的执行和持久化分配虚拟内存; 2、使用xor键值对Payload

    78270

    shellcode编写指南

    前言 linux的shellcode就不用说了,直接通过一个int 0x80系统调用,指定想调用的函数的系统调用号(syscall),传入调用函数的参数,即可,懂的都懂。...编写shellcode 3.1 c++库文件配合内联汇编 先来针对指定系统的shellcode的编写,指定系统的,我们首先通过LoadLibraryA函数导入相应的dll文件,获得一个dll句柄,在把这个...,然后就天高任鸟飞了,实际的shellcode可能实际就封装成一个函数调用了 通过调试,需要去除push 0x0 这样的汇编会出现\x00这样的空字节,会截断字符串,所以用了一个push 寄存器来代替,...,代码逻辑很简单,就是要注意其中的堆栈平衡即可,从整个shellcode来看,前面找GetProcAddress和LoadLibraryA这两个函数是固定的,只要找到这两个,我们就能利用它们来查找任意的函数来执行...很麻烦,然后自己用c++写了个小程序,用nasm来把汇编代码编译成机器码,实际效果: 在_asm文件中放入我们写好的shellcode,当然你也可以指定其他文件名: ?

    1.6K10

    BattlEye Shellcode更新

    随着时间的流逝,防tic剂会发生变化,功能会不断变化,以最大限度地提高产品的效率。...一年前,我在我的博客上完整撰写了BattlEye的shellcode,这篇文章仅反映了对所说的shellcode所做的更改。...窗口标题 在先前的分析中,使用窗口名称标记了许多不同的作弊提供者,但是从那以后,shellcode不再检查那些窗口标题。...报告机制还发送有关该模块的一些基本信息,最有可能用于区分作弊行为与BattlEye服务器上的冲突。 7拉链 作弊场景的成员已将7-Zip广泛用作并且现在仍在使用中,它们是代码腔的内存中的占位符。...他们的解决办法?将检查移位8个字节,并继续使用相同的不良完整性检查方法。可执行部分是只读的,并且您要做的就是从磁盘加载7-Zip,并将重新定位的部分相互比较,如果有任何出入之处,那是错误的。

    2.3K560

    Shellcode-Encryptor:一款功能强大的Shellcode加密解密执行工具

    关于Shellcode-Encryptor Shellcode-Encryptor是一款功能强大的Shellcode加密、解密和执行工具,在该工具的帮助下,广大研究人员可以通过尝试利用Shellcode...从技术实现上来看,Shellcode-Encryptor使用了PowerShell来将源代码注入至内存中,这也是一种最有效的方法,并以此来实现绕过。...Shellcode-Encryptor能够生成一个经过Base64编码和AES加密的Shellcode,研究人员可以通过在目标Windows主机上运行这个Shellcode来实现反病毒产品的绕过。...项目下的meterpreter_encryptor.py主要负责创建经过Base64编码和AES加密的Shellcode: root@kali:~# ....antiscan.me的扫描结果: 项目地址 https://github.com/plackyhacker/Shellcode-Encryptor 参考资料 https://github.com/plackyhacker

    2.3K40

    Python内存加载shellcode

    0x00:原理 大部分脚本语言加载 shellcode 其实都是通过 c 的 ffi 去调用操作系统的api,其实并没有太多的技巧在里面,明白了原理,只需要查一下对应的脚本语言怎么调用 c 即可...那么我们只需要明白 c 通常是怎么加载 shellcode 的即可一通百通. 那么 c 是怎么加载 shellcode 呢,我们直接从汇编开始探究....shellcode 这个东西我们明白是一串可执行的二进制(一般可执行文件的拥有可执行权限的section为.text),那么我们先通过其他的手段开辟一片拥有可读可写可执行权限的区域放入我们的 shellcode...,然后跳转到 shellcode 首地址去执行就行了,汇编里面改变eip(即当前指令的下一条即将运行指令的虚拟地址)的方法有不少,最简单的就是直接 jmp 过去了.也就是写成伪码 大概意思就是 lea...这里也写一段伪码(因为本文的重点并不是在于 c 代码的编写) 那么按照刚才的思路,先申请一块可执行的内存,放入 shellcode 然后跳转过去执行即可. // shellcode unsigned char

    2.5K30
    领券
    首页
    学习
    活动
    专区
    圈层
    工具