记本菜鸟分析暴破一款小软件
本帖最后由 tingwei3 于 2020-3-7 09:42 编辑前不久因工作需要找到一款软件(网上有3.xx的破解版),觉得很好用,但是他报毒(可能是加壳关系吧),今天就试试来破解一下最新的4.25版。
声明:本人建筑民工一枚,纯属业余爱好,文章中已隐去敏感信息,如仍对作者有冒犯,请版主删贴。
开始了:
1,软件是VB编写,无壳,运行弹注册界面,关注册界面可试用,有消息框提示功能受限。
2,od载入运行,输入假码,弹“注册失败”消息框,我断网试试,是本地验证,暂停法试试。
0044B235 .FF15 9C104000 call dword ptr ds:[<&MSVBVM60.#595>] ;msvbvm60.rtcMsgBox
0044B23B .8D4D E4 lea ecx,dword ptr ss:; 返回用户代码后停在这里
2.1,向上找跳过这里的跳转,第一次找到下图这个。
2.2,再找一有没有跳转可以跳过注册失败
修改试试,显示注册成功。
测试功能受限,重启仍是未注册,重启验证!!!
上图中je下面有个常量(这个位置什么时候赋值也值得跟踪)。
2.3,此处我思维跳跃了一下,就重新加载了程序,未运行时在 处下内存访问断点然后运行。
第一次断在729495BC F3:AB rep stos dword ptr es:
系统领空先忽略了
第二次断在00443A5F .66:C705 28C04>mov word ptr ds:,0x0
上面提到的je下一句是给常量赋值为0xffff,这里赋值为0,稍后可以试试看。
第三次断在00443A6F .0FBF0D 28C046>movsx ecx,word ptr ds:
这里用到了常量的值
第四次断在00443CA1 .0FBF15 28C046>movsx edx,word ptr ds:
这里用到了常量的值
接下来软件就跑起来了,弹注册界面,我们再试注册一次成功的看看,这个常量是否有用。无意间发现了我的假码在!!!!!
2.4,试给赋值有没有用。
重新加载了程序,未运行时在 处下内存访问断点然后运行。
第二次断下后,单步执行一行,修改 处为0xffffffff,试试看。
测试受限功能,还是受限,还发现这处被修改为0xffff0000。
3,从受限功能来看谁修改了处的值,按2.4方法修改好,测试受限功能。
3.1还是用添加按钮测试,第二次增加字符时就弹消息框了,同样用暂停法试试。
这里找到跳转,edx值要为零才跳转,这里再向上看有没有什么可分析的代码。
细看,edx值好像来自,而 值好像来自0043eda7这句的cx值,cx值又和dx值有关,而dx值又曾经用的值赋值。
3.2因为用到,这里还要试试看,栈底在这么长一段代码执行过程中有没有变化,稳妥起见,我跑了一次试试看,
测试后发现栈底确实没变(应该堆栈平衡了,学艺不精),自嘲一下。 3.3,剩下的不多啰嗦了。
把第二次断下时的赋值修改0xffff;
修改了4个修改值的方法,有参数注意怎么返回。
call 0044CA20
call 0044CC70
call 0044C920
call 0044C7A0
按上面修改后,经我简单测试,已不弹注册界面并去除了功能限制。
最后,这部分存属记事,可无视。
关于那个堆栈的赋值(类似),经我分析其实就是让cx的值为零,可按下图修改(有多处),未全测试,应该也可以去除功能限制。
本帖最后由 高锰酸钾 于 2020-3-9 09:39 编辑
我试了一下,还是可以出注册码的。你可以尝试在输入的注册码上下硬件断点。
1860425994的正确注册码6398542775-871。你试试看对不对。我也想知道我的结算结果。
机器码1变6
机器码2变4
机器码3变0
机器码4变5
机器码5变2
机器码6变9
机器码7变1
机器码8变3
机器码9变7
机器码0变8 到处都是知识盲区 路过顶一下 来学习的,谢谢分享 支持qb支付就离谱。。。
路过学习 最近正在学习这方面的知识,谢谢楼主分享。 谢谢分享,大中国就是强,人才培养刚刚的 你触碰到了我的知识盲区 {:1_893:}看看就好,不是很懂