cjteam 发表于 2009-2-26 19:54:54

某软件爆破及算法不完全分析

【文章标题】: 某软件爆破及算法不完全分析
【软件名称】: -
【软件大小】: 5M
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: -
【编写语言】: Microsoft Visual C++ 5.0
【操作平台】: WIN2003
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
00469B70   > \55            push    ebp
.
00469C66   .8D85 C8FEFFFF lea   eax, dword ptr          ;取机器码
00469C6C   .50            push    eax
00469C6D   .E8 CC76F9FF   call    0040133E                         ;F7进入算法区
.
.
00469CAC   .8B85 D0FEFFFF mov   eax, dword ptr
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 , 0
00469CCE   .8BF4          mov   esi, esp
00469CD0   .8D8D E4FEFFFF lea   ecx, dword ptr
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           ;/////////
004BA779   . |83C1 01       add   ecx, 1
004BA77C   . |894D E0       mov   dword ptr , ecx
004BA77F   > \8D4D F0       lea   ecx, dword ptr           ;LEA 有效地址传诵指令
004BA782   .E8 07F70100   call    <jmp.&MFC42D.#2640>
004BA787   .3945 E0       cmp   dword ptr , eax          ;eax为机器码位数8与ebp-20计算,是否还需要计算注册码
004BA78A   .7D 71         jge   short 004BA7FD
004BA78C   .8B55 E0       mov   edx, dword ptr           ;ebp-20=00000=edx
004BA78F   .52            push    edx
004BA790   .8D4D 0C       lea   ecx, dword ptr          ;c=0代表是最开始的一位
004BA793   .E8 5AFF0100   call    <jmp.&MFC42D.#850>
004BA798   .8845 EC       mov   byte ptr , al            ;取机器码第N位+上一注册码的十进制
004BA79B   .8A45 EC       mov   al, byte ptr
004BA79E   .0245 E0       add   al, byte ptr             ;相加
004BA7A1   .8845 EC       mov   byte ptr , al
004BA7A4   .0FBE4D EC   movsx   ecx, byte ptr
004BA7A8   .6BC9 07       imul    ecx, ecx, 7                      ;Q=整数81*7=567 这句是整数相乘 寄存器是为其16进制
004BA7AB   .884D EC       mov   byte ptr , cl
004BA7AE   .0FBE45 EC   movsx   eax, byte ptr
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_handler/1576f5254d47f36212d3486106094d3c76221139544f5c0ab0e1938bd5adff841dc36b66342d50d1d59a34ef4853256aa28d061b3075c61ce62a9924c00a54b4/nout.rar?k=5a64326411d9409e49eb75641037074e54070250540f07004b575305521a015654021f5d550f574c03075106550f00505f060702363f350f0911464a44564761   提取码 fd2d675a

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

孤漂江湖狼 发表于 2009-2-26 19:57:20

不错,来学习了

cjteam 发表于 2009-2-26 19:58:14

楼上的也不帮忙分析下。,555

cylaban 发表于 2009-3-3 16:07:28

看来我的功力还是不够啊 !~~~看的还不是很懂!~~~继续努力中!~~~~顶起!~~

hanyu 发表于 2009-3-3 17:08:43

菜鸟帮顶!/:good /:good /:good

as3852711 发表于 2009-3-3 18:32:09

兄弟!你这样还真有点像变相求破啊!这个软件一看就知道作者花了不少心思去写的.不过加密还不过关,要破解也不难!如果你的OD技术过关的话你要破来自己用是没问题的,你说的爆破点.根本只是镜花水月!/:L /:L 要是真想破掉他的话你就多多努力吧!只能无语!/:001 /:001 /:001

cjteam 发表于 2009-3-4 11:33:41

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

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

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

多谢兄弟的交流,另外说句,最近看些算法文章多一点,发现熟读算法300篇,傻子也会分析

as3852711 发表于 2009-3-4 14:12:27

原帖由 cjteam 于 2009-3-4 11:33 发表 https://www.chinapyg.com/images/common/back.gif


首先说明,软件是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 编辑 ]

lzq1973 发表于 2009-3-4 14:17:08

看了下,如下图
分析见https://www.chinapyg.com/viewthread.php?tid=43645&extra=&frombbs=1


[ 本帖最后由 lzq1973 于 2009-3-5 18:10 编辑 ]

cjteam 发表于 2009-3-5 12:35:22

:loveliness: 樓上的大牛,文件发送给你了!。

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

感谢lzq1973!!

[ 本帖最后由 cjteam 于 2009-3-6 12:53 编辑 ]
页: [1] 2
查看完整版本: 某软件爆破及算法不完全分析