首页
社区
课程
招聘
[原创]某账本v3.7破解过程
发表于: 2026-1-2 17:20 900

[原创]某账本v3.7破解过程

2026-1-2 17:20
900

学习逆向一段时间了,还没有独自实战过,于是有了这次破解过程。


  1. 脱壳

    发现是nsPack 加壳,百度查又叫北斗程序压缩。

    上论坛查一下有没有nsPack脱壳案例,发现可以用ESP定律脱壳。

EOP:

然后使用Scylla dump下来,自动搜索IAT地址,修复IAT,但是发现运行报错。

入口函数如下

首先他会执行6798C_funcs处所有的函数地址初始化

运行报错就在这初始化函数列表里面,dump如下

大概率可能是需要特殊处理某些函数地址,可能跟下面的反调试有关。

于是放弃修复脱壳,直接x64dbg 动态 + ida 静态脱壳后dump.exe 结合分析程序注册逻辑。

  1. 找关键点

在逆向过程中,发现主体函数基本都会用到结构化异常处理SEH,形式如下

通过断点CreateWindowsExA,可以断下弹窗注册失败提示

根据栈堆,可以看到密钥和错误关键信息

排查到地址00665D94 即密钥校验的地方,这里用了混淆,导致ida分析不出来

他的特点是,执行完关键程序后,jmp到6663B4,该函数会修改线程上下文,强制改变代码执行流

执行完该函数后,会ret到下面地址,但是该处地址在ida中是上述的函数地址表中的数据。

很明显这是一段代码混淆

这里我没有尝试反混淆,我通过观察栈堆字符串来观察关键函数。

这里操作了可疑字符串,该函数是一个封装的字符串比较函数。


这里断下,F9几次,就来到了关键的字符串比较地方。123456789就是我输入的假码,56是后面拼接

使用33658643 字符串测试一下

  1. 学习

既然知道了密钥,那么分析密钥是从哪里产生的,对字符串密钥的源头下硬件写入断点,结果得到如下

L"provider=Microsoft.Jet.OLEDB.4.0;user ID=Admin;Data Source=C:\Users\k\Desktop\xxx\Data.ycd;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="ycrj970129";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False"

使用该密钥,DBeaver Ce去打开,没有看到跟注册码明显的关联表。

由于对作者的尊重,我就不放成品出来了,仅记录破解过程,学习软件防破解思路。


[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1967
活跃值: (5830)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
主程序加了北斗壳 还有个dll也加了upx
2026-1-2 18:29
0
雪    币: 106
活跃值: (523)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
考拉 主程序加了北斗壳 还有个dll也加了upx
是的
2026-1-4 14:54
0
游客
登录 | 注册 方可回帖
返回