首页
社区
课程
招聘
当遇到用c++写的中大型软件时,怎么进行源代码级逆向?
发表于: 2018-9-27 11:26 6463

当遇到用c++写的中大型软件时,怎么进行源代码级逆向?

2018-9-27 11:26
6463
如果从单个的函数进行逆向,类的关联性太弱,不知道这些成员函数是哪一个类的成员函数,感觉应该先逆向出所有的类,基类,从什么地方入手,能逆向出所有的类结构呢,请大神指点下,回帖有偿!!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 737
活跃值: (513)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
希望有大神解惑!!
2018-9-27 11:27
0
雪    币: 3710
活跃值: (2669)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
3
jackwolail 希望有大神解惑!!
我觉得要把软件全部逆向是比较困难的,先把关键的算法逆出来,其他非关键部分根据自己对软件的熟悉和理解,再自己设计实现。
2018-9-27 16:03
0
雪    币: 737
活跃值: (513)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我记得以前在看雪有一篇帖子,讲了怎么进行源代码级逆向的步骤,谁还能把它找出来啊 第一步是先取rtti信息,拿到什么巨细。。那篇帖子还能找到吗 
2018-9-27 16:28
0
雪    币: 110
活跃值: (199)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
C++新特性的源码看着都费劲,逆向估计更难受了。。
2018-9-27 16:33
0
雪    币: 2291
活跃值: (938)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
开发一个大型c++软件都要好多人耗时几个月甚至数年才开发完成,你想完全逆向出来?倒也不是不可能,发扬愚公移山精神,我逆不完我儿子逆,儿子逆不完孙子逆,子子孙孙无穷尽也,而程序只要不更新,总能逆完。哈哈,开个玩笑
2018-9-27 20:02
0
雪    币: 6524
活跃值: (4316)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
7
如果是已知功能和有文档功能不需要逆向,只有不知道这个功能怎么实现时才能体现出逆向的价值。
1.你可以直接拿出相关功能的汇编代码内联或者自带汇编编译器。
2.你也可以用IDA,X64DBG还原伪代码,再用动态调试器验证执行结果。
3.你能完全理解汇编代码,然后不管用什么语言写一下用动态调试器验证执行结果。
最后于 2018-9-27 21:42 被yimingqpa编辑 ,原因:
2018-9-27 21:40
1
雪    币: 1215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
都拿到源码了还需要逆向?往什么方向逆向?往别人脑子里面逆?
2018-9-27 21:43
0
雪    币: 737
活跃值: (513)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我的意思是怎么跟踪分析一个类,  怎么在ida中确认这个_thiscall是属于哪个类的成员函数,感觉很零散啊
2018-9-28 15:52
0
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
10
把pdb偷到手
2018-9-28 16:13
0
雪    币: 302
活跃值: (246)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
11
开发一个大型c++软件都要好多人耗时几个月甚至数年才开发完成,你想完全逆向出来?倒也不是不可能,发扬愚公移山精神,我逆不完我儿子逆,儿子逆不完孙子逆,子子孙孙无穷尽也,而程序只要不更新,总能逆完
2018-10-28 21:17
0
雪    币: 6124
活跃值: (4651)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
12
这其实和“怎么阅读一个大型的C++程序源代码?”有异曲同工之妙。首先,完全逆向是不可能的,更多的是逆流程或者针对某一个功能进行逆向。所以我的建议是你先把软件使用一次了解到这个软件的流程是怎么样的,然后跟着他的流程看能大概把软件看清楚。其次,大型的商业软件一定会有非常多的“RTTI”信息例如“E:\\buildserver\\headers\\stack.h”这样的,你要逆向某个功能的话可以看看它可能属于哪个头文件,然后搜一下rtti信息以便定位。大型的C++程序一定是模块化的,如果你把他拆开一个个模块分析,最后可以重新拼起来。所谓完全逆向是不存在的,在你了解功能是怎么实现的以后可以自己重写一个出来,以上是我的建议。
2018-12-18 14:57
0
游客
登录 | 注册 方可回帖
返回
//