我见过许多示例使用这样的东西,即客户端身份验证:
bool legitlogin = val_log(username, password);
if (legitlogin)
{
Form2 objFrmMain = new Form2();
this.Hide();
objFrmMain.ShowDialog();
this.Close();
return;
}但是程序破解者要做的就是简单地将if语句改为
bool legitlogin = val_log(username, password);
if (!legitlogin)
{
Form2 objFrmMain = new Form2();
this.Hide();
objFrmMain.ShowDialog();
this.Close();
return;
}然后他们可以重新编译并在C#中分享你的程序的破解版本。我知道有混淆和所有的东西,但这并不能提供足够的保护。
那么,有什么策略可以不在客户端内部进行检查,而是让服务器进行检查呢?
在本例中,服务器是MySQL服务器。
发布于 2017-05-08 19:23:55
让你正确地理解混淆
好了,在给你任何形式的回答之前,让我先澄清一些事情:现在,就.NET编程而言,我们已经消除了闭源程序和开源程序之间的边界:开源去混淆器,不断增长的社区,越来越活跃的成员,等等。所以不只是任何黑客都能做到:
bool legitlogin = val_log(username, password);
if (!legitlogin)
{
Form2 objFrmMain = new Form2();
this.Hide();
objFrmMain.ShowDialog();
this.Close();
return;
}但它们也只能获取代码中有趣的部分,并执行以下操作:
Form2 objFrmMain = new Form2();
this.Hide();
objFrmMain.ShowDialog();
this.Close();简而言之,他们可以做任何他们想做的事情。我记得在一个论坛上有一个老黑客,他破解了一个程序,并使用Code-Cave技术感染了它,这是通过Olly / ASM很难做到的,但对于.NET来说相当容易,例如著名的开源反编译器DnSpy甚至可以让你在C#语法级别编辑编译后的文件!(see screenshot here)。
总而言之,你不可能是安全的。
纯粹的解决方案
因此,你可以阻止黑客使用强混淆程序对你的软件进行反编译/反混淆,这些模糊处理程序在市场上是一种新事物,它们的构建是为了满足更高程度的保护:
你确实有钱,但只有一点点=
这3个产品是为了解决难题,并将最大限度地克制您的黑客:)
https://stackoverflow.com/questions/43402556
复制相似问题