[英]How to do Server-Side C# SQL Verification
我见过许多例子使用这样的东西,这是客户端身份验证:
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服务器。
好吧,在给你任何答案之前让我澄清一下:现在,就.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#语法级别编辑编译文件! ( 见截图 )。
总而言之,你不能安全。
如上所述,你可以阻止黑客使用强混淆器对你的软件进行反编译/去混淆,这些混淆器在市场上是一种新的,它们的构建是为了满足更高程度的保护:
这3个产品是为解决难题而制造的,并且主要是克制你的黑客:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.