最牛的算法程序员应该有能力看着可执行代码然后写出C++的源代码

「已注销」
博客专家认证
2012-03-04 12:19:18
不管您信不信,我认为专业的算法程序员应该有能力看着可执行的二进制代码(无论是Windows的还是Linux、无论是PC还是其他MIPS、ARM的)还原出C++的代码;从理论上,多数人认为这是技术不可行的 ----- 因为经过优化的二进制代码已经不再包含任何原始源码信息。但好的算法程序员应该有能力在读懂这些反向的汇编代码后,猜测出可能的C++代码 ---- 这是难点,更多的是靠经验;
这个技术看似神乎其神的能力,我认为这是一个成功算法工程师所必备的 ----- 因为只有这样,算法工程师才可能从商业软件中窥视出其设计精髓;
...全文
590 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
gnorth 2013-05-12
  • 打赏
  • 举报
回复
有啥好争的呢,你们都该去学学逆向一个游戏,在外挂作者眼里,“从理论上,多数人认为这是技术不可行的” 这种话说出来就是小白。
用户 昵称 2012-05-05
  • 打赏
  • 举报
回复
一个程序员,应该能够做到,在本行业内,别人能做,我就能做,别人怎么做,我能看懂。
feathersky 2012-05-02
  • 打赏
  • 举报
回复
哈哈 楼主绝对是菜鸟中的战斗机!!! 就像那些不懂电脑技术的人把黑客想象成无所不能似的

我随便写个5000行的代码 用代码混淆器混淆一下给你 估计你就看不懂 更别提2进制代码了

程序员之所以能读懂某些反向的汇编代码,是因为那些代码是一些功能模块的组合,而对于这些功能模块,程序员比较熟,或者功能模块较短,可以分析出来。 也就是说程序员只能看懂他熟悉的这部分汇编功能模块,并看懂他们之间的组合关系。

世界上的算法是无数的,想你如果不懂小波分析,时空域压缩,编码算法等等。给你一段mpeg4源代码(至少几万行)没注释,估计你看1年都看不懂,更何况是二进制,哈哈。

再例如你不懂微积分,只会+-法,你去看一个复杂的二次优化问题,估计你可以看一辈子了
「已注销」 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

我知道lz牛x 但您不能暗示自己最牛x
这样你把你抄袭的对象放到哪里去了?
[/Quote]
不牛,只是一个老“菜鸟”,都工作20年了,见过太多的牛人,才觉得自己真的很菜,这是实话;这么大一把年龄还没事去“抄抄”别人的程序;抄袭确实是很不道德的行为,所以确实经常很内疚,但我觉得写出好程序有一个方法:善于学习别人的程序;无论您是通读Linux核心代码,还是反向别人的程序;
「已注销」 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

哈哈 楼主绝对是菜鸟中的战斗机!!! 就像那些不懂电脑技术的人把黑客想象成无所不能似的

我随便写个5000行的代码 用代码混淆器混淆一下给你 估计你就看不懂 更别提2进制代码了

程序员之所以能读懂某些反向的汇编代码,是因为那些代码是一些功能模块的组合,而对于这些功能模块,程序员比较熟,或者功能模块较短,可以分析出来。 也就是说程序员只能看懂他熟悉的这部分汇编功能模块,并看懂他们之间……
[/Quote]
菜鸟中的战斗机我绝对承认:我在带算法部门的时候说的最多的是不要相信什么大牛,因为IT变换的太快;

这个帖子本来是我从事算法开发近十年的一个小心得,算是有感而发,首先关于楼上的我先回答一下:我这里不是讲反向技术,我只是说反向技术应该是一个算法工程师应该有的“伎俩”,您说的5000行代码太少了,我们做反向研究时一般目标代码都在1MBytes以上----相信几万行应该不止吧,至于说加密技术我没有讲过一定是加密后的代码,我不是反向工程师,对于简单加密的代码通过动态的办法往往很容易就能解,如早期用SoftICE,现在IDAPro本身就有动态执行的功能 ---- 切记一点对于任何基于软件的加密都是不可靠的;另外,我特别强调了算法工程师和反向工程师的区别:算法工程师首先他必须了解这个领域,所以才可能通过汇编代码“猜测”出完整的C/C++代码,而反向工程师仅仅是抄下来;最后再很负责任的讲一句:您说的几万行太小意思了吧,这个我们在几年前就做过:我自己就曾经亲自带领2个人的团队将一个视频程序完整反向出来过,并写出C++代码;另外再次强调,算法工程师不是万能的,我仅仅说的是我自己熟悉的领域,图形学和图像学的算法要求都完全不同,给一个图形学的算法工程师看几万行的图像学源码估计他会头痛的,不要说是汇编代码了;

