有壳,upx的,先脱壳,教程自己上网搜
从main函数开始
创造俩个进程,StartAddress和sub_41119F
StartAddress
里面含有一个加密处理和一个减一
看加密函数,在进 sub_411940 时会有一个报错,我这边用的IDA7.5,提示错误了,但是还是可以看到伪代码
加密函数就是大写字母-38,小写字母-96, 是off_418000 减d的.
off_418000:QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasd
下一个线程里面只有减一
最后一个函数sub_411880
就是俩个数组比较,也就可以才出来TOiZiZtOrYaToUwPnToBsOaOapsyS
就是加密后的数
现在思路出来了
也就是输入了一段字符,有俩个线程对其进行加密,而这个加密就是
大写-38,小写-96,然后-1,再-1,得到了最后的字符,就可以写脚本把一开始输入的字符串逆向出来,这边试了下,好像是先执行第二个线程的,看懂了,脚本没写出来…
脚本
off_418000 = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm"
off_418004 = "TOiZiZtOrYaToUwPnToBsOaOapsyS"
flag=''
for i in range(len(off_418004)):
if i %2 == 0:
flag += off_418004[i]
continue
for j,k in enumerate(off_418000):
if off_418004[i] == k:
if chr(j+38).isupper():
flag += chr(j+38)
else:
flag += chr(j+96)
print flag