upx0

这题虽然叫做upx0,但是他并没有套上upx的壳

直接解就行

从start开始

因为全是函数名

我自己重新命名了一遍(后面知道这是因为静态编译的缘故)

进入main函数

得知密文长度以及字符串加密方式

这个加密方式很好理解

不过在他*2的过程中有数据损失了

应该没有办法用正常的方式得出原密码

后面是对比较数据的一长串赋值以及比较

先动调提取个数据

然后写个脚本开始爆破就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
data=[0x00008D68, 0x00009D49, 0x00002A12, 0x0000AB1A, 0x0000CBDC, 0x0000B92B, 0x00002E32, 0x00009F59, 0x0000DDCD, 0x00009D49,
0x0000A90A, 0x00000E70, 0x0000F5CF, 0x00000A50, 0x00005AF5, 0x0000FF9F, 0x00009F59, 0x0000BD0B, 0x000058E5, 0x00003823,
0x0000BF1B, 0x000078A7, 0x0000AB1A, 0x000048C4, 0x0000A90A, 0x00002C22, 0x00009F59, 0x00005CC5, 0x00005ED5, 0x000078A7,
0x00002672, 0x00005695]
flag=''
for a in range(32):
for x in range(32,127):
b=x<<8
for j in range(8):
if b&0x8000 !=0:
b=(2*b)^0x1021
else:
b=2*b
if b&0xffff==data[a]&0xffff:
flag+=chr(x)
print(flag)

收工