查壳
Ubuntu上的64位程序
第一步应该尝试运行一下
啥也不是
(这里我改了程序,原来应该是a1>1)
但是我动调发现a1值是1
我就改了判断
但是还是没什么用
也找不到a2的引用
找一下有没有什么improt调用
发现还是啥也不是
思路这里断了
刚好这个程序几个代码而已
函数看完!
这个比较像哈
但是你会发现没有什么引用?????
然后你在这个函数又可以看见报错
ida使用时碰到的一些问题_write access to const memory has been detected, th-CSDN博客
我利用了上面的方法,还是G
但是还是学到了
(设置了没用)
回到刚才
虽然这里写的 main先运行(我的理解是最前面的先运行)
但是你仔细看地址
init要在前面!
(看名字也该在前面)
那我们看看init干了啥把
嗯!
中间有个sub795
!
就是我们刚才报错的地方
(我怀疑是这个代码地址什么的,IDA歇逼了,没绕过来,比较编译器版本很多)
大致估摸一下这个就是encry吧
(re就是靠猜!)
cover提取一下数据
长度一样
有戏
看见后面这today都出来了
我还以为对了
G
错了
但是我们可以看见,前面和中间一定是没错的
我干!(1 hour later)
找到了
要进位!
这里 得到的第一个3 要进位给下一个数
所以我们这样
a='********CENSORED********'
enc=[ord(i) for i in a]
temp=0
key=[ 0x42, 0x09, 0x4A, 0x49, 0x35, 0x43, 0x0A, 0x41, 0xF0, 0x19, 0xE6, 0x0B, 0xF5, 0xF2, 0x0E, 0x0B, 0x2B, 0x28, 0x35, 0x4A, 0x06, 0x3A, 0x0A, 0x4F,]
#0, 0x410A4335494A0942, 0x0B0EF2F50BE619F0, 0x4F0A3A064A35282B, 0
for i in range(len(key)):
print(chr((key[i]+enc[i]+temp)%128),end='')
temp=(int)(((key[i]+enc[i])/128)/2)
ok,记住了,进位,TNND