首页
社区
课程
招聘
[原创]M-i-c-r-o-D-o-g-4.x get Number.dog
发表于: 2010-12-17 16:17 11524

[原创]M-i-c-r-o-D-o-g-4.x get Number.dog

2010-12-17 16:17
11524
#include <stdio.h>
#include <stdlib.h>
#include "windows.h"

typedef void (* fn_init)(long a, long dir, void * seed, int c, int d, void * seed_buff);
typedef void (* fn_blockDecrypt)(void * srcbuff, int bitslen, void * dstbuff,  void * seed_buff);
typedef void (* fn_blockEncrypt)(void * srcbuff, int bitslen, void * dstbuff,  void * seed_buff);

fn_init                        init                        = NULL;
fn_blockDecrypt blockDecrypt        = NULL;
fn_blockEncrypt blockEncrypt        = NULL;
HMODULE                        hDLL                        = NULL;

unsigned long XorDatas[] =
{
        0xa93276??,
        0xb832c5??,
        0xe28a93??,
        0x74ca89??
};

unsigned char Characters[] =
{
        0x7E, 0x8E, 0xC3, 0x97,
        0x95, 0x66, 0x82, 0x6C,
        0x86, 0xB8, 0x70, 0xB9,
        0xD5, 0x77, 0x05, 0x48
};

unsigned char * searchBinary(unsigned char * src, int srclen, unsigned char * search, int searchlen)
{
        int i, j;
        if(!src || srclen==0 || !search || searchlen==0 || srclen<searchlen)
                return NULL;
       
        for(i=0;i<srclen-searchlen;i++) {
                for(j=0;j<searchlen;j++) {
                        if(src[i+j]!=search[j]) {
                                break;
                        }
                }
                if(j==searchlen)
                        return src+i;
        }
        return NULL;
}

int main(int argc, char* argv[])
{
        int i, len;
        unsigned char init_buff[276],temp[256];
        unsigned char decode_buff[0x70];
        unsigned char * buff, * p;
        FILE * fp;
        unsigned long sn, key[4];
        unsigned short * k;

        if(argc<2) {
                printf("Usage:\n%s binary_file\n", argv[0]);
                return 1;
        }
       
        hDLL = LoadLibrary("RevealTool.dll");
        if(hDLL==NULL)
                return 1;

        init = (fn_init)((DWORD)hDLL+0xA??2);
        blockDecrypt = (fn_blockDecrypt)((DWORD)hDLL+0xB??B);
        blockEncrypt = (fn_blockEncrypt)((DWORD)hDLL+0xA??0);

        fp = fopen(argv[1], "rb");
        if(fp==NULL) {
                printf("Can't load file:%s\n", argv[1]);
                return 1;
        }
        fseek(fp, 0, SEEK_END);
        len = ftell(fp);
        buff = (unsigned char*)calloc(1, len);
        fseek(fp, 0, SEEK_SET);
        fread(buff, 1, len, fp);
        fclose(fp);
       
        p = searchBinary(buff, len, Characters, 16);
        if(p==NULL||len<0x80) {
                printf("Search Characters failure!\n");
                free(buff);
                return 1;
        }
       

        printf("MyDataPool:\n");
        for(i=0;i<0x70;i++) {
                printf("%02X ", (p-0x70)[i]);
                if((i+1)%16==0)
                        printf("\n");
        }

        init(0, 1, p-0x10, 0, 0, init_buff);
        printf("\n_init_buff_:\n");
        for(i=0;i<0xd0;i++) {
                printf("%02X ", init_buff[i]);
                if((i+1)%16==0)
                        printf("\n");
        }

        blockDecrypt(p-0x70,0x300,decode_buff,init_buff);
       
        printf("\nDecode data:\n");
        for(i=0;i<0x60;i++) {
                printf("%02X ", decode_buff[i]);
                if((i+1)%16==0)
                        printf("\n");
        }

        memcpy(&sn, decode_buff+26, sizeof(unsigned long));       
        memcpy(&key[0], decode_buff+38, sizeof(unsigned long));
        memcpy(&key[1], decode_buff+44, sizeof(unsigned long));       
        memcpy(&key[2], decode_buff+51, sizeof(unsigned long));
        memcpy(&key[3], decode_buff+62, sizeof(unsigned long));
       
        printf("\nRaw info:");
        printf("\nserial: 0x%08X", sn);
        printf("\nkey[0]: 0x%08X", key[0]);
        printf("\nkey[1]: 0x%08X", key[1]);
        printf("\nkey[2]: 0x%08X", key[2]);
        printf("\nkey[3]: 0x%08X", key[3]);

        for(i=0;i<4;i++)
                key[i] = key[i] ^ XorDatas[i];

        k = (unsigned short *)key;
        printf("\n\n>>> Number.dog");
        printf("\nSerial Number is: %d\n", sn);
        sprintf(temp, "%04X%04X%04X%04X%04X%04X%04X%04X???%05X\n",
                k[0], k[1], k[2], k[3],
                k[4], k[5], k[6], k[7],
                sn);
        for(i=0;i<40;i++) {
                if(i>0 && (i%5)==0)
                        printf(",");
                printf("%c", temp[i]);
        }
       
        printf("\n-Or-\n");
        printf("%04X,%04X,%04X,%04X,%04X,%04X,%04X,%04X,%04X,%04X\n",
                k[0], k[1], k[2], k[3], k[0]^k[1]^k[2]^k[3],
                k[4], k[5], k[6], k[7], k[4]^k[5]^k[6]^k[7]);

        free(buff);
        return 0;

}

