首先查壳发现是upx壳,直接上工具脱壳
upx -d E:\桌面\7289daa8-a5d5-430e-87a0-92ce805d8f15\Youngter-drive.exe
打开是这样的程序
拉入IDA进行分析
找到主函数,发现创建了两个线程,一个StartAddress,一个sub_41119F,进去看看
这里是对我们的flag进行操作,主要函数是sub_41112C
会出现这种情况,原因是堆栈不平衡利用ida调堆栈就好
找到411A04处,在pop ebp上按alt+k
将0x4改为0x0
这样就可以进入函数分析了
这里是将输入的大写字母-38为off_418000的下标进行赋值,将小写字母-96为off_418000的下标进行赋值
看到另一个线程函数,这个函数使对字符串的加密是隔一个字加密,也就是在奇数位时加密,偶数位时不变
附上我拙劣的脚本
cipher = 'TOiZiZtOrYaToUwPnToBsOaOapsyS'
list1 = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'
flag = ''
for i in range(29):
if(i%2==0):
flag += cipher[i]
else:
if(list1.find(cipher[i])>=1 and list1.find(cipher[i])<=26):
flag += chr(list1.find(cipher[i])+96)
else:
flag += chr(list1.find(cipher[i])+38)
print(flag)