[网鼎杯 2022 青龙组]fakeshell

将文件拖入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}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值