首页
社区
课程
招聘
[求助]这个.net是如何加密的呢
发表于: 2009-12-29 09:34 6606

[求助]这个.net是如何加密的呢

killl 活跃值
10
2009-12-29 09:34
6606
这个.net是如何加密的?

http://kilgray.com/memoq/MemoQSetup.3.6.9.exe

或者这里下载:

http://www.brsbox.com/filebox/down/fc/d26edd42f133a824ebaea41c57bd003e

上面是某网络验证的程序,很容易找到关键的地方:MemoQ.Activator.dll,这里面有几个关键的函数,比如 GetInvalidCredentials等等,但是函数不知道怎么加密了,也不像是混淆,着实看不懂。

以前的版本可以自己写一个新的dll,直接返回新的数据,这个不知道如何处理

新版本的部分代码如下:

[return: MarshalAs(UnmanagedType.U1)]
public virtual unsafe bool IsSerialValid(SerialNumber serialNumber)
{
string message = null;
string str2 = null;
string str3 = null;
byte num4;
bool flag;
cSerialNumber number;
int num2 = (int) stackalloc byte[(__CxxQueryExceptionSize() * 1)];
SerialToImpl(&number, serialNumber);
byte num3 = 0;
try
{
uint num;
try
{
bool flag2 = MemoQ.ActivatorLib.cSerialNumber.IsValid((cSerialNumber modopt(IsConst)* modopt(IsConst) modopt(IsConst)) &number);
num3 = 1;
MemoQ.ActivatorLib.cSerialNumber.{dtor}(&number);
flag = flag2;
goto Label_01FE;
}
catch when (?)
{
num = 0;
int num9 = __CxxRegisterExceptionObject((void*) Marshal.GetExceptionPointers(), (void*) num2);
try
{
try
{
bad_activator modopt(IsConst)* modopt(IsImplicitlyDereferenced) _activatorPtr;
str3 = new string(*_activatorPtr[0][4](_activatorPtr));
throw new ActivatorException(str3);
}
catch when (?)
{
}
if (num != 0)
{
throw;
}
}
finally
{
__CxxUnregisterExceptionObject((void*) num2, (int) num);
}
}
catch when (?)
{
num = 0;
int num8 = __CxxRegisterExceptionObject((void*) Marshal.GetExceptionPointers(), (void*) num2);
try
{
try
{
str2 = "Out of memory";
throw new ActivatorException(str2);
}
catch when (?)
{
}
if (num != 0)
{
throw;
}
}
finally
{
__CxxUnregisterExceptionObject((void*) num2, (int) num);
}
}
catch when (?)
{
num = 0;
int num7 = __CxxRegisterExceptionObject((void*) Marshal.GetExceptionPointers(), (void*) num2);
try
{
try
{
basic_string<char,std::char_traits<char>,std::allocator<char> > local;
std.basic_string<char,std::char_traits<char>,std::allocator<char> >.{ctor}(&local, &?A0xc16b0883.unnamed-global-4);
try
{
exception modopt(IsConst)* modopt(IsImplicitlyDereferenced) exceptionPtr;
std.basic_string<char,std::char_traits<char>,std::allocator<char> >.+=(&local, *exceptionPtr[0][4](exceptionPtr));
message = new string(std.basic_string<char,std::char_traits<char>,std::allocator<char> >.c_str((basic_string<char,std::char_traits<char>,std::allocator<char> > modopt(IsConst)* modopt(IsConst) modopt(IsConst)) &local));
throw new ActivatorException(message);
}
fault
{
___CxxCallUnwindDtor(std.basic_string<char,std::char_traits<char>,std::allocator<char> >.{dtor}, (void*) &local);
}
}
catch when (?)
{
}
if (num != 0)
{
throw;
}
}
finally
{
__CxxUnregisterExceptionObject((void*) num2, (int) num);
}
}
catch when (?)
{
num = 0;
int num5 = __CxxRegisterExceptionObject((void*) Marshal.GetExceptionPointers(), (void*) num2);
try
{
try
{
throw new ActivatorException("Unkown exception");
}
catch when (?)
{
}
if (num != 0)
{
throw;
}
}
finally
{
__CxxUnregisterExceptionObject((void*) num2, (int) num);
}
}
fault
{
if (num3 == 0)
{
___CxxCallUnwindDtor(MemoQ.ActivatorLib.cSerialNumber.{dtor}, (void*) &number);
}
}
}
fault
{
if (num3 == 0)
{
___CxxCallUnwindDtor(MemoQ.ActivatorLib.cSerialNumber.{dtor}, (void*) &number);
}
}
MemoQ.ActivatorLib.cSerialNumber.{dtor}(&number);
Label_01FE:
num3 = 0;
try
{
num4 = (byte) flag;
}
fault
{
if (num3 == 0)
{
___CxxCallUnwindDtor(MemoQ.ActivatorLib.cSerialNumber.{dtor}, (void*) &number);
}
}
return (bool) num4;
}




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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
catch when (?)   是什么东东?
2009-12-30 21:13
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
3
只是Reflector反出来的东西,看不懂
2009-12-31 00:11
0
雪    币: 288
活跃值: (112)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
4
这个dll是C++/CLI的,里面包含了本地代码。
2010-1-8 22:28
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
5
请教rick,这类dll如何进行操作呢?大致的方向能否指点一下吗?
2010-1-9 01:03
0
游客
登录 | 注册 方可回帖
返回
//