跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 反编译 Linux 操作系统
未分類
5 2 月 2021

反编译 Linux 操作系统

反编译 Linux 操作系统

資深大佬 : downstairs 7

并不是为了要获取系统的源码,因为 linux 源码本身就是开源的 只是想问下技术方面的可行性, 如果一个操作系统文件。例如 CentOS 或者 Alpine 系统在由源码 build 后 再逆向,能得到原来的代码吗? 源码本身就是 C,逆向为 C 后,除了变量名字可能是乱码外,还有其他影响吗?

大佬有話說 (29)

  • 資深大佬 : w292614191

    把你想破解的东西发上来,自有大神。

  • 資深大佬 : asmmt

    首先逆向得到的是汇编代码,就算用 ida 之类的工具得到 C 代码,也不可能直接能运行。你自己写个 c 语言小程序,逆向一下看看吧。

  • 資深大佬 : zwy100e72

    c / c++ 编译器编译时会进行很多优化,会导致反编译后的代码可读性下降很多

    反编译到源码最多用来帮助理解,理解后可以按照正常的逻辑再写一遍

  • 資深大佬 : yolee599

    反不出原来的源码,只能得到优化后的代码。可读性非常差。

  • 資深大佬 : BrettD

    编译器的优化能把原来的程序变成亲妈都不认识

  • 資深大佬 : darksword21

    @BrettD #5 大早上班车上看乐了

  • 資深大佬 : fiveelementgid

    @BrettD 这个是真的,优化一言难尽

  • 資深大佬 : f6x

    问题是,,, 就算把编译前的源码给个常人, 轻易也看不懂啊.
    更何况是反编译出来的一堆伪 c 汇编.
    现在的 kernel 有 3000 多万行了吧.
    🙂

  • 資深大佬 : lasuar

    5L 讲得没毛病,你想想假如你的程序 1w 行代码有 9999 个空行,只有一句 print,编译器难道不会过滤空行吗。当然了,这是举个栗子。还有深层次的优化;再举个例子,A 和 B 两种代码样式最终可能用更简洁效率的 C 样式完成, 那编译器当然会优化为 C,这个时候当然不可能推断出原来的写法。

  • 資深大佬 : tabris17

    理论上编译器优化会导致信息丢失的,所以不可能通过反编译还原成 C 代码,有 ASM 读一下就可以了

  • 資深大佬 : AlohaV2

    真要试试反编译的话,搜一下老毛子的”IDA”这个软件

  • 資深大佬 : sujin190

    要是能才怪,那 windows 不早就被人反编译完了,别说操作系统了,你自己写个程序这种比较规则的代码想完整反编译都比较难,更别说操作系统系统了,反编译查查某些隐藏 api 实现啥的或许还是可以行的,java 这种由 jvm 运行抽象度比较高的反编译可能完整性还相对还好一些

  • 資深大佬 : sadfQED2

    反编译过 java 代码,基本上还能看懂,但是 bin 文件反编译后是汇编代码啊,kernel 的 bin 文件反编译,估计你花一辈子也不一定能看完

  • 資深大佬 : AoEiuV020

    c/c++从来都没有反编译拿源码的,
    反编译都是为了看汇编,

  • 資深大佬 : JosephHan

    感叹,新一代的程序员都不从汇编开始学起了啊,这种基础问题还特意问一下。

  • 資深大佬 : no1xsyzy

    首先,所有的宏都被展开了
    其次,优化很牛逼
    再次,所有的东西被 LD 到一起了,只有一个巨大的 .c,最多再来个巨大的 .h

  • 資深大佬 : cmostuor

    cc++这类偏向底层的语言不能通过反编译完整的获取源代码, 大多数都是通过反编译看汇编和伪代码写行为和功能与被反编译程序类似的代码 比如著名的 ReactOS 就是通过反编译 xp 内核和参考 wine 而 wine 能在 Linux 运行 win 的应用也是通过反编译看汇编和伪代码写的

  • 資深大佬 : nicevar

    @JosephHan 现在年轻一代都是前端起步的多,很多都不了解了,计算机技术是有断层的,经常可以看到一些人分享的东西以为发现了新大陆,其实是十几年前旧东西,就好像安卓 so 的一些加密加壳或者 loader 方面的,看起来很高大上,相比 windows 下曾经经历过的是小儿科,windows 下的安全对抗真的发展到了极致,很难想象曾经有些人花了好几年把一个商业软件完全反编译给克隆出来了。

  • 資深大佬 : DejaVud

    @nicevar 是的!当年在看雪上看到大佬把 Sandboxie 逆向重写出来,真的是把我幼小的心灵震给撼到了.

  • 資深大佬 : neoblackcap

    @DejaVud Windows 上面很多研究都是逆向的。最厉害的莫过于《 Windows Internals 》一书里面的东西,作者不是微软的人,却请出给 Windows 开发组培训
    PS:sandboxie 现在好像是开源了

  • 資深大佬 : salmon5

    @neoblackcap 其中 mark 已经是 azure 的 cto 了

  • 資深大佬 : levelworm

    @DejaVud 我擦大佬真的是太厉害了,能够到这种境界。。。

  • 資深大佬 : levelworm

    @neoblackcap 请问是不是这本书: https://www.amazon.ca/Windows-Internals-Part-architecture-management/dp/0735684189

    听你这么一说,作者真的很厉害。。。

  • 資深大佬 : printese

    记得之前在 Freebuf 上看到过路由器固件逆向的文章,可以去参考一下

  • 資深大佬 : f165af34d4830eeb

    @BrettD #5 return 5050 (

  • 資深大佬 : neoblackcap

    @salmon5
    mark 好像是第六版才才加入的

    @levelworm
    你看看作者之一的 mark 是 azure 的 cto 就知道这书不是一般的厉害。mark 不仅仅是微软的 azure 的 cto,还是 fellow 。

    PS:这书国内是有引进的,叫《深入解析 Windows 操作系统》,同类的也有潘爱民博士写的《 Windows 内核原理与实现》。

  • 資深大佬 : levelworm

    @neoblackcap 看来是 Windows 系统编程的一本利器啊,就是不知道自己什么时候才有那个水平去搞系统编程了。

  • 資深大佬 : ryd994

    @BrettD
    @darksword21
    @fiveelementgid
    老师:求 1-100 的和
    牛顿:51*101 = 5050
    程序员:for(i=1; i<=100;++i) sum += i;
    GCC:printf 5050

  • 資深大佬 : ragnaroks

    kids:
    for(i=5;i>0;i–){
    buffer=””;
    for(j=5;j>5-i;j–){ buffer+=”*”; }
    echo buffer;
    }

    legend:
    echo “*****”;
    echo “****”;
    echo “***”;
    echo “**”;
    echo “*”;

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具