悬赏分:50 浏览:348 次
没有分了,所以给了50,实在不好意思啊。
问题一:
static private bool ValidatePublicKeyToken()
{
StringBuilder sPublicKeyToken = new StringBuilder();
byte[] baPublicKeyToken = Assembly.GetEntryAssembly().GetName().GetPublicKeyToken();
foreach (byte b in baPublicKeyToken)
{
sPublicKeyToken.AppendFormat("{0:x2}", b);
}
if ("52b73f80d00d732b" == sPublicKeyToken.ToString())
return true;
return false;
}
用上面这段代码来验证DLL,以防止非法调用。这样验证的话用反射还能不能非法调用呢?
PublicKeyToken能仿制吗?我用的.net 2.0
问题二:
这段代码 int a=10;
在VC6(我记得是)中输入最后的;后代码会变成 int a = 10;
为什么在VC++2008 pro 中输入最后的;就不能变成int a = 10;这样了。该怎么设置啊?
|
问题二, “在语句结束时格式化代码” 1.可以非法调用,比如你的 DLL 为 a.dll,非法调用者为 app.exe,理论上说,app.exe 是无法通过你上述代码的检测的,因为它几乎不可能与 a.dll 有相同的 token,但是可以通过曲线救国的方式来调用你的 dll。 a.反编译为 il 然后去除验证代码,重新编译。 b.通过 CLR Profiling 伪造 GetPublicKeyToken 的返回值。 c.查找你程序集中的漏洞或扩展点,通过你的程序集中的方法、委托作为入口程序集,间接执行他的程序。这样 GetEntryAssembly 返回就是你自己的程序集。 2.不太熟悉,看了下选项,貌似没有 C++ 的代码格式化功能,或者说,格式化功能过于简单。 3.用同一个 snk 签名的程序集 Token 是一样的。 同一个snk签名的程序集的PublicKeyToken 都一样吗 关注这个问题,等待snk签名牛人解答 |
|
5个月前 JieNet : 回答者:沙加 - 老鸟四级 您好,非常感谢您的回答,但是我怎么找不到“在语句结束时格式化代码”这选项啊。 还有问题2问的是在VS2008中写C++代码如何像C#那样自动设置代码格式。 |