将文件拖入ida 又又又爆红了 但是用upx脱壳却不能脱壳
查看栈帧也没有发现堆栈不平衡的情况
拖入010查看壳的情况,发现upx被改成了fuk,改回upx,然后拖入到upx中进行脱壳头
upx -d 文件地址
脱壳成功
将脱壳好的文件拖入ida中 可以发现可以正常使用了 F5查看主函数
跟进关键函数
函数中使用了一个循环,将数值 -858993460
赋值给数组 v6
中的元素
在 intrinsic_setjmp
函数调用后,函数会调用 sub_140011230(a1)
。
函数中使用了一个循环,将数值 -858993460
赋值给 v3
指向的内存位置,并递增 v3
。
根据 strlen
函数返回值,如果不等于 20
,则调用 longjmp
函数。
接着,对 a1
指向的字符数组进行一些按位异或的操作。
代码的逻辑是将dword_14001D000的字符加10异或0x50再跟0x66异或
逆向写出脚本
dword = ['4B', '48', '79', '13', '45', '30', '5C', '49', '5A', '79', '13', '70', '6D', '78', '13', '6F', '48', '5D', '64', '64']
flag = ""
for i in dword:
flag += chr(((int(i, 16) ^ 0x50) - 10) ^ 0x66)
print('flag{' + flag + '}')
flag{why_m0dify_pUx_SheLL}