UPX壳
一,直接工具脱
二,魔改壳
将其放到010editor等十六进制工具,XYU改成UPX,再进行脱壳
要改三个地方,区段名
标识
还有进阶版,去除特征码(还没遇到)
特征码1:60 BE ?? ?? ?? 00 8D BE ?? ?? ?? FF
特征码2:60 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? 57 EB 0B 90 8A 06 46 88 07 47 01 DB 75 ?? 8B 1E 83 ?? ?? 11 DB 72 ?? B8 01 00 00 00 01 DB 75
特征码3:55 FF 96 ?? ?? ?? ?? 09 C0 74 07 89 03 83 C3 04 EB ?? FF 96 ?? ?? ?? ?? 8B AE ?? ?? ?? ?? 8D BE 00 F0 FF FF BB 00 10 00 00 50 54 6A 04 53 57 FF D5 8D 87 ?? ?? 00 00 80 20 7F 80 60 28 7F 58 50 54 50 53 57 FF D5 58 61 8D 44 24 80 6A 00 39 C4 75 FA 83 EC 80
感谢https://blog.csdn.net/qq_73505302/article/details/130580670
通过string或者Code找到关键函数
z3库使用,使用向量类型定义未知数可以加快求解速度(不太会)
from z3 import *
a1 = [BitVec("num[%d]" % i, 32) for i in range(20)]
s = Solver()
s.add(
20 * a1[19] * 19 * a1[18]
+ 14 * a1[13]
+ 13 * a1[12]
+ 11 * a1[10] * 10 * a1[9]
+ 30 * a1[5]
+ 5 * a1[4]
+ a1[0]
+ 2 * a1[1]
- 3 * a1[2]
- 4 * a1[3]
- 7 * a1[6]
+ 8 * a1[7]
- 9 * a1[8]
- 12 * a1[11]
- 16 * a1[15] * 15 * a1[14]
- 17 * a1[16]
- 18 * a1[17] == 2582239)
s.add(
20 * a1[19] * 19 * a1[18]
+ 14 * a1[13]
+ 13 * a1[12]
+ 11 * a1[10]