zaas 发表于 2010-2-22 14:15:03

用软件本身做注册机--破解图像缩放大师1.0笔记

【破文标题】用软件本身做注册机--图像缩放大师1.0破解笔记
【破文作者】zaas
【破解工具】OllyICE,PEiD v0.94
【破解平台】WinXP
【软件名称】图像缩放大师 1.0
【更新时间】2010-2-21
【软件类别】国产软件/图片压缩
【软件语言】简体中文
【应用平台】WinXP/2000/2003/Vista
【软件性质】共享(收费)软件
【软件大小】312KB
【原版下载】http://www.onlinedown.net/soft/99782.htm
【保护方式】注册码
【软件简介】图像缩放大师是一款专业的,支持批量修改图片大小软件,支持多种图片格式,如JPG, PNG, GIF, BMP, TIFF等;并且可以自由设置修改后的宽度、高度、是否保留纵横比等; 支持图片格式转换;操作简单,转换速度极快。
功能列表
1. 支持多种图片格式:JPG, PNG, GIF, BMP, TIFF
2. 不需要另外安装 .net 环境,支持在Win2000/XP/2003 下直接运行
3. 支持保留 EXIF 图像信息
4. 支持批量操作
5. 自定义文件输出尺寸大小:按比例、自定尺寸等等

【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------
**************************************************************
用PEiD查壳,Microsoft Visual C++ 7.0 易的吧。。。
**************************************************************
输入错误的注册码,有字符串提示,直接找到关键call。
本来是打算研究下算法,看看能不能写注册机的,可没想到算法部分不难但是臭长,懒得分析了。本打算放弃的。转念一想,索性拿来练习下SMC。。。

输入序列号和假码,来到注册验证部分。00406594   .C68424 600300>mov   byte ptr , 1
0040659C   .E8 86070200   call    00426D27                         ;序列号
004065A1   .8D4C24 08   lea   ecx, dword ptr
004065A5   .51            push    ecx
004065A6   .8D8E C0000000 lea   ecx, dword ptr
004065AC   .E8 76070200   call    00426D27                         ;假码
004065B1   .8B4424 08   mov   eax, dword ptr
004065B5   .51            push    ecx
004065B6   .83C0 F0       add   eax, -10
004065B9   .896424 14   mov   dword ptr , esp
004065BD   .8BFC          mov   edi, esp
004065BF   .50            push    eax
004065C0   .E8 9BB7FFFF   call    00401D60
004065C5   .83C0 10       add   eax, 10
004065C8   .8907          mov   dword ptr , eax
004065CA   .8B4424 14   mov   eax, dword ptr
004065CE   .83C0 F0       add   eax, -10
004065D1   .896424 1C   mov   dword ptr , esp
004065D5   .8BFC          mov   edi, esp
004065D7   .50            push    eax
004065D8   .C68424 680300>mov   byte ptr , 2
004065E0   .E8 7BB7FFFF   call    00401D60
004065E5   .83C0 10       add   eax, 10
004065E8   .83C4 04       add   esp, 4
004065EB   .8BCE          mov   ecx, esi
004065ED   .8907          mov   dword ptr , eax
004065EF   .C68424 640300>mov   byte ptr , 1
004065F7   .E8 44FDFFFF   call    00406340                         ;关键call
004065FC   .85C0          test    eax, eax
004065FE   .75 34         jnz   short 00406634
00406600   .6A 40         push    40
00406602   .68 5C314300   push    0043315C                         ;errormessage!
00406607   .68 40314300   push    00433140                         ;invalidate license info!
跟进关键call,明白了注册码是根据序列号通过一系列附加字符串MD5得来的,可惜最后出现明码。具体过程不再多说。直接来到比较call附近:00406490   .FF52 04       call    dword ptr
00406493   >8B7424 28   mov   esi, dword ptr           ;假码
00406497   .8B4424 0C   mov   eax, dword ptr          ;真码
0040649B   ?56            push    esi
0040649C      50            push    eax
0040649D      E8 39F40000   call    004158DB                         ;比较call
软件在判断注册成功会会把注册码序列号写入注册表的software\flyingstudio\imageresizer:00406645   .68 D0304300   push    004330D0                         ;software\flyingstudio\imageresizer
0040664A   .68 01000080   push    80000001
0040664F   .8D8C24 380300>lea   ecx, dword ptr
00406656   .C68424 680300>mov   byte ptr , 3
0040665E   .E8 AD2B0000   call    00409210
00406663   .8B4424 0C   mov   eax, dword ptr
00406667   .50            push    eax
00406668   .68 C0304300   push    004330C0                         ;license name
0040666D   .8D8C24 340300>lea   ecx, dword ptr
00406674   .E8 C72A0000   call    00409140
00406679   .8B4C24 08   mov   ecx, dword ptr
0040667D   .51            push    ecx
0040667E   .68 B0304300   push    004330B0                         ;license code
00406683   .8D8C24 340300>lea   ecx, dword ptr
0040668A   .E8 B12A0000   call    00409140
0040668F   .8D8C24 2C0300>lea   ecx, dword ptr
00406696   .E8 852A0000   call    00409120
0040669B   .6A 40         push    40
0040669D   .68 30314300   push    00433130                         ;congratulation!
004066A2   .68 F4304300   push    004330F4                         ;registration success!\n\nthank you for register our software!
既然有明码,嘿嘿。。。让我们输入假码后把真码写入注册表吧~~~这样,下次不用破解版也可以直接使用了哈。。。再说这个软件这么小,完全可以当一个keygen来用了,hohohoho。。。
找到一段空白00431b00,让它在比较之前跳过来,用真码替换掉假码00406490|.FF52 04       call    dword ptr
00406493|>8B7424 28   mov   esi, dword ptr
00406497|.E9 64B60200   jmp   00431B00                         ;跳到我想去的地方
0040649C|.50            push    eax
0040649D|.E8 39F40000   call    004158DB
嘿,用一段简短的汇编代码。。。。替换吧~~
00431B00   > \8B4424 0C   mov   eax, dword ptr          ;刚刚覆盖掉的地方
00431B04   .50            push    eax                              ;保存现场
00431B05   .56            push    esi
00431B06   .51            push    ecx
00431B07   >66:0FB608   movzx   cx, byte ptr                ;取真码字符
00431B0B   .40            inc   eax
00431B0C   .880E          mov   byte ptr , cl               ;替换假码
00431B0E   .46            inc   esi
00431B0F   .84C9          test    cl, cl
00431B11   .^ 75 F4         jnz   short 00431B07                   ;全部换完结束
00431B13   .59            pop   ecx
00431B14   .5E            pop   esi
00431B15   .58            pop   eax                              ;回复现场
00431B16   .56            push    esi                              ;刚刚覆盖掉的地方
替换完了则是真码和真码比较,当然注册成功了~~~~
软件很乖的把真码写进注册表了,看看去吧

