程序员如何写更安全的代码?

《DeepSeek:你的AI新朋友,让代码和脑洞齐飞!》 一篇让小白也能看懂的“赛博魔法”指南 一个能陪你写代码、搞数据、聊人生的“AI全能助手”! 阅读详情

点击上方蓝字关注小道安全

技术背景

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

字符串的安全方案

直接使用字符串

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

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

字符串赋值到数组使用

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

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

调用系统函数安全方案

直接调用系统的函数

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

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

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

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

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

总结

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

End

更多最新IT资讯,可以关注下面公众号

AI是怎么帮程序员写代码的?全流程揭秘! 过去,写代码是程序员的专属技能,需要熟悉语言语法、API、算法、项目结构,时常 Google 各种报错、翻文档、抄 Stack Overflow。但随着 AI 技术的发展,的出现,正在悄悄改变这一切。从自动补全、智能纠错,到自动生成代码、调试分析、优化建议,AI 已经成了程序员写代码的好帮手。那么,AI 到底是怎么帮我们写代码的?具体能做什么?效果如何?今天这篇文章就来给大家科普一下,AI 在编程领域的应用现状和未来趋势。 阅读详情

相关推荐

编写安全的代码

编写安全的代码 希望各位喜欢

教你如何写更安全的代码

文章目录1.技术背景2.字符串的安全方案1.直接使用字符串2.字符串赋值到数组使用3.调用系统函数安全方案1.直接调用系统的函数2.自定义实现函数再调用函数4.总结 1.技术背景 作为程序开发人员,我们害怕,听到开发的代码,被测试出bug;我们更害怕,听到我们所开发出来的产品上线了,被新手安全研究员给反汇编逆向破解,代码功能直接被人给盗取了。下面根据我自己的一些项目经验,跟大家分享两点如何能开发出相对安全的代码。以下方案不局限于任何语言代码开发,是一个相对通用的安全编码方案。 2.字符串的安全方案 1.直接

深耕安全技术研究 1939

编写安全的代码03(中文版)

编写安全的代码

代码恐怖故事:揭秘形成复杂代码库的常见原因

【编者按】本文主要分享一些开发者在软件开发行业中遇到的复杂代码库所带来的问题和挑战。本文列举了造成复杂代码库的常见原因:过分抽象、过度通用化、虚假的测试覆盖、对过时技术的过度热衷、缺乏架构设计、缺少代码版本控制等。文章还强调了管理层对复杂代码块问题重视的重要性,并指出这些复杂代码库会随着时间的推移变得越来越庞大,需要更多的开发人员来处理。原文链接:https://digma.ai/blog/cod...

优快云资讯 5851

LangChain实战:用FAISS搭建本地文档问答系统(含Word文件处理避坑指南)

本文详细介绍了如何利用LangChain框架和FAISS向量数据库构建本地化智能文档问答系统,特别针对Word文档处理中的技术难点提供实用解决方案。通过模块化设计、本地化支持和多格式兼容,实现高效文档处理与精准问答,满足企业对数据隐私和安全的需求。

o4p5q6r7s的博客 409

OpenCV学习笔记(25)基于MFC和OpenCV的摄像机定标与立体匹配测试程序(20140505更新)

最近整理了一下这两年一直在用的摄像机定标与立体匹配测试程序,将代码进行了重构,界面也做了调整,分享出来方便有需要的朋友使用。当然我的编程能力有限,程序可能还有各种bug,请大家多多包涵。相关问题欢迎留言或email联系讨论,谢谢! ==================================================================================源码

晨宇思远 5万+

每个开发人员都应该知道的 10 大安全编码实践

所以你有它。这是每个开发人员都应该知道的十种安全编码实践。它们一起可以减少错误并保护你的系统免受恶意活动的侵害。通过遵循这些约定,你可以帮助确保代码安全、保护你的公司并减少被攻击者利用的机会。

yz_weixiao的博客 635

首个FDA认证开源医学影像AI平台Comp2Comp:从CT自动分析到临床部署全解析

深度学习模型在医学影像分析领域正成为变革性力量,其核心原理是通过卷积神经网络自动学习图像特征,实现精准分割与检测。这一技术价值在于将高度依赖医生经验的定性、主观判断,转化为高效、客观、可重复的定量分析,极大提升了诊断的一致性和工作效率。在应用场景上,医学影像AI已广泛渗透于疾病筛查、辅助诊断、预后评估及治疗方案规划等多个环节。本文聚焦于获得FDA 510(k)认证的开源平台Comp2Comp,它集成了主动脉钙化评分和椎体骨密度分析双任务,通过串联式的U-Net分割网络与目标检测模型,构建了从DICOM预处理

