五千年(敝帚自珍)

主题:闲聊密码 外一篇——悲惨的DVD(上) -- 代码ABC

共:💬53 🌺445
分页树展主题 · 全看首页 上页
/ 4
下页 末页
      • 家园 对反向工程很感兴趣,您能给说说怎么做的吗?

        软件发布时都是编译后的代码,怎么才能把1010001恢复成原有状态?

        • 家园 逆向工程不仅仅是反编译

          编译器也是一种翻译程序,在弄明白其编译规则后可以做到一定程度的反编译。这是软件逆向工程的一种手段,但不是唯一手段。一则当编译器做了优化之后(通常都会做),反编译就很困难。二则反编译后还需要分析反编译出来的代码——这才是逆向工程的目标。

          实际上,反编译出来的代码本身可读性就很差,所以大多时候是直接分析其执行代码,如使用仿真机,甚至直接使用调试工具。这才是逆向工程的主要手段。别吃惊,我就认识好几个使用汇编(甚至机器码)和我使用C++同样熟练的程序员。

          和仿制飞机之类的工业品不同,软件的逆向工程要容易很多,因为程序本身不但带有功能的信息同时还附带了设计信息。所以有多种手段来达到相同的目标,比如像DVD加密破解,使用的方法是用自己的代码模拟解密的代码。或者像新版蓝光那样跳过——骗过原本的程序,或找出隐藏在其中的秘密信息。

          • 家园 花!您看我理解的对不对。

            逆向工程并不是为了搞清楚软件代码的每一行是什么,而是完整掌握这个软件的所有功能。

            • 家园 差不多

              逆向工程的目的主要就是为了掌握设计思路。具体应用上多数为了破解,所以实际上大多只需要掌握局部的思路即可。

      • 家园 谢谢

        恭喜:你意外获得【通宝】一枚

        鲜花已经成功送出。

        此次送花为【有效送花赞扬,涨乐善、声望】

    • 家园 给花!我们当作男女孩子好好听你讲故事!

      下文呢?

      • 家园 软件的反向工程说穿了就是看汇编语言

        软件的反向工程就是把那些0101的机器指令看明白而已,而且这些机器指令都有对应的汇编语言助记符。一般的做法就是用个反汇编器讲0101的指令转成汇编语言来看,基本上熟练的人,跟看高级语言并没有区别的。

        一般而言,如果编译的时候加了优化开关,看起来就是某些地方稍微有点费解。

分页树展主题 · 全看首页 上页
/ 4
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河