前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何写更安全的代码?

如何写更安全的代码?

作者头像
小道安全
发布于 2021-04-01 15:33:36
发布于 2021-04-01 15:33:36
6500
举报
文章被收录于专栏:游戏安全攻防游戏安全攻防

技术背景

作为程序开发人员,我们害怕,听到开发的代码,被测试出bug;我们更害怕,听到我们所开发出来的产品上线了,被新手安全研究员给反汇编逆向破解,代码功能直接被人给盗取了。下面根据我自己的一些项目经验,跟大家分享两点如何能开发出相对安全的代码。以下方案不局限于任何语言代码开发,是一个相对通用的安全编码方案。

字符串的安全方案

直接使用字符串

不建议使用理由:直接定义使用字符串,因为字符串是一个常量,所以我们直接能在静态反汇编中直接看到字符串的数据信息。

下图可以很清晰的看懂字符串信息”ntdll.dll”,这样就把代码的字符串信息直接暴露给大家,这样大家就可以通过字符串信息做一些对代码不安全的事情了。

字符串赋值到数组使用

建议使用理由:将字符串写到数组里面并进行赋值,使得字符串存放在堆里面,这样在程序的字符串常量信息就无法直接看到字符串信息,这样进行静态分析(IDA)的时候字符串信息就没有展示了,这个需要进行动态分析(ollydbg)才能分析到字符串信息。

下图展示的是通过将字符串信息存储在数组中的汇编代码,在实际的汇编代码中展示的是一串数据,而不是直接的字符串,这就无法直接看到字符串信息去理解代码,要想理解这串字符串信息,那么就需要去做动态调试分析。从而加强代码的安全性。

调用系统函数安全方案

直接调用系统的函数

不建议使用理由:我们在编码过程中,有很多功能系统都已经有提供的函数接口,一般情况下我们都是直接调用系统函数直接进行实现功能。但你知道吗?你这样直接调用系统函数在一些场景下是不安全的,当你的程序在被安全逆向研究的时候,直接可以通过程序的导入表,以及反汇编看到调用的系统函数,这样我们只要一查下系统函数的功能,那么就可以知道大概的功能点,还有只要一挂钩(HOOK技术)上系统的函数,那么你所调用的系统函数的功能就失效了。

下图展示上面函数通过调用系统函数实现的汇编代码。大家可以直接通过展示的系统函数去分析功能。

自定义实现函数再调用函数

建议使用理由:我们对于关键功能函数建议还是采用自己去实现函数功能,再去调用,这样可以加强程序被直接分析的难度,从而加强程序的安全性。

下图是自定义实现函数调用的汇编代码,可以从下面汇编代码看到关键函数是自己实现的,那么要了解该函数功能就需要进入到函数内部去做分析。这从而加强了关键函数功能的相对安全

总结

最后说明,以上是经过项目实践总结出来的安全开发方案。我们在项目开发中需要写高内聚,低耦合的代码,同样也需要写一些没有bug的代码,更需要写一些更加相对安全的代码,更需要写一些能增加逆向破解者分析程序的难度(注:这里会有专业人士会说代码直接加VMP保护,不啥问题都没有了吗?不过这这里只进行说明代码开发的一点安全思路),这个才是我们程序员的终极目标,希望本文所阐述的思想能够让大家有所启发。

