有几个程序员不是被游戏外挂和酷炫的黑客技术所吸引入行的呢?(你非要说高薪?那你还能来看这篇文章?)算法
从初中我才有第一台电脑,那个时候仍是windows95系统连互联网尚未普及,那个时候还只有一些单机小游戏,最火的也就是红色警惕。个人第一款大型单机游戏是西山居的《剑侠情缘外传月影传说》,当时使用4张cd光盘安装(我也不知道是否是正版)。游戏打通关以后就想着有没有别的玩法,在搜索的时候就发现了修改器这个东西,当时比较流行的说法叫金手指。一开始是用别人作好的修改器,到后来就本身用金山游戏本身制做修改器。从那时起就以为作修改器远比游戏自己有意思。windows
后来网游兴起,手里的金山游侠忽然就不香了,虽然能改本地显示可是数据自己没有改变,因而新的技术出现了,CE修改器。接触到CE修改器后才知道原来还有基址和偏移量这种东西,有些游戏取得仍是客户端的数据可是和显示的数据不是用的同一个内存地址,经过CE找到基址和偏移量就能改一些设计不严密的网游。可是毕竟网游的重要数据全在服务端,手中的CE还没发光发热而后又不香了。而后新的技术又出现了!修改游戏封包,经过伪造客户端数据来欺骗服务器。然而没有不少时间去学习这种技术了,由于上高中要努力学习(英雄联盟出现了!这游戏真香)。安全
高中起知道一些研究破解的论坛(这里就不点名了),起初是为了一些"好用"的软件去逛这些地方,后来就翻了翻一些技术文章,全是看不懂的,相似:脱壳,断点,爆破,关键跳。。。这些汉字我都认识就是组到一块儿不知道什么东西。因而就泡在这些知识的海洋里潜水,毕竟要以学业为重(打英雄联盟)!直到大学才正式去研究这些东西,它叫逆向。服务器
学习逆向必定要为了学习而不是要作违法的事!!!
因此这里只有思路没有具体操做网络
逆向目的有两个:学习
逆向分为动态和静态,动态就是将程序启动起来进行逆向,静态是直接分析程序指令(汇编语言)分析算法。编码
动态分析逆向:加密
静态分析逆向:操作系统
动态分析有个先天的优点,能够在运行时自动脱壳,因此动态分析是首选。 静态分析通常是跨平台没法进行动态分析或者很是困难,好比Android和IOS的动态库。 动态分析广泛用于windows操做系统软件逆向(你非要跟我杠Kali?那你赢了) 静态分析我暂时只用在分析不一样平台的动态库
大学毕业以后放弃本行工做(工地搬砖)转行加入程序员大军(网上搬砖),起先从事游戏行业,如今从事物联网行业。 在游戏行业一般要借鉴别人家的资源,而别人家的资源一般是加密过,好比cocos经常使用的xxtea加密。这种加密属于算法公开而隐藏秘钥的方式,只要获取到秘钥就能够解开资源,须要增长破解难度。 如今的工做是物联网平台开发,给客户的都是可执行程序,因此须要进行软件受权,就须要研究多种加密算法。
接下来就软件受权和个人逆向经验来简单分析下各类加密方式。
不管是软件受权仍是互联网传输,对于用户一方来讲消息都是透明的。互联网传输本就是服务器与用户之间通讯,不管发出消息仍是接收消息用户都是能够监听到,即便采用非对称加密方式也只是防止第三方窃取。软件受权就比较难监听,可是毕竟是软件读取受权信息而后再解释称软件能用的配置,只要监视软件内部就能够获取到受权消息,只不过期间成本大小。因此不管哪一种状况用户均可以获取到消息,那只能让获取的难度增大,时间成本增长。
加密方式:
非对称加密:
非对称加密在互联网上能够防止第三方窃取,而在软件受权上只能用做验证,由于不管是公钥仍是私钥都是能够在软件内部获取其中一个,并且最终信息都是要被解密,因此失去了非对称加密的特性。
自定义算法:
能够根据已有算法进行改动来建立本身的加密算法
受权方式:
以上提到的加密算法和受权方式是我所遇到的和比较常见的,其余的一些算法不是已经失去加密性质再就是我还没遇到。(杠精退散)
重要性 不高 的软件受权加密建议:2种以上对称加密加一种非对称加密。非对称加密验签,对称加密解密,能加壳就加壳最好能加花指令和添加无用指令。(你说运行速度慢了?那必定是你选的加密方式有问题)
重要性 高 的软件受权加密建议:去买专业作安全的商业产品吧
加密和逆向一直是矛与盾的关系,加密算法一直在改进,逆向的方法也在改进。安全这方面我也只是个小白,只是分享下工做总结和以往的心得。但不管是作什么都不要损害别人的利益,不要触犯国家的法律,想要提升逆向水平在各个论坛都有教程和一些专门用来练习破解的Creakeme。