转载地址:http://blog.csdn.net/qs_hud/article/details/8884867

注册机及软件下载地址:http://download.csdn.net/detail/huhu1544/5330869      

效果截图:

上几周灰春哥说在试着破解Source Insight 3.5,一直拿CrackMe做实验的俺也不免手痒来练练手(顺便拿去吾爱混个邀请码),刚拖进OD里就看见了GetTickCount函数,还以为里面 有反调试呢(现在想想估计是检查试用天数用的),当时反反调试还没怎么修炼,就搁置了几天,后来看了几天脱壳常用的反调试手段就开始动手了,废话不说了, 看分析吧。

首先运行查看错误提示:

用OD的字符串搜索来查一下“You typed”:

很明显,双击查看代码,向上翻找到关键Call(00408BD9):

进去这个Call里瞅一下:

先看00448f3a处的第一个Call 00448e53(事实证明这里很可能是一个大坑呀!!!,被坑了N个小时才出去),直接上IDA看流程图,比较明了(我已经加上了注释):

到底跳到哪一个呢?本来想eax最终应该返回1的,大致看了几眼sub_449030的内容,跟真的似的,就让sub_448e53返回1进入
sub_449030跟踪看看,怎么让sub_448e53函数返回1呢?看代码:

还要继续看sub_1602,没办法,继续看sub_1602吧(虽然这里是个坑,但是这个函数后面用到的多,可以看一下代码):

这段代码很简单,ES3US是参数,输入的前五个字符和ES3US的大写相同的话就返回EAX=1,就输入前五个是ES3US的假码进入上面提到的
sub_449030看看(最初是在OD里看的,花费了很多时间才意识到可能是进坑了,只截取部分代码大致看看就行了):

执行完sub_448e7e之后返回值应该为0才能继续下面的验证,但是最后剩余的其它函数执行完毕后返回1才注册成功,这个sub_448e7e函数内容里是对输入的字符串的各种验证,符合验证的返回值才是1,与这个函数要求的返回值0矛盾呀,也就是说可以说如果输入任何不满足sub_448e7e函数里面验证的假验证码都可以返回0,继续下面的剩下的几个函数的验证,还有好多呢,要通过后面的验证用随意构造的假码就难了,所以估计这整个函数就是个坑(随意构造的注册码能通过sub_448e7e,返回0,但是后面的验证估计过不去了,如果有不同见解,欢迎讨论交流哈),这条路估计行不通了,所以继续回去看第一幅图中的函数:

既然不能走sub_449030这条道,那就看00448f5c处的sub_448f5c吧,其实这个函数和sub_449030函数的验证差不多,但是关键之处不一样呀,进去看看:

是不是有点熟悉呢,就是判断前五位的大写是不是SI3US而已,输入前五位是SI3US的假码的话就让其跳转到Loc_448f89:

又是函数sub_448e7e,上面的提到的坑里的验证函数,不过这次是符合函数里的各种验证才能返回1才能继续下面的验证,进去看看里面的验证吧(还是用IDA的流程图看吧,OD的图太长了不好截):

首先要存在”-”字符才能继续,OD直接修改自己的假码这一位为”-”就行了,不过还是推荐重来一次,毕竟后面的路还很长,很麻烦额(⊙o⊙)…,继续:

判断刚才的寻找的”-”位置是不是和SI3US挨着(PS:真折腾,直接调用返回具体位置的函数就行了呗,还非要strchr()再减去基址,莫非是编译器优化了???不确定额)才行,继续:

又是这玩意,,截取”-”字符第二次出现的位置,判断中间那段注册码长度是不是6,中间用了and XX 0指令把”-”字符第二次出现的位置置为0,相当于把字符截断了(最后又补回去了),就只剩余中间的那一段部分(最前面的SI3US已经用指针偏移处理掉了,这里只剩下中间的6位注册码),输入类似SI3US-XXXXXX-XXX的注册码再继续看:

具体拷贝的啥不记得了,忘记注释了,现在就不记得了,就记得strlen是求的最后的注册码长度,看长度是不是5,到此注册码的格式就明了了,就是SI3US-XXXXXX-XXXXX类型,继续看呀,真折腾:

