Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Refactoring 在反编译脚本中查找公共函数_Refactoring_Reverse Engineering - Fatal编程技术网

Refactoring 在反编译脚本中查找公共函数

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);

我有一堆看起来像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_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。之后我不会重新编译。最终目的是使反编译的代码更清晰,以便更容易理解,从而实现逆向工程。你可以对代码进行单元测试吗?我没有测试的方法:我既没有访问编译器的权限,也没有访问反编译程序的权限。同时,我不想要完美的东西。我只想删除一些明显重复的代码,这样读取反编译文件就更容易了:)