楼主:
Clangpp (Clang++)
2016-04-06 21:24:00https://www.facebook.com/x43x61x69/posts/780870938716449
昨天看到很多人传这一篇文章
我发现周遭很多人都会犯一样的错误。
另外还看到很多新手居然把重要参数写在 #define (preprocessor)中...
(同事的说法 因为编成binary后还是明码
甚至可以直接开档改 所以建议重要参数不要放在 preprocessor)
想问一下有什么书在教安全程式的写法
像是避免strcpy的buffer overflow攻击之类的
把重要参数写在 #define 错了吗?不是很正常?
作者: king37937 (忆~) 2016-04-07 02:21:00
万无一失的程式码-终结 C & C ++ 软件漏洞 <= 这本?
楼主:
Clangpp (Clang++)
2016-04-07 08:04:00我更正一下 重要参数是指密码的部分 我记得没错很容易被反组译 跟加密相关的参数都建议不要放在code当中有错可以更正我一下 因为我是听同事讲的理由是上面描述的
(笑到翻肚) 那用 const 就不会被反组译看到喔?你那同事真的有反组译过自己或别人写的程式吗?电脑安全是另一个领域,而且是进阶课程,认真要做的话,成本非常高,不过你若只要单纯讨论一个实际遇到的问题像是现在这个密码问题,我蛮愿意聊聊的如果要看书,我推荐 Bruce Schneier 的 PraticalCryptography 第 9 和 16 章 Implementation Issues它有教你一点点诀窍,且告诉你不要妄想看个两章就变行家
楼主:
Clangpp (Clang++)
2016-04-07 11:29:00喔喔喔 感谢 愿闻其详 因为我也希望能够导正观念有时候我们接收错误的观念太多 所以我想要理解什么是正确的这种东西我一直很有兴趣 但是不知道从哪边入门所以 密码不建议放在preprocessor是正确的吗??
密码喔... 我想你得先把整件事讲清楚才有办法讨论...什么密码? 程式如何使用? 要防范什么样的威胁?如果直接这样问我,我会告诉你放哪都会被反组译出来#define 最后还是会处理完再代入该放的位置,那个该放的位置大概就是你说的 const,再转成 binary 一样是明码
也有可能是runtime时放进stack,但两者静态分析都秒爆
作者:
L4ys (Lays)
2016-04-07 22:48:00明文只要在 memory 中出现过就抓得出来,没有例外
作者: LiloHuang (十年一刻) 2016-04-08 09:51:00
简单弄可以买一套虚拟机保护的加壳器,找没自动脱壳的复杂一点的就是自己的壳自己做,反反编译跟反静态分析
作者:
descent (“雄辩是银,沉默是金”)
2016-04-08 12:23:00万无一失的程式码:终结C&C++软件漏洞 参考一下
加壳(程式码加密)有个小麻烦,防毒软件会把你当病毒因为病毒超爱用这招来躲防毒软件的扫描 XDDD
作者: LiloHuang (十年一刻) 2016-04-08 14:25:00
多数时候是防毒软件太弱,只能识别壳的部分特征或行为不管三七二十一就判断是病毒,只能手工加壳加花多测试防止逆向工程跟免杀技术是正反两面
要买正版,既然买了也顺便买签章吧(X 正版才不易被杀