xshell xftp 8 如何移除启动页的免费许可

引言

警告

本文章仅限于逆向工程技术的学习与交流,不提供下载服务,如有侵权,请联系站长。

Xshell8 开始没有标签页数的限制了,这也是一件好事,但是启动页还是需要进行邮箱认证,这就显得很麻烦,遂去掉他。

image.png

思考步骤

万物归一,x32dbg

试用字符串搜索和窗口类名没有找到关键注入点,那就从调用堆栈入手,发现关键信息
image.png

在它的判断前打个断点,再次查看堆栈信息。
image.png

其实这个就是猜了,网上看看,能不能发现有用的信息。
image.png

发现关键信息

image.png
简单理解下目标地址,检查免费用户注册,是否存在提交时间,等等,最后一个是是否最后验证并且
返回通过,那么就把jne改成je,直接到通过呢。
image.png

齐活,这虽然是一种思路,但是不具有通用性,并且我怀疑内部存在一系列的反调试代码,因为有时候暂停时间过长,就会退出程序。

通用解决方案

这里用了python脚本,算是一个补丁机。关键指令在这儿了。

import sys

okey = b"\x85\xC0\x75\x5D\x50\x6A"
nkey = b"\x85\xC0\x74\x5D\x50\x6A"


def my_help():
    print("【INFO】 请将XShell.exe 或 XFtp.exe 拖入运行")


def run(path):
    print("【INFO】 开始检查文件是否为Xshell.exe 或 Xftp.exe")
    if path.endswith("Xshell.exe"):
        print("【INFO】 文件为Xshell.exe")
    elif path.endswith("Xftp.exe"):
        print("【INFO】 文件为Xftp.exe")
    else:
        print("【ERROR】 文件不是XShell.exe 或 XFtp.exe")
        my_help()
        exit(1)
    # 保留备份文件
    print("【INFO】 正在备份文件")
    backup_path = path + ".bak"
    try:
        with open(path, 'rb') as f:
            content = f.read()
        with open(backup_path, 'wb') as f:
            f.write(content)
    except Exception as e:
        print(e)
        print("【ERROR】 备份文件失败")
        exit(1)

    print(f"【INFO】 正在修改文件:{path}")
    with open(path, 'rb') as f:
        content = f.read()
        count = content.count(okey)
        if count == 1:
            print("【INFO】 找到相应特征,执行修改")
        else:
            print("【ERROR】 未找到相应特征,文件可能被修改或特征过期,修改失败")
            exit(1)
    modified_content = content.replace(okey, nkey)
    with open(path, 'wb') as f:
        f.write(modified_content)
    print("【INFO】 修改完成")


if __name__ == "__main__":
    argv_ = sys.argv
    if len(argv_) == 2:
        run(argv_[1])
    else:
        my_help()

image.png
image.png

评论 0

还没有评论,来说点什么吧。

提交后需要审核才会公开。