selph
selph
发布于 2023-04-04 / 178 阅读
0
0

PowerISO v6.7 破解分析

PowerISO v6.7 破解分析

软件基本信息

软件名称软件版本编程语言加壳情况难度难度说明练习日期
PowerISOv6.7C++简单2023.04.03

功能:ISO管理工具

image

破解过程:

使用调用堆栈定位验证函数

调用堆栈的内容实际上就是函数的调用链,可以看到是如何一步一步调到当前函数的,由于弹窗属于是个窗口,会让弹窗函数卡住,不往后走,所以这里可以通过调用堆栈来找到是从哪里把验证失败信息传入的,然后去分析判断条件来patch使得传入弹窗函数的是验证成功信息

点击输入序列号,进入注册界面,然后随便输入用户名,密码输满,有格式的密码一般会把输入上限设置为合法值

image

弹窗失败消息的时候,去追溯调用堆栈:

image

跳过系统模块的调用,一个一个看用户模块的调用信息,先看第一个,poweriso.sub_566960+104

image

找到函数头下断点:

image

发现这个函数就是弹窗失败信息的,失败信息是从上一层传入的,所以接下来再往上一层看看:

image

64位程序是通过寄存器传参的,可以看到这里rcx的参数里已经写好失败信息了,经测试,这里的两个分支语句都会弹窗失败信息

继续向上追:

image

是这里没错了,可以看到注册成功的信息,也可以看到跳转条件来自这个函数,且这个函数的参数正是我们输入的用户名和序列号

所以这就是个验证函数

接下来patch一下就好了

patch验证函数完成暴力破解

可以看到,验证函数返回0会进入失败分支,需要rax的返回值不为0

image

这里只需要强制修改选中的jne为jmp即可,即可走向验证成功的分支,返回1

再次打开程序:

image

这个弹窗依然在,但实际上注册已经完成了:

image

使用Resource Hacker去除Nag

找到这个弹窗对应的Dialog,然后右键删除即可

image


评论