lveer 2016-02-01 03:09 采纳率: 0%
浏览 1335

汇编和反汇编相关的问题

最近学习android原生逆向分析,需要掌握看懂c语言反汇编的知识,请问我需要按照顺序学习那些东西,谢谢!

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-02-01 23:57
    关注

    需要学习的是根据反汇编代码模式匹配还原成高级语言的能力。这要你对编译器是如何将高级语言的代码编译和展开成汇编程序的有很深的功底。

    看反汇编代码的能力不在于一行一行去读它是什么意思,而是看到某几行代码,马上能想出对应的高级语言代码怎么写——特别是在变量名缺失,并且编译器对上下文优化的情况下。如果你能通过它更进一步看出算法层面的思路,那就更好了。当然也更难。
    另一方面,你应该积累足够多的软件开发的经验。有时候,你拿到一个软件,你如果能想到,如果这个软件我来写,有几个算法,或者几种方式,再去看汇编程序,那么就如同做选择题了,一旦你的思路和作者的思路对上,那就一通百通。

    这需要很多的经验和很好的智力——如同给你一个拼图,它包含的信息有限,有的人马上能知道它是原图的哪一块,这样的模式匹配、分析和判断的能力。

    当然,一开始,如果你真的想学,那么,先把基础打好。调试工具、反编译工具用得很熟,一些反编译工具可以得到很不错的伪高级语言代码。一些网上的教程往往使用了很多术语,写得非常简略,如果你连概念都没有,就算有找到文献都不知道怎么看。
    其次,反编译的功底不在于反编译本身,而是在于程序设计,这个需要非常多的基础和经验,不可能速成。你要有思想准备,你是打算深入研究还是仅仅因为某天想起来要破解个程序而头脑一热来学的。后者我并不建议你去学。

    评论

报告相同问题?

悬赏问题

  • ¥50 comsol稳态求解器 找不到解,奇异矩阵有1个空方程返回的解不收敛。没有返回所有参数步长;pid控制
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功