//注:??地方模糊处理了,免得把厂家逼急了。下载从速,很可能被和谐掉。



getNumberDog.rar

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (31)
雪    币: 166
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
嗯,先收藏再查看。
2010-12-17 16:57
0
雪    币: 198
活跃值: (1585)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
F5能不能看到被和谐了的??的值?
2010-12-17 17:16
0
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
4.X仅有的丁点东西被公开,M-i-c-r-o-d-o-g算是彻底完蛋,杯具了!
2010-12-17 21:21
0
雪    币: 14
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个工具的用途是什么呢
2010-12-18 10:38
0
雪    币: 216
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
自己的microdog用这个工具怎么操作才能得打number.dog。。?
2010-12-18 10:51
0
雪    币: 213
活跃值: (397)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
高人!!!!!!!!
2010-12-18 23:07
0
雪    币: 223
活跃值: (302)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
试了试可以,谢谢!
2010-12-19 19:31
0
雪    币: 200
活跃值: (93)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
可以用~~~谢谢高人的东西~~~希望看见S4或者R6
2010-12-19 21:46
0
雪    币: 14
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谁能说一下这个东西怎么用吗,十分感谢
2010-12-19 23:18
0
雪    币: 219
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢楼主了。。。
2010-12-21 23:14
0
雪    币: 216
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
具体应用过程友人能不能写出来呀!谢谢了。
2010-12-21 23:51
0
雪    币: 321
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
支持会使用的写出来!
2010-12-22 23:13
0
雪    币: 219
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我也不会用,打不开。。。
2010-12-24 09:59
0
雪    币: 4615
活跃值: (4542)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
谢谢楼主分享
2010-12-24 16:56
0
雪    币: 213
活跃值: (397)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
可以用谢谢了,高人
2010-12-29 15:34
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
虽然不懂得,但是必须收藏起来!!感谢楼主!
2010-12-30 10:57
0
雪    币: 210
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
下载下来的是执行程序。我还以为是源码呢。不过有程序也很好了。感谢楼主的无私奉献。
2010-12-30 14:04
0
雪    币: 210
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
这个怎么用的呢?双击程序貌似没有任何反应?
2010-12-30 14:05
0
雪    币: 131
活跃值: (154)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
Dos 下使用
或者自己改下 做个win界面就OK
2011-1-2 17:42
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
谢楼主分享 应用过程友人能不能写出来呀
2011-1-2 18:04
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
在dos下运行不了,期望知道怎么使用的朋友能分享一下……
2011-1-4 16:23
0
雪    币: 34
活跃值: (721)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
支持,用法没有写,请高人说明下!谢谢
2011-1-5 17:05
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
太强了,可惜看不懂啊。
2011-1-14 18:15
0
雪    币: 218
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
sprintf(temp, "%04X%04X%04X%04X%04X%04X%04X%04X???%05X\n",

请问这里???是作了模糊处理吗?我打半瓶酱油。。。

还有同6楼问,传什么文件名给它作参数呢?
2011-1-15 11:53
0
游客
登录 | 注册 方可回帖
返回
//