我已经蓝屏 发表于 2021-7-21 14:01

【笔记】汇编引擎-Keystone实用手册

# 前言
本文就是写写Keystone咋用的
不涉及原理层面

# 地址
官方网站
https://www.keystone-engine.org/
Github
https://github.com/keystone-engine/keystone
我的博客(欢迎来踩)
https://kdajv.com/2021/07/21/capstoneengine/

# 介绍
Keystone是一个轻量级的多平台多架构的汇编框架,可以提供不少独特功能:
- 支持多框架:Arm, Arm64 (AArch64/Armv8), Ethereum Virtual Machine, Hexagon, Mips, PowerPC, Sparc, SystemZ & X86 (包括 16/32/64bit)。
- 干净/简单/轻量级/直观的API,同时不依赖任何架构。
- 以C/C++实现,可在众多语言里使用:Java、Masm、C#、PowerShell、Perl、Python、NodeJS、Ruby、Go、Rust、Haskell、VB6 和 OCaml。
- 原生支持Windows和\*nix系统(以下系统已确认支持:Mac OSX, Linux, \*BSD, Solaris)
- 线程安全的设计。
- 开源,具有双重许可证

# 使用
## 编译ShellCode(X86)
### Input
```python
from keystone import *
import sys

Shellcode_instruction = '''
xor        eax, eax
push        eax
push        0x68732f2f
push        0x6e69622f
mov        ebx, esp
push        eax
push        ebx
mov        ecx, esp
mov        al, 0xb
int        0x80
'''

KS = Ks(KS_ARCH_X86, KS_MODE_64)
code, count = KS.asm(Shellcode_instruction)
print(f"Source\t{code}")
print(f"Bytes\t{b''.join(map(lambda x: x.to_bytes(1, sys.byteorder), code))}")
print(f"Count\t{count}")
```
### Output
```python
Source       
Bytes        b'1\xc0Ph//shh/bin\x89\xe3PS\x89\xe1\xb0\x0b\xcd\x80'
Count        11
```


## 编译ShellCode(X86-64)
### Input
```python
from keystone import *
import sys

Shellcode_instruction = '''
xor        rdx, rdx
mov        rbx, 0x68732f6e69622f2f
shr        rbx, 0x8
push        rbx
mov        rdi, rsp
push        rax
push        rdi
mov        rsi, rsp
mov        al, 0x3b
syscall
'''

KS = Ks(KS_ARCH_X86, KS_MODE_64)
code, count = KS.asm(Shellcode_instruction)
print(f"Source\t{code}")
print(f"Bytes\t{b''.join(map(lambda x: x.to_bytes(1, sys.byteorder), code))}")
print(f"Count\t{count}")
```
### Output
```python
Source       
Bytes        b'H1\xd2H\xbb//bin/shH\xc1\xeb\x08SH\x89\xe7PWH\x89\xe6\xb0;\x0f\x05'
Count        10
```

NYSECBao 发表于 2023-4-4 10:54

感谢,最近需要shellcode的生成
页: [1]
查看完整版本: 【笔记】汇编引擎-Keystone实用手册