weixin_33725126的博客 653

网络安全编程:保护你的代码免受攻击

随着互联网的普及,越来越多的应用和服务都建立在网络之上。因此,编写安全的代码是保障网络安全的重要一环。在数字化时代,网络安全已成为每个人都必须面对的重要议题。对于程序员和开发者来说,编写安全的代码更是至关重要。本文将为您科普网络安全编程的基本概念和方法,帮助您保护代码免受攻击。总之,网络安全编程是保障网络安全的重要一环。通过掌握网络安全编程的基本原则和实践方法,我们可以编写出更加安全可靠的代码,保护我们的系统和数据免受攻击和威胁。学习网络安全编程需要掌握一定的编程基础和安全知识。

ibgbhnmjjj的博客 701

外贸英文函电第三版张梅英课后习题答案解析

我参加了一些外贸模拟竞赛,将所学知识运用到实际工作中,取得了不错的成绩。此外,我还积极参与了一些外贸实践活动,如参加实习、担任志愿者等,从中积累更多的经验。在这个过程中,我逐渐摸索出了一套适合自己的学习方法,不仅提高了学习效果,还增强了自信心。通过学习这本书,我们可以提高自己在外贸领域的沟通能力,更好地应对未来的工作挑战。在学习这本书的过程中,我遇到了一些困难,比如对某些专业术语的理解不够透彻,对信件的结构和格式掌握不够熟练。出版社: 高等教育出版社。上传者: ʚ河西撒手没ɞ。

weixin_58833001的博客 1425

stc8g1k08硬件iic读取aht20温湿度及0.91寸oled显示

使用stc8g1k08读取aht20温湿度及0.91寸oled显示。

qq_61688416的博客 2771

【周鸿祎亲授代码安全心法】:揭秘顶级程序员的可读性与防御性编程秘诀

掌握周鸿祎眼中的好代码:安全与可读性,提升程序质量。聚焦防御性编程与清晰结构,适用于企业级开发与安全敏感场景。通过命名规范、模块化设计和漏洞预防策略,实现易维护、高可靠代码。程序员进阶必看,值得收藏。

ProceChat的博客 609

ARKit面部动画实战:如何用blend shape让数字人表情更自然(附中文对照表)

本文深入探讨了如何利用ARKit的blend shape技术驱动数字人面部动画,以实现更自然生动的表情。文章提供了详细的blend shape中文对照表,并分享了实战技巧,包括构建复合表情动画序列、处理不对称性与微表情,以及性能优化策略,旨在帮助开发者高效提升数字人的表情表现力。

weixin_29292535的博客 326

华为java安全编码规范_java安全编码指南之:基础篇

简介:作为一个程序员,只是写出好用的代码是不够的,我们还需要考虑到程序的安全性。在这个不能跟陌生人说话世界,扶老奶奶过马路都是一件很困难的事情。那么对于程序员来说,尤其是对于开发那种对外可以公开访问的网站的程序员,要承受的压力会大很多。 任何人都可以访问我们的系统,也就意味着如果我们的系统不够健壮,或者有些漏洞,恶意攻击者就会破门而入,将我们辛辛苦苦写的程序蹂躏的体无完肤。 所以,安全很重要,...

weixin_39862847的博客 1611

论文阅读:SuperGaussians: Enhancing Gaussian Splatting Using Primitives with Spatially Varying Colors

Gaussian Splattings 在基于高斯显式表示的多视图重建中展示出了令人印象深刻的结果。然而,当前的高斯基元只有单视图依赖的颜色和不透明度来表示场景的外观和几何形状,导致了一种非紧凑的表示。在本文中,我们引入了一种名为“超高斯(SuperGaussians)”的新方法,它在单个高斯基元中利用空间变化的颜色和不透明度来提高其表示能力。我们实现了双线性插值、移动核,甚至是小型神经网络作为空间变化函数。

m0_48319749的博客 1508

YOLO训练/写作脚本目录一览 | 涉及标签格式转换、数据扩充、热力图、感受野、精度曲线、数量统计等近百个脚本文件

在大家购买专栏后,便可获得全部的脚本文件。在获取到文件后,只需按照将程序放在个人项目中即可一键运行。

Limiiiing的博客 2376

AI时代,编程已死?不,它比以往任何时候都更重要!

