tingwei3 发表于 2020-3-7 09:35

记本菜鸟分析暴破一款小软件

本帖最后由 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-7 11:49

本帖最后由 高锰酸钾 于 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

Aleshaaaa 发表于 2020-3-7 09:52

到处都是知识盲区

William10120 发表于 2020-3-7 09:57

路过顶一下

jnez112358 发表于 2020-3-7 09:57

来学习的,谢谢分享

bobowxc 发表于 2020-3-7 09:59

支持qb支付就离谱。。。

huohua1991 发表于 2020-3-7 10:00

路过学习

maruibo6217 发表于 2020-3-7 10:04

最近正在学习这方面的知识,谢谢楼主分享。

ycy0536 发表于 2020-3-7 10:05

谢谢分享,大中国就是强,人才培养刚刚的

ll996075dd 发表于 2020-3-7 10:17

你触碰到了我的知识盲区

cdt1995 发表于 2020-3-7 10:22

{:1_893:}看看就好,不是很懂
页: [1] 2 3 4 5 6
查看完整版本: 记本菜鸟分析暴破一款小软件