首页
社区
课程
招聘
[旧帖] [求助]已知C++源代码,怎么在其生成的exe的反汇编代码中定位某个函数? 0.00雪花
发表于: 2009-7-10 21:43 1747

[旧帖] [求助]已知C++源代码,怎么在其生成的exe的反汇编代码中定位某个函数? 0.00雪花

2009-7-10 21:43
1747
拿到了一个游戏引擎的源代码,想靠这个来修改使用这个引擎写的一个游戏的某一部分代码。
问题是我要定位的那个函数里面没有调用任何api,调的都是自己的类里面的其它函数,这样应该如何去反汇编代码中定位那个函数呢?
源码有几万行,汇编代码有多少我算不出来……反正直接找应该是没有希望的……

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
在那个函数里加个DebugBreak,或者直接手写一个int 3,在调试器运行时会直接中断。

或者一种旁门佐道,可以用特征码搜索定位。比如在一个if(0)中连续写几个__emit,在二进制文件中直接搜索这个特征序列即可。注意不要让编译器将if(0)优化掉,可以写成volatile int i = 0; if(i),通常volatile会阻止优化。
2009-7-11 00:14
0
雪    币: 74
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
我的理解是LZ是有游戏引擎的源码,但没有游戏的源码,LZ想在游戏的运行码中找到某个函数地址。

看看源码,上下多看几层,也许能找到下断点的地方。
2009-7-11 03:48
0
雪    币: 55
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
多谢2L让咱学到一些东西,不过事实上正如3L所说,我只有引擎的源码,游戏的话只有EXE,所以不行的……要断的是一个在屏幕上用自定义字体显示字符串的函数,目前想到的办法就是在函数所要输出的字符串中设置断点,但是失败了没断下来……继续寻求其他解法中……
2009-7-11 22:18
0
雪    币: 724
活跃值: (81)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
调它的函数是否有调API的,它调的函数是否有调API的,一级不成再来一级,有点的耐心总是可以的。
2009-7-11 22:36
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
6
游戏中通常是用DirectX API来写屏幕的,不使用GDI函数。不过本人对DirectX没有什么研究,帮不了什么忙了。也许需要先学习一下Direct API?
2009-7-12 09:15
0
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最佳办法:

1.找一段游戏里面很容易与引擎源代码对应的ASM,比如对某个字符串的引用代码
2.确定编译游戏所用的编译器,然后用该编译器编译引擎,然后把引擎的ASM和游戏对应位置的ASM对比,看是否一致,不一致,则修改优化开关,最终达到一致。
3.现在要找引擎某一段代码在游戏的位置,只需要用引擎的ASM在OD里面去搜就行了。
2009-7-12 10:02
0
雪    币: 68
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
希望高手能出现回答一下
2009-7-18 12:45
0
雪    币: 55
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
微软的DXSDK开发包是用类封装好的,独立的API函数也很少
嘛,那破程序很让人郁闷,暂时先不搞了。其实就是想汉化个游戏而已……都这么费劲……
2009-7-18 15:02
0
雪    币: 182
活跃值: (55)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10
生成MAP。
2009-7-18 15:07
0
游客
登录 | 注册 方可回帖
返回
//