引言
警告
本文章仅限于逆向工程技术的学习与交流,不提供下载服务,如有侵权,请联系站长。
Xshell8 开始没有标签页数的限制了,这也是一件好事,但是启动页还是需要进行邮箱认证,这就显得很麻烦,遂去掉他。

思考步骤
万物归一,x32dbg
试用字符串搜索和窗口类名没有找到关键注入点,那就从调用堆栈入手,发现关键信息

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

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

发现关键信息

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

齐活,这虽然是一种思路,但是不具有通用性,并且我怀疑内部存在一系列的反调试代码,因为有时候暂停时间过长,就会退出程序。
通用解决方案
这里用了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()




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