背后是几千名工程师写的数百万行代码,把AI和汽车的刹车、转向、传感器等等硬件系统完美结合起来,才有了你看到的丝滑体验。就在大家觉得可以“躺平”的时候,AI界的顶流大神,谷歌大脑的联合创始人吴恩达(Andrew Ng)直接在社交媒体上开喷了:……现在,立刻,马上,去打开你的电脑,写下第一行属于你的“Hello, World。他们比谁都清楚,AI是他们手里的“金箍棒”,而程序员,才是那个能挥舞金箍棒的“孙悟空”?那些既懂编程本质,又会利用AI这个“超级武器”的人,注定会成为这个时代最抢手的人才。

加百力 的技术博客 985

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java学习之覆写

Java学习之覆写 1.概念 在子类中定义与父类完全相同的属性或方法的名称,称为覆写。 2.作用 可以在不改变父类的方法或属性的前提下,创建一个与父类有相同名称的方法或属性,使得程序更加安全。 3.条件 对于方法覆写和属性覆写: (1)子类覆写的方法不能有比父类更严格的访问控制权限。 (2)父类方法若是用private声明,则该方法不能被子类覆写。 4.举例 方法覆写: class A{ public void print(){ System.out.println("A");//调用该函数后输

只须一笑不须愁X的博客 766

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

AI冲击下,程序员该何去何从?从“写代码的人”到“解决问题的人”

生成式AI正在以前所未有的速度进入软件开发。从代码补全,到生成整个模块,再到能够读取仓库、修改文件、运行测试、提交代码的Coding Agent,程序员的工作方式已经发生变化。 于是一个问题越来越频繁地出现: AI越来越会写代码,程序员以后还有出路吗? 答案并不是简单的“AI无法替代程序员”,也不是“程序员马上就要失业”。 更准确地说: AI正在淘汰一部分“写代码的工作”,同时重新定义“程序员”这个职业。 未来真正值钱的,不再只是一个人一分钟能敲多少行代码,而是他能不能理解需求、设计系统、判断A

weixin_75169399的博客 401

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

AI Agent开始接管开发流程,网站建设公司未来还需要程序员吗?

AI Agent接管越来越多开发任务已经是一个很清晰的趋势。基础页面、常规组件、简单接口和重复性代码,未来很可能大量由AI完成。但企业网站项目中的业务理解、架构判断、代码质量、安全、服务器、复杂故障处理和长期维护,并不会因此自动消失。恰恰相反,代码生成越来越容易以后,判断什么应该生成、生成结果是否可靠,以及怎么让整个系统长期稳定,反而会变得更加重要。

hzxpaipai的博客 330

程序员用AI来写AI代码,“卷死”其他程序员?

AI生成的代码你敢用吗? 用AI算法帮程序员写AI算法?或许不少程序员“你已经是一个成熟的AI了,该学会自己补全代码了”的心愿就要实现。 在今年6月份,GitHub与Open AI一同合作,推出了一款名为“GitHub Copilot”的AI工具,Copilot可以根据上下文自动补全代码,包括文档字符串、注释、函数名称、代码,只要编程者给出一定提示,这款AI工具就可以补全出完整的函数。 GitHub Copilot官网 令人震惊的是Copilot还在不断进化。在近日举行的GitHub Uni.

m0_46163918的博客 1万+

程序员用AI写代码被开除:你以为的神器可能是坑王?

上个月,硅谷一家公司开除了用Copilot写代码的程序员。这事儿在程序员圈炸了锅——用AI写代码不是行业常态吗?怎么突然就变"高危操作"了?

HUANGXIN9898的博客 1821

论「能写代码」的程序员与「会写代码」的程序员

点击上方“程序人生”,选择“置顶公众号”第一时间关注程序猿(媛)身边的故事之所以提这个话题,跟前两天在微信群里的讨论有关,年后本该是跳槽、找工作的高峰月份,各公司面试邀约应该很多,但是听群里的反馈却是...

程序人生的博客 7589

DeepSeek:AI代你写代码,程序员却加班更狠了?!

但神奇的是,我反而沉进去调试细节,比如加个动画效果或优化响应式布局,结果加班到凌晨——代码更完美了,可人累成狗。它不完美,有时输出冗长需要精简,但那份“手把手教”的感觉,像老朋友在背后推你一把。行业在变,工具在更新,那资源库我强烈推荐存着:https://tool.nineya.com/s/1ij30k101 里面素材全免费,包你少走弯路。就像前端做CSS动画,以前是手动调参数,现在DeepSeek建议“用transition加ease-in-out更丝滑”,我就忍不住试验新特效。哇,那瞬间我像中了奖!

weixin_50019283的博客 600
上一篇: 程序员编码时都戴耳机,到底在听什么?
下一篇: 字节二面,让写一个LFU缓存策略算法 !
编程IT圈
博客等级 码龄6年 1130粉丝 544原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值