首页
社区
课程
招聘
[求助]一串数字的加密解密!
发表于: 2012-7-27 12:23 7821

[求助]一串数字的加密解密!

2012-7-27 12:23
7821
程序调用一个DLL文件来加密一串数字,不知道是怎么加密的,想要逆回。。。。。。不懂算法,请各位帮帮忙,谢谢
主算法地址:10001CD0

   本站下载

下载地址:http://dl.dbank.com/c00ql72esi

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

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 498
活跃值: (1552)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wxq
2
signed int __stdcall Decode2010(int a1, int a2)
{
int v2; // esi@1
signed int v3; // ebp@1
signed int result; // eax@2
int v5; // edi@4
int v6; // ST08_4@4
int v7; // esi@4
int v8; // ST08_4@4
int v9; // edi@4
int v10; // esi@6
int v11; // esi@8
int v12; // eax@10
int v13; // eax@10
signed int v14; // eax@10
int v15; // ebp@11
int v16; // ST08_4@12
int v17; // esi@12
int v18; // ST08_4@12
int v19; // edi@12
int v20; // esi@14
int v21; // eax@16
int v22; // eax@16
int v23; // esi@18
int v24; // eax@18
int v25; // eax@18
int v26; // esi@19
int v27; // ecx@19
int v28; // eax@20
int v29; // edi@20
int v30; // [sp+10h] [bp-50h]@1
int v31; // [sp+14h] [bp-4Ch]@1
int v32; // [sp+18h] [bp-48h]@1
int v33; // [sp+1Ch] [bp-44h]@1
int v34; // [sp+20h] [bp-40h]@3
char v35; // [sp+24h] [bp-3Ch]@4
char v36; // [sp+28h] [bp-38h]@4
char v37; // [sp+2Ch] [bp-34h]@10
char v38; // [sp+30h] [bp-30h]@10
char v39; // [sp+34h] [bp-2Ch]@12
char v40; // [sp+38h] [bp-28h]@12
char v41; // [sp+3Ch] [bp-24h]@16
char v42; // [sp+40h] [bp-20h]@16
int v43; // [sp+44h] [bp-1Ch]@1
char v44; // [sp+48h] [bp-18h]@18
char v45; // [sp+4Ch] [bp-14h]@18
char v46; // [sp+50h] [bp-10h]@18
int v47; // [sp+5Ch] [bp-4h]@1
int v48; // [sp+64h] [bp+4h]@3

CString::CString(&v30);
v47 = 0;
CString::CString(&v31);
LOBYTE(v47) = 1;
CString::CString(&v32);
LOBYTE(v47) = 2;
CString::CString(&v33);
v2 = a1;
LOBYTE(v47) = 3;
CString::operator_(&v33, a1);
v43 = *(_DWORD *)(v33 - 8);
v3 = v43;
if ( v43 >= 3 )
{
CString::operator_(&v32, "3240971658");
v48 = *(_DWORD *)(v32 - 8);
CString::operator_(&v30, v2);
v34 = 1;
if ( v3 < 1 )
{
LABEL_19:
v26 = v31;
v27 = 0;
if ( *(_DWORD *)(v31 - 8) > 0 )
{
v28 = a2;
v29 = v31 - a2;
do
{
++v27;
*(_BYTE *)v28 = *(_BYTE *)(v29 + v28);
++v28;
}
while ( v27 < *(_DWORD *)(v26 - 8) );
}
*(_BYTE *)(v27 + a2) = 0;
Sleep(0xC8u);
LOBYTE(v47) = 2;
CString::_CString(&v33);
LOBYTE(v47) = 1;
CString::_CString(&v32);
LOBYTE(v47) = 0;
CString::_CString(&v31);
v47 = -1;
CString::_CString(&v30);
result = 0;
}
else
{
while ( 1 )
{
CString::operator_(&v31, byte_1000433C);
v5 = *(_DWORD *)(v30 - 8);
v6 = *(_DWORD *)CString::Mid(&v30, &v35, v5 - 1, 1);
LOBYTE(v47) = 4;
v7 = CString::FindOneOf(&v32, v6) + 1;
LOBYTE(v47) = 3;
CString::_CString(&v35);
v8 = *(_DWORD *)CString::Mid(&v30, &v36, v5 - 2, 1);
LOBYTE(v47) = 5;
v9 = CString::FindOneOf(&v32, v8) + 1;
LOBYTE(v47) = 3;
CString::_CString(&v36);
if ( v7 <= 0 || v9 <= 0 )
{
LOBYTE(v47) = 2;
CString::_CString(&v33);
LOBYTE(v47) = 1;
CString::_CString(&v32);
LOBYTE(v47) = 0;
CString::_CString(&v31);
v47 = -1;
CString::_CString(&v30);
return -2;
}
v10 = v7 - v9;
if ( v10 < 1 )
v10 += v48;
v11 = 2 * v10;
if ( v11 > v48 )
v11 -= v48;
v12 = CString::Mid(&v32, &v38, v11 - 1, 1);
LOBYTE(v47) = 6;
v13 = operator_(&v37, v12, &v30);
LOBYTE(v47) = 7;
CString::operator_(&v30, v13);
LOBYTE(v47) = 6;
CString::_CString(&v37);
LOBYTE(v47) = 3;
CString::_CString(&v38);
v14 = *(_DWORD *)(v30 - 8);
if ( v14 >= 2 )
break;
LABEL_18:
v23 = CString::Mid(&v31, &v46, 0, *(_DWORD *)(v31 - 8) - 1);
LOBYTE(v47) = 12;
v24 = CString::Right(&v31, &v45, 1);
LOBYTE(v47) = 13;
v25 = operator_(&v44, v24, v23);
LOBYTE(v47) = 14;
CString::operator_(&v31, v25);
LOBYTE(v47) = 13;
CString::_CString(&v44);
LOBYTE(v47) = 12;
CString::_CString(&v45);
LOBYTE(v47) = 3;
CString::_CString(&v46);
CString::operator_(&v30, &v31);
++v34;
if ( v34 > v3 )
goto LABEL_19;
}
v15 = v14 - 2;
while ( 1 )
{
v16 = *(_DWORD *)CString::Mid(&v30, &v39, v15 + 1, 1);
LOBYTE(v47) = 8;
v17 = CString::FindOneOf(&v32, v16) + 1;
LOBYTE(v47) = 3;
CString::_CString(&v39);
v18 = *(_DWORD *)CString::Mid(&v30, &v40, v15, 1);
LOBYTE(v47) = 9;
v19 = CString::FindOneOf(&v32, v18) + 1;
LOBYTE(v47) = 3;
CString::_CString(&v40);
if ( v17 <= 0 )
break;
if ( v19 <= 0 )
break;
v20 = v17 - v19;
if ( v20 < 1 )
v20 += v48;
v21 = CString::Mid(&v32, &v42, v20 - 1, 1);
LOBYTE(v47) = 10;
v22 = operator_(&v41, v21, &v31);
LOBYTE(v47) = 11;
CString::operator_(&v31, v22);
LOBYTE(v47) = 10;
CString::_CString(&v41);
LOBYTE(v47) = 3;
CString::_CString(&v42);
--v15;
if ( v15 + 2 < 2 )
{
v3 = v43;
goto LABEL_18;
}
}
LOBYTE(v47) = 2;
CString::_CString(&v33);
LOBYTE(v47) = 1;
CString::_CString(&v32);
LOBYTE(v47) = 0;
CString::_CString(&v31);
v47 = -1;
CString::_CString(&v30);
result = -3;
}
}
else
{
LOBYTE(v47) = 2;
CString::_CString(&v33);
LOBYTE(v47) = 1;
CString::_CString(&v32);
LOBYTE(v47) = 0;
CString::_CString(&v31);
v47 = -1;
CString::_CString(&v30);
result = -1;
}
return result;
}


IDAF5过来是这个样子,楼主自己看看吧
2012-7-27 14:50
0
雪    币: 242
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢你的热心回答!

我也拉了,主要是算法不会

如有时间麻烦你一下!
2012-7-27 18:58
0
雪    币: 242
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
走过,路过,,,帮帮忙啊~!
2012-7-29 18:11
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习了,谢谢
2012-7-29 20:02
0
雪    币: 242
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
大牛啊,帮帮忙啊~!~~!~!~
2012-7-31 18:11
0
雪    币: 93
活跃值: (59)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
重新写个dssdll.dll,在其中另写Decode2010函数。已经实现了你想要的功能。
并且已注册成功。
2013-4-15 10:49
0
雪    币: 93
活跃值: (59)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
Decode2010的算法已经知道,并且可以算法也已解决。
2013-5-9 14:53
0
雪    币: 242
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
看不懂。。。。。
2013-11-29 15:40
0
游客
登录 | 注册 方可回帖
返回
//