后五位注册码转化成整型值(存进了eax,最终保存进了arg_8的空间里),由于atoi函数处理字符串时存在非数字型的字符就停止转化了,第一个字符不是数字返回0,为了保险,还是把后五位字符串全输入成数字型的,让它全部转化成数字,”12345”就转化成12345,看它还有神马招数,终于返回1了,别急,后面还有验证呢,毕竟还没验证中间及最后的注册码正确性呀,执行到函数结束,继续Go:

执行到红框处又跳到00449075,接着执行sub_428e8a,跟进去:

这段代码其实没啥用,挺无语的,就是验证中间的六位注册码第一位是不是和后五位相等,注意红线处的代码挺有意思的,很多编译器在优化选择语句时,尤其是类
似a>b?b:c的语句时经常用到类似的代码(有兴趣的可以看看《C++反汇编与逆向揭秘》,里面很多讲了很多编译器优化的规则)再继续说这段代码
的含义呀,猜测是不是一个小坑,预防像我这种懒人输入中间6位相同的假注册码,太小瞧人了,骗人也来一个稍微高级点的,6位全相等能骗得了我输入的假码中
间6位是”123456”的吗?

(下面紧接着的一个还真是稍微高级点的坑,我的”123456”还真被坑了╮(╯_╰)╭)

继续看,不闲扯了,上面返回eax为1之后跳转到了448fc1:

看00408fea处有1E=30次比较,比较啥呢?53c468处向上30个4字节数据,其实是将注册码中间6位由atoi转成的整型值与30个值依次比较,有相等的话就调走返
回0,最后导致验证失败,在OD里看53c468处的数据只能看到些16进制数值,使用IDA的计算器可以计算出这些十进制数,其中第二次与输入的中间6
位注册码比较的就是我输入的”123456”的整型值……中招了,真是猥琐的验证,(不过没关系,把标志位改一下不让它跳走就得了,但是最后写算法注册机
时就要注意了,万一生成的注册码里真的落在了这30个数之中或是6位全相同的就注册不成了)进行30次比较之后,跳进了红框中最后一个验证的函数,最后一
把了,返回值为1就OK了,跟进去:

(截图美化排版啥的俺真心不擅长,凑合看吧。)

别看代码有点乱,实际上验证的算法好水的,写成的伪代码的除去变量定义就剩下几行计算的代码,拿我输入的SI3US-123456-54321来说吧,令K=123456(数值),再将”123456”(字符查)与存放的几个常量(代码中的Temp数组,有10个,只用到6个)异或下,结果和K*4相加的结果再存进K里,进行6次而已,(好水,算法简单不说,逻辑清楚点也行呀,一共就六次循环,004f3ed3处的循环变量还考虑超过10时重新赋值成0,瞎搞!)。

算法明了了,编写注册机吧,看代码:

随便写的,生成6位随机数,计算出后5位(有时候求后面几位时结果可能不是五位,不能用,就重来直到结果是5位的),最后Si3US、中间的6位,结果的
5位拼接就完了,当然还有很多小问题,比如随机数生成的没有很大的数,一般没有超过130000,这样也好,结果就很难在那30个比较的数和全相等的数范
围内了,功能差不多就行了,注册机写完刚好12点钟,本来打算把破文写完就睡呢,结果,呵呵……

O(∩_∩)O。

