当前位置: 首页 > news >正文

网站上线流程图惠州注册公司流程和费用

网站上线流程图,惠州注册公司流程和费用,做网站的大创结项,长春国企招聘网官网什么是逆向工程大家好#xff0c;我是写代码的篮球#xff0c;这篇文章转自小白哥的文章。给大家出一道思考题#xff1a;用C语言设计一个程序#xff0c;验证输入的密码是否是“12345678”#xff0c;如果验证成功#xff0c;就输出“success”#xff0c;如果验证失败… 什么是逆向工程大家好我是写代码的篮球这篇文章转自小白哥的文章。给大家出一道思考题用C语言设计一个程序验证输入的密码是否是“12345678”如果验证成功就输出“success”如果验证失败则输出“failed”。我想大部分新手小白估计会这么写#include stdio.h #include string.hint main() {char buf[10]  {0};scanf(%s, buf);if (strcmp(buf, 12345678)  0) {printf(success);} else {printf(failed);}return 0; }上面的代码编译后会生成一个可执行程序咱们来对这个可执行文件进行一下反编译看看能看到什么下图是在反编译神器IDA中可执行文件反编译出来的汇编指令图可以非常清晰的看到一些字符串的信息success、failed、1234567。再认真一看main函数中有一个分支判断根据判断的结果走入左右两个分支分别输出success和failed。如果新手看不懂上面的反汇编图那可以再使用IDA的神级功能F5反编译高级语言功能直接将上面的汇编程序再进一步还原成C语言。可以对照一下上图中的C函数代码和原来我们的源代码还原度非常的高了字符串比较的功能逻辑暴露无遗。可以看到通过这种方式进行密码匹配非常不安全对方拿到你的程序一反编译就能看到密码是什么了。不过咱们今天的文章主题不是探讨如何进行安全地进行密码比较而是另一个主题逆向工程。什么是逆向工程维基百科中的解释如下逆向工程(Reverse Engineering)又称反向工程是一种技术过程即对一项目标产品进行逆向分析及研究从而演绎并得出该产品的处理流程、组织结构、功能性能规格等设计要素以制作出功能相近但又不完全一样的产品。逆向工程的概念起源于商业和军事领域后延伸到软件领域。在软件领域通过对程序文件进行逆向分析推导出程序对源代码设计的过程称为软件逆向工程。比如上面通过分析可执行文件还原出C代码分析jar包/class文件还原出Java源码这都属于软件逆向工程。软件逆向工程是网络安全领域中的一个重要分支网络黑客通过逆向工程可以获得目标的程序原理破解软件的权限这一般发生在商业软件领域。另外一方面黑客通过逆向分析也常用来发现软件漏洞用来对其发起攻击Windows作为一个不开源的操作系统就经常遭遇这样的事情。本文就来探讨一下逆向工程一般是怎么进行的需要学习哪些东西程序反编译逆向的一开始通过会对目标进行反编译。作为软件开发者对编译这个词应该不会陌生我们写好了程序代码然后使用编译器将其转换成可执行的程序这个过程叫做编译。反编译自然就是这个过程的逆过程那该选择什么样的程序进行反编译呢对于C、C、Golang等类型语言编写的程序我们一般使用IDA进行反汇编。对于Java语言编写的class文件和jar文件我们一般使用jd-gui进行反编译。对于C#语言编写的可执行程序我们一般使用reflector进行反编译。所以学习上面三款反编译工具的使用对学习逆向工程非常重要。可执行文件格式不同的操作系统平台具有不同的可执行文件格式如Windows上的PE文件、Linux平台的ELF文件、MacOS上的Mach-O文件一个可执行文件中除了源代码生成的汇编指令还有静态数据如代码中引用到的字符串导入导出信息文件属性信息等等掌握提取这些信息会对咱们了解目标程序非常有帮助。这就需要学习不同平台上可执行文件的格式尤其是PE文件和ELF文件是逆向工程中最常打交道的文件格式。CPU指令集在逆向分析程序时最主要的精力和时间就是在阅读和分析反编译出来的汇编指令。所以CPU的指令集和汇编语言是搞逆向的同学必学的一门课。常见的PC端CPU就是Intel的x86、x64和AMD64移动端的就是ARM架构。建议先从最基本的x86开始学习尤其要注意网络上很多教程讲的还是16位实模式下的汇编语言非常容易误导人。实模式当然要了解但要把精力放在保护模式下32位汇编语言。等x86入了门可以扩展学习x64到后期再扩展学习ARM。学习汇编语言不仅仅是学习汇编指令更是在学习了解CPUCPU有哪些寄存器分别有什么用它是如何访问内存如何进行寻址如何进行运算等等。高级语言特性咱们逆向工程的目标大都是用C/C/Java/C#这样的高级语言编写出来的程序要想还原出程序的代码逻辑如果不懂高级语言本身那肯定是不行的。当然做逆向的同学不必要像专业的开发同学那样对这些语言的特性烂熟于心掌握很多编程技能这倒不用。但掌握这些语言的基本编程技能还是有必要。拿C语言来说C语言中函数调用原理参数如何传递函数中的局部变量如何分布数组如何存储结构体成员如何内存布局指针又是如何实现的等等这些基础概念咱们得知道不然拿到反汇编代码也不知道如何与高级语言进行转换。像上面说到的这些C语言知识学习的时候要自己对比源码和编译后的汇编指令长什么样反复对比学习产生条件反射。除了这些还要关注C中面向对象实现原理虚函数机制this指针如何传参new和delete/delete []等等在汇编指令层如何实现。有些人说咱不是有F5大法吗直接一键搞定当然F5功能非常强大我也不反对使用工具但我们不能过分依赖于工具不然就变成一个彻底的工具人尤其是对于初学者自己尝试从汇编指令转换成高级语言会让自己对技术底层原理理解的更加透彻。而且有很多时候F5功能用不了那个时候还得靠自己的知识上软件调试很多时候光靠静态分析无法实现目标比如程序进行了加壳等技术在静态分析下看到的全是错误的指令代码甚至让反编译工具无法分析。这个时候就需要结合动态分析技术一块儿上让程序实际运行起来再来对其进行分析所以掌握软件调试技术也是逆向工程中不可缺失的一环。常用的调试器有工具插件非常强大的OllyDbg、微软官方出品的可以进行内核级调试的WinDbg、以及Linux平台上的GDB等等。掌握这三款调试器的使用能够帮助我们快速对目标进行动态行为分析对关键代码段进行调试研究乃至将内存中的程序文件dump到文件中再使用反编译工具进行静态分析等等。结语以上就是我总结的几点学习逆向工程需要关注的知识点希望对大家有帮助。一个超强的逆向分析软件推荐阅读专辑|Linux文章汇总专辑|程序人生专辑|C语言我的知识小密圈关注公众号后台回复「1024」获取学习资料网盘链接。欢迎点赞关注转发在看您的每一次鼓励我都将铭记于心~
http://www.zqtcl.cn/news/293662/