End

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小道安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
flutter 版本控制fvm
powershell 管理员身份运行 不会的话,先打开一个powershell 窗口 ,然后右击任务栏,选择第一个,即可进入
徐建国
2021/07/30
9300
flutter 版本控制fvm
Flutter版本控制fvm
安装fvm后,考虑设置环境变量 FVM_HOME 或 FVM_GIT_CACHE,否则默认安装 flutter SDK 缓存路径为 ~/fvm/versions;
徐建国
2021/08/25
2.3K0
鸿蒙版 Flutter 版本管理利器:FVM 使用指南
FVM(Flutter Version Manager)是一个专门为 Flutter 应用开发设计的版本管理工具。它允许开发者在同一台机器上安装和管理多个 Flutter 版本,解决了团队协作和项目迁移时因 Flutter 版本差异导致的兼容性问题。它允许开发者在不同的 Flutter 项目之间快速切换版本,而无需每次都下载和配置新的 Flutter SDK
徐建国
2025/05/13
860
鸿蒙版 Flutter 版本管理利器:FVM 使用指南
Flutter 找不到 android sdk(图文详解)记一次安装中错误的过程
周末的时候升级了windows11的系统,之后再安装flutter的时候遇到下面的问题就做了一下记录 至于如何安装flutter,我在前面的教程里也有写到,就不再阐述。这次我安装的时候用了fvm版本控制工具,
徐建国
2021/11/30
2.5K0
Flutter 找不到 android sdk(图文详解)记一次安装中错误的过程
Flutter开发环境搭建
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。flutter发布的最新版已经支持pc端了。
若与
2019/05/15
1.1K0
Flutter开发环境搭建
FVM 一秒切换VSCode 的Flutter版本
FVM 可以在用户本机通过安装多个Flutter SDK版本,来为项目指定Flutter版本,或者快速在各个版本间切换,解决只有一个Flutter版本对不同项目兼容问题。参考链接
Qson
2022/04/11
2.6K0
FVM 一秒切换VSCode 的Flutter版本
鸿蒙Flutter实战:11-使用 Flutter SDK 3.22.0
参考鸿蒙Flutter实战:01-搭建开发环境文章的说明,首先安装 Flutter SDK 3.22.0。
少湖说
2024/11/03
5940
鸿蒙Flutter实战:11-使用 Flutter SDK 3.22.0
将Flutter程序打包为ios应用并进行安装使用
为设备(ios-release)构建com.example.myTimeApp... ════════════════════════════════════════════════════════════════════════════════ 找不到有效的代码签名证书 您可以通过在Xcode中使用您的Apple ID登录并创建iOS开发证书以及为您的项目创建一个 配置文件来连接到您的Apple开发者帐户,方法如下: 1- 使用以下命令打开Flutter项目的Xcode目标: open ios/Runner.xcworkspace 2- 在导航器中选择“Runner”项目,然后选择“Runner”目标 在项目设置中 3- 确保在Signing & Capabilities > Team下选择了“Development Team”。 您可能需要: - 首先使用您的Apple ID在Xcode中登录 - 确保您拥有一个有效的唯一Bundle ID - 使用您的Apple开发者帐户注册您的设备 - 让Xcode自动为您的应用程序配置配置文件 4- 再次构建或运行您的项目 5- 在iOS设备上信任您新创建的开发证书 通过设置 > 通用 > 设备管理 > [您的新证书] > 信任
fliter
2024/05/11
5350
将Flutter程序打包为ios应用并进行安装使用
鸿蒙Flutter实战:01-搭建开发环境
1.安装 DevEco Studio NEXT IDE, 注意版本应该是 Next,当前最新的是 Beta3
少湖说
2024/10/21
3240
鸿蒙Flutter实战:01-搭建开发环境
choco 安装 和 mkcert 本地https
原文链接:https://blog.spiritling.cn/posts/4cb12659/
SpiritLing
2020/07/20
1.4K0
choco 安装 和 mkcert 本地https
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutte
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-卓伊凡换人优雅草Alex
卓伊凡
2025/02/02
1960
React Native学习笔记(二)—— 概要、开发环境搭建、第一个React Navite程序
在移动端开发项目中。开发资源不够时,同时由两个团队维护安卓和IOS两套原生APP是成本很高的。此时,就需要选择一个同时支持多平台的客户端开发框架,能够使用一套代码,编译出多平台的APP。
张果
2023/04/01
3.7K0
React Native学习笔记(二)—— 概要、开发环境搭建、第一个React Navite程序
Flutter自制工具之fluct助力Flutter快速开发神器
一个帮助开发Flutter应用程序的工具 .---------------------------------------------- | github地址: | https://github.com/rhymelph/fluct | pub地址: | https://pub.dev/packages/fluct `----------------------------------------------
rhyme_lph
2020/03/20
8320
Flutter自制工具之fluct助力Flutter快速开发神器
端开发技术——5个高效的Flutter开发工具
![](https://img-blog.csdnimg.cn/38fbbdcb183a4cb4b51ed03edc91a9fe.png)
思想者杰克
2021/11/04
8860
端开发技术——5个高效的Flutter开发工具
flutter实战项目之博客项目
https://www.bilibili.com/video/bv1uy4y1t7LX
徐建国
2021/11/30
9210
flutter实战项目之博客项目
在WSL2中安装CentOS发行版
通过使用 tar 文件导入任何 Linux 发行版,可在适用于 Linux 的 Windows 子系统 (WSL) 中使用该发行版(即使它不在 Microsoft Store 中提供)。
AiDBA宝典
2023/04/26
11K0
在WSL2中安装CentOS发行版
程序员该如何把 Windows 系统打造的跟 Mac 一样牛逼?
起因:之前一直用Mac开发,换了家公司,只许用Windows下开发,说实话,一开始我是拒绝的,可自从看到了这几个工具以后......
Ai学习的老章
2021/01/12
6810
程序员该如何把 Windows 系统打造的跟 Mac 一样牛逼?
Flutter 2.10 升级填坑指南
事实上按照 Flutter 每个版本的投入使用规律,应该是第三个小版本最稳,以 Flutter 目前庞大的用户量,每次正式版的发布必然带来各种奇奇怪怪的问题,一般情况下我推荐 2.10 版本等到 2.10.3 发布再投入生产会更稳妥,但是如果你等不及官方 hotfix ,那么后面的内容可能可以帮助到你。
GSYTech
2022/03/04
1.5K0
Flutter 2.10 升级填坑指南
React Native在Android当中实践(二)——搭建开发环境
React Native在Android当中实践(一)——背景介绍 React Native在Android当中实践(二)——搭建开发环境 React Native在Android当中实践(三)——集成到Android项目当中 React Native在Android当中实践(四)——代码集成 React Native在Android当中实践(五)——常见问题
Demo_Yang
2018/10/15
1.2K0
Win下必备神器之Cmder
诚言,对于开发码字者,Mac和Linux果断要比Windows更贴心;但只要折下,Windows下也是有不少利器的。之前就有在Windows下效率必备软件一文中对此做了下记载;其虽没oh-my-zsh那么逆天的存在,却也甚是好用,至少要比Windows原生Cmd好出了天际。因为好用,所以“必备”。 ---- 『有则推荐』: 自 2017 年初,就有开始利用闲余时光,打磨个人最新作品——「倾城之链」 ,有意将其打造成优良开放型平台,旨在云集全球优秀网站,让您更为便捷地探索互联网中那更广阔的世界;在这里,您可以
晚晴幽草轩轩主
2018/03/27
3.1K0
推荐阅读
相关推荐
flutter 版本控制fvm
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档