selph
selph
发布于 2023-03-11 / 91 阅读
0
0

GIF Movie Gear v4.3 破解分析


title: GIF Movie Gear v4.3 破解分析 date: 2023-02-17T12:42:57Z lastmod: 2023-02-17T15:31:14Z


GIF Movie Gear v4.3 破解分析

软件基本信息

软件名称软件版本编程语言加壳情况难度难度说明练习日期
GIF Movie Gearv4.3C++无壳简单定位和算法都很简单2023.02.17

功能:gif movie gear 是一款专业的GIF动图制作工具,软件体积小巧,界面简单,使用这款软件可以帮助用户轻松制作GIF动图。

image

验证方式

重启验证:否,暗桩保护:无

注册信息:帮助里有“注册(Register Now)”按钮

注册Name和Code会保存到注册表里,启动的时候会调用验证函数

破解过程

定位到验证逻辑

随便输入,等弹窗后调试器里暂停

image

然后向上追溯,直到某一层调试器没停下来,点击确定后,调试器又断下来的地方:

image

可以看到,这里是用MessageBoxA来弹窗的,而不是直接创建了个窗口

这里没有啥判断逻辑,应该就是处理参数来弹窗的函数,接着往上追溯:

image

可以看到,前后都有jmp指令,这里应该是个分支语句,执行完分支就跳转走,向上找会跳转到当前分支的地方:

image

可以看到,这里有个函数,参数是我们输入的name和code,这个函数应该就是验证函数了,然后根据返回值来进行跳转,验证失败了返回0,跳转到刚刚的失败弹窗处了就

验证成功往下走,创建注册表项,然后赋值:

image

接下来关闭窗口,不会有任何成功提示,但是帮助页面的Register按钮会消失:

image

暴力破解

修改注册函数内部开头:

mov eax,1
retn

算法

算法分两部分:显示注册码的判断:

image

这里会去从数组里判断是否和数组里的值相同:

"mvg21951736",
"mg374604342",
"mg370534035",
"mg373465241",
"mg37NTi",
"mg372503958",
"mg379843149",
"mg370151347",
"mg370353008",
"mg372021424",
"mg375953248",
"mg379223953",
"mg373473759",
"mg378542544",
"mg370473710",
"mg37064348",
"mg378822469",
"mg374394987",
"mg371073478",
"mg379773651",
"mg371895266",
"mg373223554",
"mg377583454",
"mg37644957",
"mg370342692",
"mg376484039",
"mg376871434",
"mg370704788",
"mg377643863",
"mg377753931",
"mg379342689",
"mg374344777

如果相同了,则返回0,这应该是个黑名单过滤

正确的注册码,前4位应该是mg37,然后中间3位随意,最后4位需要和用户名计算结果相同即可

用户名部分的验证:

image

累加name的字符,然后计算一个结果,这个结果需要和code后4位相同

注册机脚本

def gen_code(name):
    code = "mg37666"
    i = 1
    name_sum = 3039
    for c in name:
        name_sum += i * ord(c)
        if name_sum > 6078:
            name_sum -= 6078
        i += 1
        if i > 10:
            i = 1
    code += str(name_sum)
    return code


if __name__ == '__main__':
    name = input("name:")
    print("code:"+gen_code(name))


评论