知识-技巧
一些汇总
壳
压缩壳:对软件进行压缩,使其体积减小;在软件被执行的时候进行解压缩,解压缩后与加壳前程序结构相同
加密壳:对软件进行保护,使其关键代码不被逆向或者不被破解;在软件被执行后或者执行时进行解密,解密后与加壳前程序结构可能不同
加密壳保护强度划分:
PE加密壳:软件加壳后PE格式布局发生变化,解密后PE格式布局与原来不同
虚拟指令壳:虚拟机的壳,将软件二进制代码中指令进行模拟,保护强度更高
寄存器
ECX寄存器:用于循环时的计数
脱壳
寻找OEP,即原始入口点(在加壳前的入口点)
dump & 反dump & 反反dump
hook技术
Hook技术无论对安全软件还是恶意软件都是十分关键的一项技术 其本质就是劫持函数调用
在程序中可以理解为“劫持”
简单说hook技术就是在程序运行的时候经过几种技术手段来改变程序流程走向操做者指定的函数 常见的是在调用api函数时 会先运行操做者的函数 而后再进入到本来应该调用的函数上
TEA & XTEA & XXTEA加密
xtea算法是tea算法的升级版 增加了更多密钥表 移位和异或操作
xxtea算法是xtea算法的升级版 比之前两个要更复杂 也叫做Corrected Block TEA
PE文件
UPX
一种比较简单的压缩壳
主要功能是压缩PE文件 如exe dll等文件
反调试 & 反反调试
一些技巧
1:
当所需字符串过长时 可以去Hex View窗口查看数组开始地址以及结束地址
2:
.pyc文件使用在线反编译py软件
.key文件为txt加密文件 将后缀改为.txt即可
3:
CryptaCreateHash函数中 0x8004u 为标识符 此加密可用md5解决
4:
MD5函数特征码
= 1732584193 或者 = 0x67452301
= -271733879 = 0xefcdab89
= -1732584194 = 0x98badcfe
= 271733878 = 0x10325476
5:
base64表:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
base58表:
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
6:
brainfuck代码由 < > [ ] + - , .八个符号组成
[ ]括号里面为for循环
7:
TEA & XTEA & XXTEA加密特征码:
0x9e3779b9 或(和) 0x61c88647
8:
.NET文件使用dnSpy打开 编码方式为c#
9:
__gmpz_init_set_str为 GNU 高精度算法库(GNU Multiple Precision Arithmetic Library)
__gmpz_powm函数将计算 base 的 exp 次方,并对 mod 取模,最后将结果写入 rop 中
且 65537 比较敏感
所以可以确定为RSA加密算法
10:
打开python打包的exe文件:
首先使用命令(pyinstxtractor.py可自行下载)同一目录下
python pyinstxtractor.py attachment.exe
将exe文件解包
找到 login或者是main 和 struct
用winhex查看头部
将login头部缺少信息用struct头部补充
最后将login后缀改名.pyc
11:
控制流平坦化:
一段普通程序添加控制流平坦化后 效果如下图:
去除:(需要angr环境)
python3 deflat.py -f ./attachment –addr 0x400620
12:
AES加密模式-CBC判断