最近研究 FLUENT ADDON 有一些进展,先是读出了 addon.bin 的编码规则,再进一步的话可以利用反汇编来还原出 SOFC 的源文件。
为什么是 SOFC,因为它提供了 object 文件,比较容易入手。
之前因为 rpvar 在并行版中会出现一些问题,而从 sofc.h 可以看到有对 rpvar 的修正,就从这相关的函数开始吧。
步骤其实还比较简单:
1 dumpbin 得到 fc.obj 的汇编代码,以 pull_real_from_cache 函数为例:
汇编代码:
_pull_real_from_cache:
00001D50: 55 push ebp
00001D51: 8B EC mov ebp,esp
00001D53: 51 push ecx
00001D54: 8B 45 08 mov eax,dword ptr [ebp+8]
00001D57: 3B 05 00 00 00 00 cmp eax,dword ptr [?old_rpvar@?1??pull_real_from_cache@@9@9]
00001D5D: 75 08 jne 00001D67
00001D5F: D9 05 00 00 00 00 fld dword ptr [?old_result@?1??pull_real_from_cache@@9@9]
00001D65: EB 6C jmp 00001DD3
00001D67: 8B 4D 08 mov

研究FLUENT ADDON的过程中,通过读取addon.bin编码规则,采用反汇编方法逐步还原SOFC的C源文件。以SOFC为起点,因其提供object文件便于入手。首先,利用dumpbin获取fc.obj的汇编代码,如pull_real_from_cache函数,然后将其转换为C代码,以此方法逐个函数进行。注意,较低版本的dumpbin可能造成反汇编问题,推荐使用高版本工具。
最低0.47元/天 解锁文章
4165

被折叠的 条评论
为什么被折叠?