本来是有感而发,没想到引起一些人的不快,最后说两句:
1)我说的这些不是"impossible",在几年前我们算法团队已经在这么作了。只是多数国内企业侧重于应用层面开发,至于您一定要拿一个我不熟悉的领域和我讲事我确实没有办法;
2)有这样技巧的我不觉得是什么“牛人”,至少我的组员有几个有这样的能力;正如我说的,这只是一个算法工程师应该有的“小伎俩”,我不认为有什么了不起;正如楼上说的,计算机算法涉及的面已经很广了,至少,我看图像学的算法工程师我觉得他们很“牛”,我看那些多媒体芯片工程师觉得他们更牛,甚至那些PHP或AS的工程师都令我仰视 ----- 因为我主要侧重的是图形学;
3)IT行业没有什么“牛人”,因为IT行业的技术变换太快、涉及的领域太多;唯有不断努力学习,反向技术的目的仅仅提供了一个“偷窥”一些商业软件的手段,他不是算法工程师的全部;

很感谢楼上的说出了我心里话,我一直觉得我很菜,所以这么大一把年龄还在努力学习,当然,也经常用IDAPro把别人的程序反出来:一直搞不懂人家的商业代码为什么比我的效能高;
deep_pro 2012-05-02
  • 打赏
  • 举报
回复
我知道lz牛x 但您不能暗示自己最牛x
这样你把你抄袭的对象放到哪里去了?
deep_pro 2012-05-02
  • 打赏
  • 举报
回复
最牛x的算法程序员还用偷学?应该是别人争着反汇编最牛x的算法程序员的程序才对

lz就像一个农民,以为皇帝就是一个扛着金锄头种田的人
cnmhx 2012-05-01
  • 打赏
  • 举报
回复
that's impossible!
luoxiaoshun 2012-05-01
  • 打赏
  • 举报
回复
没用看见过那么NB的人啊
duanrencai 2012-04-30
  • 打赏
  • 举报
回复
(多数芯片设计公司都有这样的部门,只是这些部门往往是最见不得人的)
其他领域何尝不是呢
猴头 2012-04-30
  • 打赏
  • 举报
回复
同意楼上
笨球 2012-04-29
  • 打赏
  • 举报
回复
算法工程师才可能从商业软件中窥视出其设计精髓
------------------
这句话是关键!
通过看汇编,猜C/C++算法,目的也就是给自己一个“偷学”别人算法的机会。
其实我们思路可以更广一点:最牛的程序员(不一定是算法程序员),一定是不断的通过“偷学”高手的代码来提高自己的!
至于如何偷学,那就八仙过海,各显神通啦,哈哈
「已注销」 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 woxuevc2009 的回复:]

你让软件逆向工程师情何以堪?要不他们去当算法程序员!!
[/Quote]
作算法的程序员应该适当懂些反向,但是一个反向工程师未必能成为算法工程师 ---- 这是关键;
之所以提到看着汇编代码写出C++,这已经不是反向工程师所能做到的 ---- 因为您首先是能通过汇编语言理解其中的算法,及本身您在这个方面就有些研究,这已经比一般的反向工程师有更多的要求;然后是根据您自己的理解写出C++代码,而非借助工具生搬硬套的写出C++/C代码 ---- 事实上多数程序在变成目标代码后甚至您已经无法确认之前是C写的还是C++写的了,更不要说单纯意义上的还原;所以我特指这应该是算法工程师应该掌握的小伎俩;
jack_fangdb 2012-03-04
  • 打赏
  • 举报
回复
笑而不语,你试试那些手机的语音抽样压缩解压加密解密编码算法试试,还C++? ARM一般用C
colorfulcode 2012-03-04
  • 打赏
  • 举报
回复
woxuevc2009 2012-03-04
  • 打赏
  • 举报
回复
你让软件逆向工程师情何以堪?要不他们去当算法程序员!!
「已注销」 2012-03-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jack_fangdb 的回复:]

笑而不语,你试试那些手机的语音抽样压缩解压加密解密编码算法试试,还C++? ARM一般用C
[/Quote]
呵呵,这个我还真有些发言权:之前作算法时,我带的部门有个组专门是作这个 ---- 反出的C++代码然后硬件IP部门用来设计实际的芯片;语音压缩我们没研究过,但我自己亲自把一个商业软件的图形引擎还原出来了,当然是还原成C++的代码了;最后被硬件IPCore拿来设计相关加速芯片;
多数芯片设计公司都有这样的部门,只是这些部门往往是最见不得人的
t1397018 2012-03-04
  • 打赏
  • 举报
回复
这叫OD,CRACKER知道不。。。。。。

662

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