破解 Advanced Renamer
简介
Advanced Renamer
用于一次重命名多个文件和文件夹。对于个人使用,Advanced Renamer
是一款免费程序。收费版和免费版提供的是一样的功能。破解仅用于学习于交流。对于商业使用推荐购买商业许可证。
破解方式
通过修改激活服务器地址
使用x64dbg找到url的地址
计算出这段内存在文件中的偏移地址为728144
通过将这段地址修改为本地地址来模拟服务器。
68 00 74 00 74 00 70 00 3A 00 2F 00 2F 00 31 00 32 00 37 00 2E 00 30 00 2E 00 30 00 2E 00 31 00 3A 00 38 00 30 00 38 00 30 00 00 00 30 00 00
注意我们的本地地址比域名要短,需要手动填充两个字节的0字符。
打开程序以后,尝试随意输入一个激活码来进行激活,我们可以看到一个URL请求。
/license_validate.php?software_id=10&ver=3880100&license_key=<KEY>
目前我们不知道应该返回一个什么格式的json数据让app认为激活成功。所以需要想办法获取验证格式。
查看加载的链接库知道网络由winhttp
请求。查询官方手册可知网络请求获取的函数,并打断点。
重新点击注册按钮,成功命中断点。
通过调用堆栈找到对应的处理函数。
翻转ZF标志位可知地址B28CE7处是网络错误处理函数。
运行到4C5DAC
时,弹出了错误弹窗。由此推断格式判断在这里附近。
通过网络请求时的调用堆栈,可以看得出来应用启动了一个线程处理验证请求。
得到返回的格式后,直接本地模拟激活服务器。
from fastapi import FastAPI
app = FastAPI()
@app.get("/license_validate.php")
async def root():
return {"name": "name","email": "mail@example.com","licensetype": "commercial"}
此时点击激活,便会提示激活成功。
至此,激活破解完成。
通过修改跳转指令
通过上面的破解方式可以知道,注册成功后程序会创建一个名为lic.ini
的文件。该文件位于AppData
目录。通过该文件可以找到关键跳的位置。
找到系统函数CreateFile
并打断点,放行其他文件,直到第一个函数参数为
通过观察调用堆栈,可知地址 C0C32F
处为关键跳位置。
通过修改指令JZ为NZ可以跳过关键跳。不过这样如果激活了就会提示未激活,所以在这里选择填充6个NOP。
通过x64dbg计算出文件偏移为80B72F
。
将这六个字节修改为 0x09(NOP)
保存后打开程序,可以看到破解完成。
最后
本次使用的软件版本为 3.88。
二进制修改程序使用的是HxD Hex Editor
。
反汇编工具使用的是 x64dbg
。