Refactoring 在反编译脚本中查找公共函数
我有一堆看起来像C代码的反编译脚本 这些脚本是反编译的(我不能确切地说是如何编译的),所以它们不是由人类编写的 然而,它们显示了一些非常有趣的模式,这让我认为反编译器在大多数脚本中复制了一些函数,因为它遵循执行路径 例如,大多数脚本都具有如下功能:Refactoring 在反编译脚本中查找公共函数,refactoring,reverse-engineering,Refactoring,Reverse Engineering,我有一堆看起来像C代码的反编译脚本 这些脚本是反编译的(我不能确切地说是如何编译的),所以它们不是由人类编写的 然而,它们显示了一些非常有趣的模式,这让我认为反编译器在大多数脚本中复制了一些函数,因为它遵循执行路径 例如,大多数脚本都具有如下功能: void *fct_9887(int param_123, char param_864) { fct_4698(param_75, param_83); return CORE_FUNCTION(param_864, param_123);
void *fct_9887(int param_123, char param_864) {
fct_4698(param_75, param_83);
return CORE_FUNCTION(param_864, param_123);
}
但是对于每个脚本,函数名和参数名是不同的。因此,完全相同的函数将出现在另一个脚本中,如
void *fct_57(int param_93, char param_75) {
fct_1000(param_75, param_83);
return CORE_FUNCTION(param_75, param_83);
}
正如您在这里所猜测的,fct_4698
和fct_1000
也是相同的,这使得这些函数也与代码重复
有些函数实际上在所有脚本中保持相同的名称(这里是CORE_函数),因为它们是外部函数,因此在脚本之间共享
我试图找到一种方法来“重新考虑”这一点,并试图提取这些脚本中使用的常用函数。我知道这有时是不可能的,但对于某些功能来说,这应该是可能的
您将如何着手做这样的事情?您使用的是哪种语言?重构后是否重新编译?如果不是,你在做什么?重构的目的是什么?我使用的代码非常接近C,但不是C。之后我不会重新编译。最终目的是使反编译的代码更清晰,以便更容易理解,从而实现逆向工程。你可以对代码进行单元测试吗?我没有测试的方法:我既没有访问编译器的权限,也没有访问反编译程序的权限。同时,我不想要完美的东西。我只想删除一些明显重复的代码,这样读取反编译文件就更容易了:)