首页
社区
课程
招聘
[旧帖] 如何算法反编译 0.00雪花
发表于: 2009-12-11 22:37 3569

[旧帖] 如何算法反编译 0.00雪花

2009-12-11 22:37
3569
软件中用到了几个算法,反汇编后有较多子程序。
  
   有什么方法可以较快知道这些算法的具体过程,
   或者推荐些这方面的资料。
   谢谢。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 444
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
LZ你反汇编是反汇编成类似MASM汇编的汇编代码(or IDA),还是在OD里反汇编跟踪?
情况1:
仔细辨认哪是全局变量哪是局部变量;
从层层调用的那个最外面的程序开始,观察如何调用下层函数。如果你不知道哪个是最上层的,请观察接口,很容易看出来。
情况2:
遇CALL不进,然后慢慢跟进。

全是废话,实话是我也没有好办法。
2009-12-11 22:50
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我是在OD里反汇编跟踪。

“遇CALL不进,然后慢慢跟进。”-----是不是说还是要老老实实的把所有汇编代码组合起来看懂这些算法?
2009-12-11 22:56
0
雪    币: 444
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
情况2,你就一开始遇见CALL不进,然后慢慢放宽,就是进入CALL的个数是线性增长的。这样做,就是分析找到调用的层次以及他们相应的CALL代码。需要一定的猜测能力,也需要运气,其实我想说的是经验。

几乎所有的算法都是层层调用的,你真正理解这句话就行了。
补充,有的算法是多路径不同处理的,请注意 路径跳转表 ,就是C语言的多个SWITCH 语句形成的。
很多算法应该说都有赋值语句,从这个赋值或者说是COPY入手,你能轻易的把算法切割开来。
2009-12-12 22:51
0
雪    币: 360
活跃值: (77)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
5
有的算法可能插件能发现,或者手动找特征点,然后根据特征点前后组织,如果是特定算法, 同样寻关键,逆之
2009-12-15 15:18
0
游客
登录 | 注册 方可回帖
返回
//