ShareKing 发表于 2022-2-9 19:29

注册表清理软件的分析

将程序载入OD,运行,随便输入注册码

暂停程序,在堆栈窗口找压入的用户名和注册码

在下面有个 返回到 00A84462,右键->反汇编窗口跟随

上面的call就是判断注册码是否正确的call,在这个call下断点,运行程序,继续点注册按钮。断下来后F7进入这个call,F8往下跟,有个jnz,用于判断邮箱地址是否输入,如果没输入会弹对话框,为了方便起见,把它改成jmp

继续单步跟踪,把一些无用的跳转改jmp



00B4284E处有个je,此时这个跳转未实现,继续执行将会显示“Invalid license key”,因此,此处je改jmp

00B428D5处,这个je已实现,执行后会显示“Invalid license key”,不进入网络验证,因此,此处je用nop填充

F9运行程序,发现已经变成PRO版本了

保存刚才的所有修改,复制到可执行文件,再次运行时发现有自校验

再次将修改后的程序载入OD,运行,出现错误提示框后暂停程序,Alt+K查看调用堆栈

发现MessageBox来自004AD38F处的调用,右键->显示调用

在MessageBoxW上面有个跳转可以跳过,改成jmp,保存文件,自校验就去除了 到这里程序算逆向了一半,因为目前还有个问题,就是每次打开程序时都需要注册才能变成PRO版本,比较麻烦.... 猜测程序应该在启动时读取注册表或配置文件,根据注册表或配置文件中保存的注册码判断是否注册。 再次载入程序,在读注册表API下断点

多次运行程序,直到堆栈窗口出现“License Key”

Alt+K查看调用堆栈

逐级分析函数调用,在如图所示项 右键->显示调用 发现关键信息

删除读注册表断点,点击call的下一行,按F4,运行到当前位置,然后F8单步运行,在00B6F2B5处有个大跳转,如果这个跳转实现就是FREE版本,因此nop填充

紧接着的jnz改成jmp

逆向完成

VXBlSUP138 发表于 2022-2-9 19:29

感谢楼主

LSABYgo2164 发表于 2022-2-9 19:41

我觉得楼主这帖很强!

FDQLVPn 发表于 2022-2-9 19:42

谢谢分享

zvQeu064 发表于 2022-2-9 19:46

谢谢分享

LSABYgo2164 发表于 2022-2-9 19:46

感谢楼主

KbRDG16 发表于 2022-2-9 20:01

来向大佬学习

KsavJ 发表于 2022-2-9 20:04

谢谢分享

pjm123456 发表于 2022-2-9 20:04

感谢楼主分享

kZNywIf83 发表于 2022-2-9 20:10

大佬无敌
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 注册表清理软件的分析