https://download.csdn.net/download/useror/11102888 IDB下载链接
第二题
enflag=[0x62, 0x49, 0x77, 0x68, 0x72, 0x6F, 0x6F, 0x38, 0x63, 0x77,0x71, 0x67, 0x77, 0x72, 0x78, 0x75, 0x73, 0x69]
v1=[]
v2=[]
v3=[]
v7=18
flag=''
for i in range(0,len(enflag),3):
v3.append((enflag[i]^v7)-6)
v2.append((enflag[i+1]^v7)+6)
v1.append(enflag[i+2]^v7^6)
print(v7/3)
for j in range((v7/3)):
flag+=chr(v3[j])+chr(v2[j])+chr(v1[j])
print(flag)
此处学到2个坑点
IDA使用快捷键Shift+E进行字符串提取的时候 在C下会默认提取到结束字符串‘0x00’ 在使用python进行字符串填充的时候要删掉
Python2与Python3在操做除法的时候会有不同 Python3会默认为浮点型 需要注意版本的选择
第三题 Re_crypto
在获取文件之后第一意识应该先去查看文件的格式信息,此处由于直接去丢到IDA里没有发型UPX壳 思考去混淆浪费了一定时间
52破解虚拟机里运行的时候不能运行程序,而且使用它的三款脱壳机脱出来的东西有问题,但使用UPX Shell搞出来的8KB文件没有问题。。
010文件对比显示两个脱壳有大量不一样,初步怀疑是由于脱壳引擎的版本不一样导致的。此处有时间需再研究
使用OD全手脱,不使用修复工具修复OD默认修复的文件大小是38KB IDA中可正常显示,此处也有问题。
计算首尾值 新建数组(选取数据不建立数组也可以) Shift+E提取字符串
不可以乱改数组长度 会出现误会~~这里就出现了多了字节的情况
flag = ""
v4 = 0
while(1):
v8 = b[2 * v4]
if (v8 < 48 | v8 > 57):
v9 = v8 - 87
else:
v9 = v8 - 48
v10 = b[2 * v4+1]
v11 = 16 * v9
if ( v10 < 48 | v10 > 57 ):
v12 = v10 - 87
else:
v12 = v10 - 48
for v5 in range(0,127): #v5从ASCII表中遍历取值爆破
v6 = (v5 >> 4) % 16
v7 = (16 * v5 >> 4) % 16
if a[16 * v6 + v7] == (v11 + v12) ^ 0x19:
flag += chr(v5)
break
v4 += 1
if (v4 >= 35):
break
print(flag)
在IDA中可以通过选择 然后Shift+E来实现数据提取 不用添加修改数组也行
这个就是个坑~
第6题
手动添加数据快捷键Shift+Ctrl+I