首页
社区
课程
招聘
使用
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2016-6-16 19:15
0
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2016-5-3 19:48
0
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2015-1-19 23:07
0
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2013-1-25 23:33
0
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2012-12-31 22:14
0
[2013礼物]《看雪论坛精华12》发布下载!
新年快乐,强烈支持一下。
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2012-3-28 21:09
0
CFileDialog类源代码问题?
以'\0'作为多个字符串分割符,当字符串长度为0时表示结束。

需要表示多个字符串 ".ZIP", ".TXT"
在此字符串中的存储为 ".ZIP\0.TXT\0\0"
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2012-2-24 01:09
0
[分享&挑战]sekurlsa.dll逆向分析challenge(可能发现windows系统账号存储机制的小秘密)
简单分析了下,DLL本身没有解密代码,结合了两个DLL获取了密码的原文。
有兴趣的同学,可以继续深入分析。
这里给出我分析几个点

1 通过 LsaEnumerateLogonSessions() 获取活动Session的LUID

2 在模块 wdigest 中
.text:7EAC538A 008 8B 0D AC E2 AC 7E                       mov     ecx, ?l_LogSessList@@3U_LIST_ENTRY@@A ; _LIST_ENTRY l_LogSessList
.text:7EAC5390 008 8B 45 08                                mov     eax, [ebp+arg_0]
.text:7EAC5393 008 89 08                                   mov     [eax], ecx
.text:7EAC5395 008 C7 40 04 AC E2 AC 7E                    mov     dword ptr [eax+4], offset ?l_LogSessList@@3U_LIST_ENTRY@@A ; _LIST_ENTRY l_LogSessList

获取导出变量地址 ?l_LogSessList@@3U_LIST_ENTRY@@A ; _LIST_ENTRY l_LogSessList
l_LogSessList 变量地址 sekurlsa 10035868

3 遍历l_LogSessList 得到 指定LUID的密码密文。
枚举列表处理地址 sekurlsa 10014B80

4 调用在模块 lsasrv 中 内部函数LsaUnprotectMemory进行解密
LsaUnprotectMemory函数指针保存在 sekurlsa  10035870

佩服作者对系统安全机制的研究深度
PS: getWDigest导出函数也可以获取密码。

不早了,明天还要Working。
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2011-11-16 13:26
0
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2011-7-13 12:29
0
分享我的经历
开个VPN服务吧
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2011-4-30 19:07
0
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2010-12-25 15:51
0
[求助]我真的想去自杀!
希望这是个圣诞节的玩笑。
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2010-12-2 21:32
0
[招聘]北京盛安怡和公司招聘开发人员
顶一个,这个一定要给力支持
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2010-11-18 19:16
0
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2010-11-1 12:32
0
关于vs2010的reloc
Linker 时加参数 /FIXED
参考 http://msdn.microsoft.com/zh-cn/library/w368ysh2%28v=VS.100%29.aspx
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2010-10-24 13:33
0
[讨论]第三题,抛砖引玉
我也一段Name的计算代码
int sub_4078E0(char* a0)
{
	char *p = a0;
	while (*p)
	{
		p++; 
		p++;
		if (*(p-1) == '\0')
		{
			return p-a0-1;
		}

		p++;
		if (*(p-1) == '\0')
		{
			return p-a0-1;
		}

		p++;
		if (*(p-1) == '\0')
		{
			return p-a0-1;
		}
	}

	return p+1-a0-1;
}

char *memcpy_r(char* a0, char* a4, int a8)
{
	char *p = a0;
	while (a8>0)
	{
		*p = *(a4-a0+p);
		p++;
		a8--;
	}
	
	return a0;
}

int bswap(int n)
{
	_asm {
		mov eax, n
		bswap eax
		mov n, eax
	}
	return n;
}


void my_sha1_compile(sha1_ctx ctx[1])
{
	sha1_compile(ctx);
	return;

}

void my_sha1_hash(sha1_ctx ecx[1], char* a0, int a4)
{
	int eax = ((ecx->count[0]>>3) & 0x3f);
	ecx->count[0] += a4*8;
	if (ecx->count[0] < (sha1_32t)a4*8)
	{
		ecx->count[1]++;
	}
	ecx->count[1] += (a4>>29);
	if (a4 < (0x40 - eax))
	{
		memcpy_r((char*)ecx->wbuf+eax, a0, a4);
		return;
	}

	memcpy_r((char*)ecx->wbuf+eax, a0, (0x40 - eax));
	my_sha1_compile(ecx);
	int va4 = (0x40 - eax);
	int ebp = va4+0x3f;
	char* ebx = (char*)ecx->wbuf+0x100;

	if (ebp < a4)
	{
		do {
			my_sha1_compile(ecx);
			va4 += 0x40;
			ebp += 0x40;
			ebx += 0x100;
		} while(ebp < a4);
	}

	memcpy_r((char*)ecx->wbuf, a0+va4, a4-va4);
	return;

}

