编写安全的PC端代码

发布到外网的代码,不要打log

首先得承认,在可能出问题的地方加上log是一个好习惯。但是log很容易暴露一些关键信息,比如代码的处理流程。就算是我们的log输出要有开关才能在Debugview中打印,也是不安全的。因为打log的函数在PE文件中可以被看到,会减少黑客逆向的成本。

所以,在代码中应该用一个宏去控制log的输出,debug版本才把打log的函数编译,release版本就不要带上log了。

敏感数据要加密保存

这个很容易理解,数据如果未经加密,长期保存在内存中,是很危险的。应该选用一些加密算法,只在内存中保存加密后的串,待用到时,再解密。

加密算法的key动态变化

就算数据加密了,黑客也是会通过不断的改变一些值,然后观察内存的变化去分析其中的规律。

举个例子说吧,比如一个玩家身上的金币在一个int存放,这个int是经过加密的。玩家身上有1000金币时,加密串为0XABCD,10金币的加密串为0XEFGH。那么玩家可以不断的从钱庄中存和取金币,然后反复在内存中查看,经过几轮筛选后,玩家就能定位到表示身上金币的int类型加密串的内存位置了!

为了解决这个问题,我们可以在每次读取金币的值时,更换一下加密的key,这样,当玩家把900金币存放到钱庄然后再取出来时,这时候加密的串不再是0XABCD了,这必定会增加玩家的破解成本!

敏感数据不要一次全部传递

如果存在线程A和线程B,线程A通过一个函数func,把一组敏感信息,经过解密后,传递给线程B。黑客只要hook了这个函数func,就能拿到所有的敏感信息。为了提高黑客的破解成本,我们可以把这些敏感信息,分多次传递。

敏感信息不要集中存放

如果敏感信息在内存中是连续存放的,这样会很方便黑客攻击,除了简单的将不同的信息放到不同的内存区域外,我们甚至可以精细到一个变量,放到不同的内存中。比如将一个int分拆成几块,存在不同的内存块中,用到时在拼接起来。

敏感信息添加内存校验码

上文提到,黑客可能会通过观察内存的变化,定位出敏感信息的内存地址。这时候,黑客可能会试探性的修改一些值,然后回到游戏中查看是否生效。

我们需要给敏感数据的内存添加校验码,当读取内存时,先要检查内存的校验码是否匹配,写内存时,也会同时更新校验码。当发现校验码不正确时,我们就知道,此时内存正在被黑客篡改!

小结

所有的这些策略,都不能保证客户端代码的绝对安全,我们只是增加了破解的成本。

时间: 2024-10-06 20:26:52

编写安全的PC端代码的相关文章

根据当前设备环境来做pc端和手机端网页显示

当你的网页使用了两套代码(移动端和pc端代码)来显示你的网页时,就需要用到这种方法: 手机端: if (!/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { window.location.href = "http://你的pc端网址"; } 电脑端: if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { wi

PC端写的API接口和手机端APP联合调试

一.遇到问题的情况:项目框架:asp.net MVC5 ,写的给手机端调用的API接口. 二.自己在本地 IIS上部署项目,在手机端的请求服务器上把地址和端口换上本地部署的,如图所示 三.用管理员的身份打开VS,打开项目.找到调试-->附加到进程 找到部署项目运行对应的进程,选择后添加添加. 然后你的程序也就 进入调试模式,从APP上调用接口,就可以进入到PC端的调试模式,看看传参对不对,PC端代码逻辑等bug调试. 原文地址:https://www.cnblogs.com/ElvisZhong

将PC端的网站转化成手机端网站需要增加以下这段代码即可,再布局一下界面即可

<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" /> 将PC端的网站转化成手机端网站需要增加以下这段代码即可,再布局一下界面即可,布布扣,bubuko.com

七牛云存储android客户端及java服务端代码编写

前一篇博客提到让我很伤心的c应用,由于是一款供用户上传图片的应用,因此必须解决图片存储问题,如果直接将图片存储至服务器,当用户上传图片较多,服务器空间将很快吃紧,同时也没有那么大的带宽,现实中我买的阿里云服务器是最低配置,数据盘才20G,带宽才1M,如果用这样配置的服务器做图片存储,那实在太扯了.于是很自然的想到用图片云存储服务器,通过不断查找资料,最后将目标定位在七牛云和又拍云.在做选择时,主要对比了两者之间的价格及技术优势,也看了很多相关话题讨论,个人认为这两者无论从技术方案还是产品价格,都

jquery支持PC端手机端幻灯片代码

分享一款支持PC端手机端幻灯片代码是一款支持移动触摸,支持鼠标拖拽切换,支持带进度条的自动播放模式.交果图如下 : 在线预览   源码下载 实现的代码. html代码: <div class="flex"> <ul class="slides"> <li data-title="Slide 1"> <img alt="" src="img/beasts_feature.jpg

阅读高手编写的类似QQ聊天的服务端代码业务层设计总结

业务层的代码也应该是面向接口编程,先抽象一个接口或是抽象类,规范一些算法或者功能框架,再在其子类或是实现类中完成具体的方法,易于后期代码的维护. 1.业务层缓存技术 如果数据对实时性要求不高,可以把数据缓存在内存中,提高效率.一般都是利用集合来缓存数据.如下代码: /** * 存放写线程的缓存器 * * @author way */ public class OutputThreadMap { private HashMap<Integer, OutputThread> map; <sp

JS判断是wap端访问网站还是PC端访问,然后进行自动跳转的代码

<script type="text/javascript"> function goPAGE() { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) { windo

Macaca自动化测试之PC端测试

Macaca是一套完整的自动化测试解决方案.由阿里巴巴公司开源: http://macacajs.github.io/macaca/ 特点: 同时支持PC端和移动端(Android.iOS)自动化测试. 支持JavaScript(Node.js).Java.Python. 本篇文章将介绍如何使用该工具时行PC端自动化测试. Install Macaca 1.Macaca由Node.js开发,所以需要安装Node.js. https://nodejs.org/en/ 2.安装Node.js完成.

淘宝购物车页面 -- PC端和移动端实战

最近花了半个月的时间,做了一个淘宝购物车页面的demo.当然,为了能够更加深入的学习,不仅仅有PC端的固定宽度的布局,还实现了移动端在media query为768px以下(也就是实现了ipad,iphone 6 plus,iphone6,S5等)的flexbox弹性布局. 还要再说的是,pc端和移动端淘宝购物车页面的bug基本修复完毕,完全适合一个对html,css,css3 ,html5和js有基础,并且熟悉jquery,scss,熟悉json数据交换格式,jquery ajax的人进行学习