diff --git a/auto-analysis/check_version.py b/auto-analysis/check_version.py index 92e55bc..df5e8b5 100644 --- a/auto-analysis/check_version.py +++ b/auto-analysis/check_version.py @@ -1,22 +1,23 @@ -from utils import get_version, download_file, extract_file, log, DOWNLOAD_LINK +from utils import get_version, download_file, extract_file, log +from config import DOWNLOAD_LINK import os BASE_DIR = os.path.dirname(__file__) -def win_x64_version(): - url = DOWNLOAD_LINK["win"]["x64"] - dir = os.path.join(BASE_DIR, "win/x64") +def run_version(download_os, download_arch): + from_url = DOWNLOAD_LINK[download_os][download_arch] + to_dir = os.path.join(BASE_DIR, f"{download_os}/{download_arch}") - download_path = os.path.join(dir, os.path.basename(url)) - download_file(url, download_path) - extract_file(download_path, dir) - version = get_version(dir) - - open(os.path.join(dir, "LATEST_VERSION"), "w").write(version) - log.success(version) + download_path = os.path.join(to_dir, os.path.basename(from_url)) + download_file(from_url, download_path) + extract_file(download_path, to_dir) + version = get_version(to_dir) + open(os.path.join(to_dir, "LATEST_VERSION"), "w").write(version) + log.success(f"{download_os}-{download_arch} the latest version is {version}") if __name__ == '__main__': - win_x64_version() - + run_version("win", "x64") + # run_version("win", "x86") + # run_version("linux", "x64") diff --git a/auto-analysis/config.py b/auto-analysis/config.py new file mode 100644 index 0000000..d25cdd2 --- /dev/null +++ b/auto-analysis/config.py @@ -0,0 +1,20 @@ +# -*- coding:utf-8 -*- +""" +@Author: Mas0n +@File: config.py +@Time: 2022/4/4 19:50 +@Desc: It's all about getting better. +""" + + +DOWNLOAD_LINK = { + "win": { + "x86": "https://typora.io/windows/typora-setup-ia32.exe", + "x64": "https://typora.io/windows/typora-setup-x64.exe", + "arm64": "https://typora.io/windows/typora-setup-arm64.exe", + }, + "linux": { + "x64": "https://download.typora.io/linux/Typora-linux-x64.tar.gz", + "arm64": "https://download.typora.io/linux/Typora-linux-arm64.tar.gz", + }, +} \ No newline at end of file diff --git a/auto-analysis/linux/arm/LATEST_VERSION b/auto-analysis/linux/arm64/LATEST_VERSION similarity index 100% rename from auto-analysis/linux/arm/LATEST_VERSION rename to auto-analysis/linux/arm64/LATEST_VERSION diff --git a/auto-analysis/linux/x64/analysis.py b/auto-analysis/linux/x64/analysis.py new file mode 100644 index 0000000..62e4266 --- /dev/null +++ b/auto-analysis/linux/x64/analysis.py @@ -0,0 +1,32 @@ +# -*- coding:utf-8 -*- +""" +@Author: Mas0n +@Name: typora_linux_x64_analysis +@Time: 2022/4/4 19:48 +@Desc: It's all about getting better. +""" +import json +import r2pipe + + +def get_aes_key_and_iv(file_path): + r = r2pipe.open(file_path) + + r.cmd("aaa") + regex = r.cmdj("axtj @@ str.base64") + assert len(regex) == 1 + + func = regex[0]["fcn_name"] + r.cmd(f"s {func}") + asm = r.cmdj("pdfj")['ops'] + assert len(asm) != 0 + + if 'str.dip3' in json.dumps(asm): + r.cmd('s str.dip3 - 32') + data = r.cmdj('xj 48') + key = bytearray(data[0:32]) + iv = bytearray(data[32:48]) + else: + raise "need rewrite scripts for linux x64" + + return key, iv diff --git a/auto-analysis/patch.py b/auto-analysis/patch.py index a4d157b..d171ff2 100644 --- a/auto-analysis/patch.py +++ b/auto-analysis/patch.py @@ -10,4 +10,5 @@ import utils if __name__ == '__main__': utils.win_x86_run() utils.win_x64_run() + utils.linux_x64_run() diff --git a/auto-analysis/utils.py b/auto-analysis/utils.py index 4061821..5648233 100644 --- a/auto-analysis/utils.py +++ b/auto-analysis/utils.py @@ -6,23 +6,13 @@ @Desc: It's all about getting better. """ from loguru import logger as log +from config import DOWNLOAD_LINK import subprocess import json import os BASE_DIR = os.path.dirname(__file__) -DOWNLOAD_LINK = { - "win": { - "x86": "https://typora.io/windows/typora-setup-ia32.exe", - "x64": "https://typora.io/windows/typora-setup-x64.exe", - "arm": "https://typora.io/windows/typora-setup-arm64.exe", - }, - "linux": { - "x64": "https://download.typora.io/linux/Typora-linux-x64.tar.gz", - "arm": "https://download.typora.io/linux/Typora-linux-arm64.tar.gz", - }, -} def get_version(to_path): @@ -86,6 +76,14 @@ def win_x86_run(): scheduler(func=analysis, basedir=dirs, link=url) +def linux_x64_run(): + from linux.x64 import analysis + dirs = os.path.join(BASE_DIR, "linux/x64") + url = DOWNLOAD_LINK["linux"]["x64"] + scheduler(func=analysis, basedir=dirs, link=url) + + if __name__ == '__main__': win_x86_run() win_x64_run() + linux_x64_run() diff --git a/auto-analysis/win/arm/LATEST_VERSION b/auto-analysis/win/arm64/LATEST_VERSION similarity index 100% rename from auto-analysis/win/arm/LATEST_VERSION rename to auto-analysis/win/arm64/LATEST_VERSION