1. pyinstall re
不知道大家看到这张图片是否熟悉
这张图片常出现在python代码通过pyinstaller打包成exe可执行程序,exe程序的图标
如果有逆向的同学们应该就知道这个。
作为逆向的一个常规套路,当然有常规的解题手段,遇到这种开头的exe文件,直接用pyinstxtractor解包,再用python反编译工具把pyc反编译成py文件
1.1 曾经的方案
注意,该方案在使用过程中需要确保你正在运行的python版本,和目标exe文件打包时的python版本是一致的(3.x版本一致),反编译出正确值
如何获取exe文件打包时的python版本?在经过1.1步骤时也能得知。
pyinstxtractor
https://github.com/extremecoders-re/pyinstxtractor
下载这个工具后,根据提示运行
python pyinstxtractor.py <filename>
即可得到解压的目录。
需要注意的是,pyinstxtractor在解压过程中会列出可能的入口函数的pyc文件,之后反编译优先反编译它们即可
uncompyle6反编译
作为若干年前的神奇,uncompyle6
给了我很多帮助,然而,uncompyle6
只支持到python3.9
版本,在python3.10
版本后,需要使用其他工具
pip install uncompyle6
安装完成后,使用
uncompyle6 target.pyc > target.py
即可
1.2 现在的方案pydumpck
https://github.com/serfend/pydumpck
一键式的解决方案,让反编译变得简单轻松
pip install pydumpck
后,使用如下命令即可轻松编译
pydumpck xxx.exe
得到的结果中含有的pyc
文件也会自动反编译响应的python
文件,方便查看~
2. pcapng报文分析
最近遇到了关于misc wireshark
抓包分析的题目,好奇一手做法
2.1 安装wireshark
话说回来,pcapng
报文本身就产生自wireshark
捕获网络流量报文
所以要想得到pcapng
报文的内容,还得用wireshark
启动分析
但是,wireshark
工具本身虽然提供了友好的用户界面,想要批量分析报文时,还是需要脚本相助
2.2 安装pyshark
pyshark
是个比较好用的python
库,用于处理wireshark
报文。
pip install pyshark
值得注意的是,pyshark默认的tshark.exe(wireshark安装时会存在)的目录在wireshark的默认目录下
使用时需要把tshark的文件路径替换成你安装的wireshakr路径
2.3 示例:提取tcp流中的payload
import pyshark
# 指定 pcap 文件路径
file_path = 'your_file_path_here.pcap'
# 创建一个 Capture 对象来读取文件
cap = pyshark.FileCapture(file_path)
# 遍历每个包
for packet in cap:
# 检查包是否包含 TCP 层
if 'TCP' in packet:
# 获取 TCP 层的 payload 属性
tcp_payload = packet.tcp.payload
# 去掉 payload 中的冒号
tcp_payload_clean = tcp_payload.replace(':', '')
print(tcp_payload_clean)
在使用wireshark
进行分析TCP
报文时,需要理解SEQ和ACK的作用:SEQ指当前发送方发送的数据起始位置序列号,ACK指的是当前发送方已经接收到的数据的末尾序列号
有了这个概念你就比较好分析报文了。
另外,wireshark追踪流是丢掉报文头部的 只保留了payload
,可以采用原始数据导出.
3. 什么是Lumina
Lumina是一种符号识别服务器
,由IDA专门推出。
Lumina可以在线识别未命名函数
3.1 如何使用Lumina
PS: 跟他类似的还有一个阿里云公开的插件 Finger
注意,在使用Finger时,不要使用科学上网!!!
4. AMXX re
因做到了原题让我感到想吐🤮
https://in1t.top/2022/06/14/justctf-2022-amxx/
不过也通过这道题了解了也行java
和gradle
的用法,也算不虚此行