首页
社区
课程
招聘
[原创]这玩意放着没用,丢了算了.
发表于: 2012-6-28 00:22 7509

[原创]这玩意放着没用,丢了算了.

2012-6-28 00:22
7509
#include <windows.h>
#pragma comment(linker,"/ENTRY:_WinMain@16");
#pragma comment(linker,"/ALIGN:512");
int decrypt(const void * src,size_t count,const void * dst)
{
	unsigned char * psrc = (unsigned char *)src;
	unsigned char * pdst = (unsigned char *)dst;
    unsigned int    Prob = (1 << 10);
    unsigned int    uiAny = 0;
    unsigned int    uiSom = 0xFFFFFFFF;
    for(int i = 0; i < 4; i++)
	{
        uiAny = (uiAny << 8) | *psrc++;
	}
    while(count--)
    {
        unsigned char b = 0;
        for (int j=0; j < 8; j++)
        {
            unsigned int u = (uiSom >> 11) * Prob;
            if (uiAny < u)
            {
                uiSom = u;
                Prob += ((1 << 11) - Prob) >> 5;
                b += (0 << j);
            }
            else
            {
                uiSom -= u;
                uiAny -= u;
                Prob  -= (Prob) >> 5;
                b += (1 << j);
            }
            if (uiSom < (1 << 24))
            {
                uiAny = (uiAny << 8) | *psrc++;
                uiSom <<= 8;
            }
        }
        *pdst++ = b;
    }
    return (pdst - (unsigned char *)dst);
}
int encrypt(const void *src, size_t count, const void *dst)
{
	unsigned char * psrc = (unsigned char *)src;
	unsigned char * pdst = (unsigned char *)dst;
    unsigned int  last  = 0; 
	unsigned int  first = 0;
    unsigned int  Prob  = 0x400;
    unsigned int  uiSom = 0xFFFFFFFF;
    unsigned char cache = 0;
    unsigned int  index = 0;
    unsigned int  ShiftLow = 0;
    while(count--)
    {
        unsigned char b = *psrc++;
	    for( int i = 0; i < 8; i++)
		{
            unsigned int u = Prob * (uiSom >> 11);
            if ( (b >> i) & 1 )
            {
				ShiftLow += u;
                first += (u >= ShiftLow ? 1:0);
                uiSom -= u;
                Prob -= Prob >> 5;
            }
            else
            {
                uiSom = Prob * (uiSom >> 11);
                Prob += (0x800 - Prob) >> 5;
            }
            if ( uiSom >= 0x1000000 )
            {
                last = cache;
            }
            else
            {
				uiSom <<= 8;
                if ( ShiftLow < 0xFF000000 || first )
                {
                    for ( unsigned int j = cache; index; index-- )
                    {
                        *pdst++ = j + first;
                        j = -1;
                    }
                    last = ShiftLow >> 24;
                    cache  = ShiftLow >> 24;
                }
                else
                {
                    last = cache;
                }
                ShiftLow <<= 8;
                first = 0;
			    ++index;
            }
        }
    }
    for( unsigned int i = 0; i < 5; i++)
    {
        if ( ShiftLow < 0xFF000000)
        {
			*pdst++ = last + first;
            last = ShiftLow >> 24;
        }
        ShiftLow <<= 8;
    }
    return (pdst - (unsigned char *)dst);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
	char dst[0x100] = {0};
	char src[0x100] = "LiuTaoTao 2007-07-28 Example --> by Worker";
	int len = encrypt(src,lstrlen(src),dst);
	memset(src,0x0,0x100);
	decrypt(dst,len,src);
	MessageBox(NULL,src,src,MB_ICONINFORMATION);
	ExitProcess(0);
	return 0;
}

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

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
加解密函数?????
2012-6-28 00:33
0
雪    币: 316
活跃值: (128)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
ppppppppp
2012-6-28 00:43
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
4
是什么加密算法?不会是自己搞的一套吧,你还不如用rc4呢
2012-6-28 08:21
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
5
我是来看boywhp兄
2012-6-28 08:59
0
雪    币: 128
活跃值: (27)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
"LiuTaoTao 2007-07-28 Example --> by Worker";

啊?

居然设计的加解密函数也不需要 key参数的,关键是什么算法?
2012-6-28 09:00
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
好厉害的东西下了
2012-6-29 13:36
0
雪    币: 165
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
莫非阁下就是ltt?
2012-6-29 17:53
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
10
不解原理,求科普,求数学推导过程。
2012-6-29 18:40
0
雪    币: 159
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
原创?~额~无奈……
2012-7-2 10:10
0
雪    币: 198
活跃值: (103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
用处不大 还是动态秘药的好
2012-7-5 12:24
0
雪    币: 142
活跃值: (96)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
学习咯, 下载研究中
2012-7-5 19:54
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
好简洁,研究研究
2012-7-6 08:09
0
雪    币: 220
活跃值: (711)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
#pragma comment(linker,"/ENTRY:_WinMain@16");

指定这个入口点?

下面也没见这个函数啊?
怎么个说法?
2012-7-6 11:54
0
游客
登录 | 注册 方可回帖
返回
//