"License Name"="zaas"
"License Code"="312D8294DA7055AD3D6D6879D3B6B9F4ADD084A2EED273B92E63EB8F20F67107768CAA1A73A529599E249821D5634D754C3C83F851E8C5182D4C7224"
删掉这些又可以用别的序列号注册了,就象注册机一样。。。
输入假码的时候需多输入点,否则会因为开辟的内存空间不足产生一些问题。。。
【破解总结】
破解极度简单,属于秒杀型。SMC一下练练手兼练习下汇编。。。
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

[ 本帖最后由 zaas 于 2010-2-22 14:20 编辑 ]

月之精灵 发表于 2010-2-22 16:55:50

进来偷偷学习下(现在没人哈/:018 )

pao 发表于 2010-2-22 18:42:40

z牛好精力啊。。

tianxj 发表于 2010-2-22 18:59:33

注册码=sha1加密(编辑框1.内容+"yafzVFCr4PxLI9MX8Hbv")

老万 发表于 2010-2-22 19:02:04

学习了,谢谢楼主分享

zaas 发表于 2010-2-22 19:27:42

原帖由 tianxj 于 2010-2-22 18:59 发表 https://www.chinapyg.com/images/common/back.gif
注册码=sha1加密(编辑框1.内容+"yafzVFCr4PxLI9MX8Hbv")
T大火眼金睛哈。。。
我看到里边有
0040B1BF   .C74424 38 012>mov   dword ptr , 67452301   ; |
0040B1C7   .C74424 3C 89A>mov   dword ptr , EFCDAB89   ; |
0040B1CF   .C74424 40 FED>mov   dword ptr , 98BADCFE   ; |
0040B1D7   .C74424 44 765>mov   dword ptr , 10325476   ; |
就没去想别的,呵呵。。
不过这个软件的加密没T大说的那么简单,SHA1每次的结果加上固定字符串,如是三次,而且固定字符串还有大小写的变化哦。。

[ 本帖最后由 zaas 于 2010-2-22 19:30 编辑 ]

zaas 发表于 2010-2-22 19:53:21

根据T大的提示,该软件的算法描述如下(VB):
    A = sha1(Text1.Text & "yafzVFCr4PxLI9MX8Hbv")
    B = sha1(A & "XNtKZV5Tqci0WYO8dmS9")
    Text2.Text = A & B & sha1(A & B & "MNJXx4ZYgGLtPmpS0k27")

yunfeng 发表于 2010-2-22 20:23:34

原帖由 tianxj 于 2010-2-22 18:59 发表 https://www.chinapyg.com/images/common/back.gif
注册码=sha1加密(编辑框1.内容+"yafzVFCr4PxLI9MX8Hbv")
你太厉害了,这么快就把算法搞出来了。

skyblack 发表于 2010-3-14 18:26:29

学习一下,呵呵。。。感谢分享!谢谢了!

hehaohw 发表于 2011-2-6 15:12:41

00406490   .FF52 04       call    dword ptr

00406493   >8B7424 28   mov   esi, dword ptr           ;假码

00406497   .8B4424 0C   mov   eax, dword ptr          ;真码

0040649B   ?56            push    esi

0040649C      50            push    eax

0040649D      E8 39F40000   call    004158DB                         ;比较call
改一行不知道行不行
0040649B   ?56            push    esi

push esi, dword ptr
页: [1] 2
查看完整版本: 用软件本身做注册机--破解图像缩放大师1.0笔记