XX小票打印软件分析过程

XX小票打印软件分析过程

admin
2024-01-10 / 0 评论 / 36 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年01月10日,已超过130天没有更新,若内容或图片失效,请留言反馈。

废话到此结束了,开始动手。

老规矩还是先查壳:

Test

大喜,没壳,上OD,搜索字符串,发现了有数据库连接字符串 表情

Test

找到了数据库密码为:mobcc@Ticket,往上看了下,竟然还有自毁机制!!!以及盗版提示,不得了不得了,勾起了我的兴趣

既然有了数据密码那我们就进数据库查看一下,看看有什么其他猫腻

Test

Test

发现还有访问网址。。。。。。

难道还有网络验证?都说好奇心害死猫,一点都没错,我尝试在这2个地方下断点,得到了完整地址

进行GET访问

http://soft.mobcc.cn/regist.do?harddisk=96EB2308221800FFDA274085&serialno=&version=10.2.2&whichone=2&pid=1&usetype=1&cid=1]http://soft.mobcc.cn/regist.do?h ... d=1&usetype=1&cid=1进行

Test

结果触发了暗装。。。在打开就提示我盗版错误了(手动打码)

Test

没办法还是先取出这个暗装,不然每次调试很麻烦搜索“盗版”关键字,找到这里,一看3好熟悉,不就是GET访问时返回的一个值么?

Test

是直接PUSH的一个地址,应该是个常量,那就在这个地方下断,修改一下这个常量为0

Test


Test

看下这附近有好多注册类的信息,像刚才分析的存储注册码的数据库字段,注册成功提示,标题上的【已注册】,关键还有那个很坑的网络验证下断点调试看看

Test

0041CB18  |.  8D4C24 14     lea ecx,dword ptr ss:[esp+14]
0041CB1C  |.  C687 E0130000>mov byte ptr ds:[edi+13E0],0 ;---------------------这个地方有点像之前说的那个变量标示了,前面判断好是未注册状态,然后赋值变量为0也就是逻辑“假”
0041CB23  |.  E8 608D0200   call <jmp.&MFC42.#CString::operator=_860>
0041CB28  |.  8B96 DC000000 mov edx,dword ptr ds:[esi+DC]
0041CB2E  |.  8B86 D8000000 mov eax,dword ptr ds:[esi+D8]
0041CB34  |.  8B4C24 10     mov ecx,dword ptr ss:[esp+10]
0041CB38  |.  52            push edx
0041CB39  |.  50            push eax
0041CB3A  |.  51            push ecx
0041CB3B  |.  8D5424 20     lea edx,dword ptr ss:[esp+20]
0041CB3F  |.  68 30E64500   push TicketPr.0045E630                   ;  %s-%s V%s [未注册版]
0041CB44  |.  52            push edx

果然跟预想的一样,未注册前面会强制放入一个常量“咖啡小店”,然后往下看

0041CB13  |> \68 20E64500   push TicketPr.0045E620                   ;       咖啡小店

为了印证判断,将mov byte ptr ds:[edi+13E0],0 改为mov byte ptr ds:[edi+13E0],1

运行后发现,标题还是未注册,但是功能已经全部可以使用了,退出也不弹出网页了,吃嘛嘛香了

Test

标题这个很正常,因为往下运行写入了“未注册”的字样,你可以手动修改为“已注册”或者任何你想显示的文字

好了,这就找到了那个关键的地方,mov byte ptr ds:[edi+13E0],0这个地址赋值0就是未注册

mov byte ptr ds:[edi+13E0],1 #赋值为1就是已注册,那我们知道了这个就好办了

Test

Test

我们要做的就是让程序可以执行到成功标示的地方,NOP掉上面2个跳转即可搞定一切

Test

好了,运行起来看下效果

Test

完美,名字也可以读取上次的记录了,注册也搞定,盗版提示也搞定了,还有一处就是自毁的。。。。

按照提示找到位置,发现只有一个往上的跳,果断改为JMP,这个我感觉就是一个提示而已,我下了断点让他走完了这个自毁程序,发现数据仍然还在。。。。难道是作者给的彩蛋么?

Test

好了,分析过程就到此结束了。帮助一下小白梳理一下分析过程吧,破解感觉重要的还是一个思路

0

评论

博主关闭了当前页面的评论