本帖最后由 Light紫星 于 2023-10-31 21:03 编辑
今天下午有朋友发给我一个tlw格式的文件,说是apk加密生成的,是工程宝上面用的软件,想让我解密一下。
在论坛搜索了一下,有如下未解决的帖子:能不能把tlw格式的程序转换成安卓的APK格式 - 『悬赏问答区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
于是乎,自己动手,丰衣足食。
首先,百度搜索了一下网路通工程宝相关资料,发现在某论坛上有人上传了相关的apk和tlw格式的文件。
通过猜想,估计他的应用更新是通过其他apk负责的,于是找到了如下软件
下载应用更新.apk,搜索tlw,果然搜索到一个关键字
然后发现他走到了so里面
此时,去so里面一探究竟
发现他是异或加密的,只是规则比较复杂一些。
上c++
测试解密失败,于是卡在这里很久。
后来通过分析标准zip文件和解密出来的文件的区别,发现有些部分的数据具有相似性,于是推断是不是异或的key错了,而且从这个key122可以看出,可能是版本号,于是尝试降级key,降级到109的时候,成功解密。
这个时候apk就可以打开了。
然后把脚本翻译成python
[Python] 纯文本查看 复制代码 import os
def numDecode(a1, a2, a3):
v4 = 0
if a1 == 0:
v4 = 1
if a2 <= 0:
v4 |= 1
if v4:
return -1
v5 = a2 - 1
v6 = a2
a1=list(a1)
while v5:
v5 -= 1
v7 = a1[v6-2]
a1[v6-2]=a1[v6-1]
v6=v6-1
a1[v6] =v7 ^ a3
a1[0] ^= a3
return bytes(a1)
def main():
filename='d:\\1.tlw'
file=open(filename,'rb')
t=file.read(1)
ver=b''
ver=ver+t
while(ord(t)!=59):
t=file.read(1)
ver=ver+t
print(ver)
name = file.read(4)
print(name)
#temp=file.read(0xF4)
#print(temp)
alldata=b''
#print(file.read(0x20).hex())
while(1):
s = file.read(0x400);
if(s==b''):
break
v7 = numDecode(s, len(s), 109);
alldata+=v7
open('out.apk','wb').write(alldata)
main()
尝试了一下,同样解密成功,顺便加上了加密的代码,在附件中,至此本帖结束。
题外话:似乎没有在百度上搜索到tlw格式的解密方式,感觉这可能是全网首发的tlw格式解密吧。
|