void my_sha1_end(sha1_ctx ecx[1], char* a0)
{
	char v1c[8] = {0};
	*(int*)(v1c+4) = ecx->count[0];
	*(int*)(v1c) = ecx->count[1];

	int ecx1;
	for (ecx1=0; ecx1<2; ecx1++)
	{
		*(int*)(v1c+ecx1*4) = bswap(*(int*)(v1c+ecx1*4));
	}

	sha1_32t    i = (sha1_32t)((ecx->count[0]>>3) & 0x3f);
	static char s_byte_40CD50[64] = {'\x80'};
	my_sha1_hash(ecx, s_byte_40CD50, (i<56?56-i:120-56));
	my_sha1_hash(ecx, v1c, 8);
	char v14[20];
	for (ecx1=0; ecx1<5; ecx1++)
	{
		*(int*)(v14+ecx1*4) = bswap(ecx->hash[ecx1]);
	}
	memcpy_r(a0, v14, 20);
	memset(ecx->hash, 0, 20);
	return;
}

bool sub_401000(int ecx, char *edi, char *a0)
{
	char v30[32+12] = {0};

	if (edi == NULL || a0 == NULL)
	{
		return false;
	}

	DWORD dwVolumeSerialNumber;
	GetVolumeInformationA("C:\\", NULL, 0, &dwVolumeSerialNumber, NULL,NULL, NULL, 0);
	memcpy_r(v30, a0, ecx);
	*(DWORD*)(v30+ecx) = dwVolumeSerialNumber;
	memcpy_r(v30+ecx+4, "Tencent", sub_4078E0("Tencent"));
	sha1_ctx v8c;
	sha1_begin(&v8c);
	v8c.hash[0] = 0xB1CAB1CA;
	v8c.hash[1] = 0xCCBFCCBF;
	v8c.hash[2] = 0xBFB2D6BE;
	v8c.hash[3] = 0xF8C7D8B5;
	v8c.hash[4] = 0xEEC7BCCD;
	my_sha1_hash(&v8c, v30, ecx+11);
	my_sha1_end(&v8c, edi);
	return true;
}



sha1系列函数的代码,到网上搜吧
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2010-10-24 12:13
0
[讨论]第三题,抛砖引玉
我也来一段计算的代码
void GetCode(unsigned char p[20], char code[32])
{
	int ebp = 0;
	int ebx = 0;
	int esi = 0;
	char str[33] = "ABCDEFGHJKMNPQRSTVWXYZ1234567890";

	int flag[][2] =
	{

		{0xF8, -3},

		{0x07,  2}, //+
		{0xC0, -6},

		{0x3E, -1},

		{0x01,  4}, //+
		{0xF0, -4},

		{0x0F,  1}, //+
		{0x80, -7},

		{0x7C, -2},

		{0x03,  3}, //+
		{0xE0, -5},

		{0x1F,  0}, //+

		{0xF8, -3},

		{0x07,  2}, //+
		{0xC0, -6},

		{0x3E, -1},

		{0x01,  4}, //+
		{0xF0, -4},

		{0x0F,  1}, //+
		{0x80, -7},

		{0x7C, -2},

		{0x03,  3}, //+
		{0xE0, -5},

		{0x1F,  0}, //+

		{0xF8, -3},

		{0x07,  2}, //+
		{0xC0, -6},

		{0x3E, -1},

		{0x01,  4}, //+
		{0xF0, -4},

		{0x0F,  1}, //+
		{0x80, -7},

		{0x7C, -2},

		{0x03,  3}, //+
		{0xE0, -5},

		{0x1F,  0}, //+

		{0xF8, -3},

		{0x07,  2}, //+
		{0xC0, -6},

		{0x3E, -1},

		{0x01,  4}, //+
		{0xF0, -4},

		{0x0F,  1}, //+
		{0x80, -7},

		{0x7C, -2},

		{0x03,  3}, //+
		{0xE0, -5},

		{0x1F,  0}, //+
	};

	int t20 = 0;
	int t32 = 0;
	int da = 0;
	while (esi<20)
	{
		t20 |= flag[ebx][0];
		t32 |= flag[ebx][1]>0?(flag[ebx][0]<<flag[ebx][1]):(flag[ebx][0]>>-flag[ebx][1]);
		int t = (flag[ebx][0]&p[esi]);
		da |= flag[ebx][1]>0?(t<<flag[ebx][1]):(t>>-flag[ebx][1]);

		if (t20==0xff)
		{
			t20 = 0;
			esi++;
		}
		if (t32==0x1f)
		{
			code[ebp] = str[da];
			ebp++;
			da = 0;
			t32 = 0;
		}

		ebx++;
	}

}
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2010-10-24 12:03
0
精华数
RANk
105
雪币
10
活跃值
关注数
粉丝数
0
课程经验
0
学习收益
0
学习时长
基本信息
  能力排名: No.1300
  等    级: LV6
活跃值  活跃值:活跃值
  在线值:
  浏览人数:259
  最近活跃:----
  注册时间:2006-09-10
勋章
能力值

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册