相关文章:

  • 四川万景建设工程有限公司网站做公司网站用什么系统
  • 长沙企业建站系统3d视频制作公司
  • 长沙的网站制作公司网站建设方案的需求分析
  • 电子商务网站发展建设论文网站开发需要经过的几个主要阶段
  • 建设网站外贸做网站必须会php吗
  • 网站建设费用的请示丹徒区建设局网站
  • 上海网站制作机构个人做外贸网站违法吗
  • 咖啡厅网站开发目标汕头最新消息今天
  • 广州做外贸网站的公司简介做行业门户网站注意什么
  • 专业网页网站设计图书成都医院做网站建设
  • 浙江网站建设dyfwzx网站开发的广告词
  • 网站 seo 优化 效果中华室内设计网公众号下载
  • 如何自己建网站企业网站建站快车的优点
  • 目前做网站的公司有哪些管理系统中的计算机应用
  • 百度网站服务器企业网站报价
  • 网站后台账户如何做会计分录电商数据查询平台
  • 素材动图网站90设计app下载
  • 绍兴网站设计公司网站空间位置是什么
  • 高端网站设计品牌珠海网站建设最新报价
  • 做网站的商家怎么赚取流量费房地产怎么做网站推广
  • 企业网站建设基本流程网站积分方案
  • 网站定位与功能分析网站常见故障
  • 深圳电子商务网站制作桂林市防疫最新政策
  • 北京网站建设备案代理网站建设计划建议
  • 湛江公司做网站wordpress如何设置网站地图
  • wordpress攻防优化方案
  • 义乌市建设银行分行网站宜春静态管理
  • 企业网站优化电话17做网店类似网站
  • 南京网站建设黄页网站大全在线看免费
  • 网站开发过程记录定制西服