飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6510|回复: 13

[原创] 某软件爆破及算法不完全分析

[复制链接]
  • TA的每日心情
    无聊
    2017-5-31 13:17
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2009-2-26 19:54:54 | 显示全部楼层 |阅读模式
    【文章标题】: 某软件爆破及算法不完全分析
    【软件名称】: -
    【软件大小】: 5M
    【下载地址】: 自己搜索下载
    【加壳方式】: 无
    【保护方式】: -
    【编写语言】: Microsoft Visual C++ 5.0
    【操作平台】: WIN2003
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    --------------------------------------------------------------------------------
    【详细过程】
      00469B70   > \55            push    ebp
      .
      00469C66   .  8D85 C8FEFFFF lea     eax, dword ptr [ebp-138]         ;  取机器码
      00469C6C   .  50            push    eax
      00469C6D   .  E8 CC76F9FF   call    0040133E                         ;  F7进入算法区
      .
      .
      00469CAC   .  8B85 D0FEFFFF mov     eax, dword ptr [ebp-130]
      00469CB2   .  25 FF000000   and     eax, 0FF
      00469CB7   .  85C0          test    eax, eax
      00469CB9      0F84 A1010000 je      00469E60                            //爆破点
      00469CBF   .  E8 DEFC0600   call    <jmp.&MFC42D.#1087>
      00469CC4   .  C780 F0000000>mov     dword ptr [eax+F0], 0
      00469CCE   .  8BF4          mov     esi, esp
      00469CD0   .  8D8D E4FEFFFF lea     ecx, dword ptr [ebp-11C]
      00469CD6   .  51            push    ecx                              ; /pHandle
      00469CD7   .  6A 01         push    1                                ; |Access = KEY_QUERY_VALUE
      00469CD9   .  6A 00         push    0                                ; |Reserved = 0
      00469CDB   .  68 D0BD5700   push    0057BDD0                         ; |software\microsoft\dataaccess\rootbinder\bin
      00469CE0   .  68 02000080   push    80000002                         ; |hKey = HKEY_LOCAL_MACHINE
      00469CE5   .  FF15 24B55900 call    dword ptr [<&ADVAPI32.RegOpenKey>; \RegOpenKeyExA
      00469CEB   .  3BF4          cmp     esi, esp
      
      算法核心代码:
    004BA774   . /EB 09         jmp     short 004BA77F
    004BA776   > |8B4D E0       mov     ecx, dword ptr [ebp-20]          ;  /////////
    004BA779   . |83C1 01       add     ecx, 1
    004BA77C   . |894D E0       mov     dword ptr [ebp-20], ecx
    004BA77F   > \8D4D F0       lea     ecx, dword ptr [ebp-10]          ;  LEA 有效地址传诵指令
    004BA782   .  E8 07F70100   call    <jmp.&MFC42D.#2640>
    004BA787   .  3945 E0       cmp     dword ptr [ebp-20], eax          ;  eax为机器码位数8与ebp-20计算,是否还需要计算注册码
    004BA78A   .  7D 71         jge     short 004BA7FD
    004BA78C   .  8B55 E0       mov     edx, dword ptr [ebp-20]          ;  ebp-20=00000=edx
    004BA78F   .  52            push    edx
    004BA790   .  8D4D 0C       lea     ecx, dword ptr [ebp+C]           ;  c=0代表是最开始的一位
    004BA793   .  E8 5AFF0100   call    <jmp.&MFC42D.#850>
    004BA798   .  8845 EC       mov     byte ptr [ebp-14], al            ;  取机器码第N位+上一注册码的十进制
    004BA79B   .  8A45 EC       mov     al, byte ptr [ebp-14]
    004BA79E   .  0245 E0       add     al, byte ptr [ebp-20]            ;  相加
    004BA7A1   .  8845 EC       mov     byte ptr [ebp-14], al
    004BA7A4   .  0FBE4D EC     movsx   ecx, byte ptr [ebp-14]
    004BA7A8   .  6BC9 07       imul    ecx, ecx, 7                      ;  Q=整数81*7=567 这句是整数相乘 寄存器是为其16进制
    004BA7AB   .  884D EC       mov     byte ptr [ebp-14], cl
    004BA7AE   .  0FBE45 EC     movsx   eax, byte ptr [ebp-14]
    004BA7B2   .  99            cdq                                      ;  双字扩展.  (把EAX中的字的符号扩展到EDX中去)
    004BA7B3   .  B9 0A000000   mov     ecx, 0A                          ;  0A转10进制=10,原ECX=十进制Q(51)*7=587=237(16进制)
    004BA7B8   .  F7F9          idiv    ecx                              ;  除10
    004BA7BA   .  52            push    edx                              ;  edx值计算出来就是注册码

      
      
      算法大致分析为:(机器码转十六进制+机器码第几位)*7/0A
      希望大牛指点。技术不过关。。。
      
    --------------------------------------------------------------------------------
    【版权声明】: 本文原创于飘云阁, 转载请注明作者并保持文章的完整, 谢谢!
                                                           2009年02月26日 19:55:55
    附件上传不了。传到了QQ中转站
    http://62.dc.ftn.qq.com/ftn_hand ... 50f0911464a44564761   提取码 fd2d675a

    [ 本帖最后由 cjteam 于 2009-2-26 20:04 编辑 ]

    评分

    参与人数 1威望 +40 飘云币 +40 收起 理由
    Luckly + 40 + 40 鼓励一下...多多思考 多多分享

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-2-26 19:57:20 | 显示全部楼层
    不错,来学习了
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-5-31 13:17
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2009-2-26 19:58:14 | 显示全部楼层
    楼上的也不帮忙分析下。,555
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-3-3 16:07:28 | 显示全部楼层
    看来我的功力还是不够啊 !~~~看的还不是很懂!~~~继续努力中!~~~~顶起!~~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-3-3 17:08:43 | 显示全部楼层
    菜鸟帮顶!/:good /:good /:good
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2021-10-2 23:26
  • 签到天数: 46 天

    [LV.5]常住居民I

    发表于 2009-3-3 18:32:09 | 显示全部楼层
    兄弟!你这样还真有点像变相求破啊!这个软件一看就知道作者花了不少心思去写的.不过加密还不过关,要破解也不难!如果你的OD技术过关的话你要破来自己用是没问题的,你说的爆破点.根本只是镜花水月!/:L /:L 要是真想破掉他的话你就多多努力吧!只能无语!/:001 /:001 /:001
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-5-31 13:17
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2009-3-4 11:33:41 | 显示全部楼层
    原帖由 as3852711 于 2009-3-3 18:32 发表
    兄弟!你这样还真有点像变相求破啊!这个软件一看就知道作者花了不少心思去写的.不过加密还不过关,要破解也不难!如果你的OD技术过关的话你要破来自己用是没问题的,你说的爆破点.根本只是镜花水月!/:L /:L 要 ...


    首先说明,软件是2004年的,软件公司已倒闭了!

    软件明码已追到了,自用应是没问题吧,另外关于我说的爆破点,破了,确实可以无限用!

    多谢兄弟的交流,另外说句,最近看些算法文章多一点,发现熟读算法300篇,傻子也会分析
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2021-10-2 23:26
  • 签到天数: 46 天

    [LV.5]常住居民I

    发表于 2009-3-4 14:12:27 | 显示全部楼层
    原帖由 cjteam 于 2009-3-4 11:33 发表


    首先说明,软件是2004年的,软件公司已倒闭了!

    软件明码已追到了,自用应是没问题吧,另外关于我说的爆破点,破了,确实可以无限用!

    多谢兄弟的交流,另外说句,最近看些算法文章多一点,发现熟读算法30 ...

    呵呵!那是我说错了!这个软件关键是你懂不懂C语言的运算机制!我也不懂C所以写不出注册机来!多的不能说了,自己看部分代码吧!我还在写!/:002 /:002 /:002

    / ceshi.cpp : 定义控制台应用程序的入口点。
    //
    #include "stdafx.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int _tmain(int argc, _TCHAR* argv[])
    {
     char a,b,c,d,e;  //定义5个字符型的变量;
     int i,x;     //定义2个整数型的变量;
     scanf("%c",&a);  //接受字符变量输入;
        b=a*7;  //字符变量ASCII值乘于7;
     i=b;    //字符变量强制转化成整数型;
     c=i;    //整数变量又强制转化成字符型;
     d=c%10; //字符变量ASCII值除于10取余数;
        x=d;  //字符变量强制转化成整数型;
        e=x;  //整数变量又强制转化成字符型;
        printf("%c\n%c\n%d\n%c\n%c\n%d\n%c\n%c\n%d\n%c\n",a,b,i,c,d,x,e);

            return 0;
    }

    现在还不懂用循环和最后的那一不"-5"变"-"/:002 /:002 /:002

    [ 本帖最后由 as3852711 于 2009-3-4 14:16 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-1-18 17:27
  • 签到天数: 30 天

    [LV.5]常住居民I

    发表于 2009-3-4 14:17:08 | 显示全部楼层
    看了下,如下图
    分析见https://www.chinapyg.com/viewthr ... xtra=&frombbs=1
    进销存.jpg

    [ 本帖最后由 lzq1973 于 2009-3-5 18:10 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-5-31 13:17
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2009-3-5 12:35:22 | 显示全部楼层
    :loveliness: 樓上的大牛,文件发送给你了!。

    去参考一下C语言的运算机制,多谢as3852711 的指点

    感谢lzq1973!!

    [ 本帖最后由 cjteam 于 2009-3-6 12:53 编辑 ]
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表