【转】破解Source Insight 3.5.0072过程 附:安装软件+注册机的更多相关文章

  1. securecrt8.1破解版安装与注册机的使用方法

    转自:https://blog.csdn.net/sun897827804/article/details/78532157?locationNum=9&fps=1 SecureCRT是一款用 ...

  2. UltraEdit工具安装和注册机破解

    1.关闭网络连接(或者直接拔掉网线). 2.打开UltraEdit软件,稍等片刻会出现提示你你使用的是试用版本的窗口.如下图,点击“注册”. 3.填写许可证id和密码.许可证id可任意填写,不过根据经 ...

  3. Linux下Source Insight的安装和汉化

    原创文章,转载请注明出处. 工欲善其事,必先利其器.Source Insight绝对是阅读C和C++代码的利器,另外,Source Insight的体量很小,安装便捷,显示直观,比vim+cscope ...

  4. Tools - 源代码阅读分析工具Source Insight

    简介 https://www.sourceinsight.com/ Source Insight是一个面向项目开发的程序编辑器和代码浏览器,可以分析C/C++.C#.Java.Python等语言源代码 ...

  5. source insight 完全卸载和重装

    Source insight的卸载不干净,会影响之后的安装 切入正题,完美卸载source insight的方法: 一.在pc的控制面板—>程序—>卸载程序 找到source insigh ...

  6. ubuntu下安装 Source insight

    习惯了在source insight下编辑阅读源码,在linux下用vi总是用不好 ,还是在ubuntu上用回熟悉的source insight. 在ubuntu中,安装windows程序用wine, ...

  7. Source Insight 安装使用

    习惯了在source insight下编辑阅读源码,在linux下用vi总是用不好 ,还是在Ubuntu上用回熟悉的source insight. 在Ubuntu中,安装Windows程序用wine, ...

  8. wine on ubuntu linux, and source insight 绿色版的安装

    1.安装一些必要组件 winetricks msxml3 gdiplus riched20 riched30 vcrun6 vcrun2005sp1 wenquanyi 2.拷贝字体 下载网盘中的字体 ...

  9. source insight Confirm by typing ‘yes' below"、"has been changed outside of the editor. Do you want to reload the file?"、“

    阅读内核代码习惯和喜欢使用source insight.如果能在source insight上修改内核代码,同时又不需要把修改的内核代码再拷贝到虚拟ubuntu上去那就方便了.于是想通过用samba与 ...

随机推荐

  1. java classpath getResource getResourceAsStream

    1.classpath 用于指定java运行时,jvm寻找class文件以及jar文件的存储目录.jvm依据classpath中出现的jar文件以及目录,依次寻找,直到找到指定class文件. 例:j ...

  2. 自定义RecyclerView.ItemDecoration,实现RecyclerView的分割线效果

    [转] 原文 自定义RecyclerView.ItemDecoration,实现RecyclerView的分割线效果 字数1598 阅读302 评论2 喜欢23 1.背景   RecyclerView ...

  3. How to install starDIct on suse OS?

    1. Access page http://code.google.com/p/stardict-3/ to download starDict package or use zypper in to ...

  4. 通过版本号实现乐观锁(MVCC)

    乐观锁大多是基于数据版本记录的机制实现 , 如 , 为每一行数据增加一个整型版本标识(version) , 每次数据更新都把版本号+1 工作原理:读取出数据时,将此版本号一同读出,之后更新时,对此版本 ...

  5. .NET中MemCached使用介绍

    阅读目录 1.MemCached是什么? 2.Window中MemCached安装 3.MemCached命令 4.简单示例 MemCached是什么 MemCached是一个自由开源,高性能,分布式 ...

  6. swiper.animate~之~可以执行两种动画的升级版的Swiper Animate

        1.下载插件swiper.animate-twice.min.js,加载进页面. <!DOCTYPE html> <html> <head> ... < ...

  7. .net使用OpenPop自动收邮件,并将邮件内容存入数据库

    1.下载OpenPop,将OpenPop添加到解决方案中. 2. else if (e.CommandName == "ConnectTest") { string sSERVER ...

  8. 理解会话Session

  9. jqurey datatable mRender FnRender 不起作用问题

    用这个插件的   知道他不起作用,就应该知道他是做什么的了吧,我的不起作用的原因是版本的问题 我在网上查找的用法 是 "fnRender":fuction(obj){} 可是不起作 ...

  10. IIS 7.5 + PHP-5.6.3 + mysql-5.6.21.1

    禅道项目管理软件源码下载:http://sourceforge.net/projects/zentao/files/6.3/ZenTaoPMS.6.3.stable.zip/download Stp1 ...