职位ID:108077

Europa反编译(逆向)项目

  • 合作方式:
  • 项目制 全国远程
  • 预估日薪:
  • 800
  • 预估总价:
  • 12000元
  • 预估工时:
  • 15天
  • 所在区域:
  • 全国远程

需求描述

背景
OpenSPIFe(https://github.com/NASA/OpenSPIFe)组件通过XmlRpc与其自带的编译后的DynamicEuropa通信调用,本人在科研过程中需要对Europa(开源)某些算法做修改,随后被OpenSPIFe调用。但经过反编译发现DynamicEuropa带有许多开源Europa没有的封装,加上本人反编译能力不足,无法复现整个封装实现,故有此项目。
项目要求:
1. 向新开源版本Europa(下简称开源版)添加代码,并编译为和OpenSPIFe(https://github.com/NASA/OpenSPIFe)中ClientSide相关包(开发时先以Win32版本为主)的DynamicEuropa(下称闭源版)功能一致。
备注:闭源版的DynamicEuropa是基于老开源版本Europa开发的,本条要求的主要意思就是将老版本的某些封装,通过反编译移植到新版本上。闭源版提供了Debug文件,因此可以恢复大部分的函数和变量名称。
2. 编写开源版Europa(完成1中修改之前)的cmake或Makefile文件,要求该版本Europa通过cmake或Makefile可以在Ubuntu 16.04 LTS下编译出x86和x64、Debug和Release版本的:可执行文件、静态库、动态库(即与VS端一致),生成单一的一个文件,而不是针对每个组件生成一个。
3. 编写添加代码之后的开源版Europa(完成1中修改之后)的cmake或Makefile文件,要求该版本Europa通过cmake或Makefile可以在Ubuntu 16.04 LTS下编译出x86和x64、Debug和Release版本的可执行文件。

功能一致要求:
1. 对于开源版中不存在的代码,保持和闭源版反编译代码一致;对于开源版中存在的代码,遵循开源版代码。
2. SPIFe对编写完之后的开源版本和对闭源版本的所有调用和返回情况一致,即无损替换。

代码要求:
1. 使用C++开发,目前测试使用C++17版本语法可正常编译Europa,C++20未测试,若可正常编译也可以使用。
2. 对于反编译中未被命名的变量,不要在编写后的版本中出现,以增强代码简洁性。
3. 类名、命名空间等和反编译代码保持一致

需要翻译的类和函数(部分函数是在翻译过程中会遇到的,没有写在这里):
(这个是我研究过程中发现的,可能不止于此)
DynamicEuropaLogger(Class)(7 func)
EuropaXmlRpc(namespace)
EUROPA::Flout(class)(5 func)
EuropaServer(class)(93 func)
EuropaServerError(class)(6 func)
EuropaServerConfig(class)(20 func)
EUROPA::ActivityServer(class)(142 func)(继承ActivityEngine)
EUROPA::ActivityServerError(class)(4 func)
EUROPA::ActivityServerFatalError(class)(2 func)
EUROPA::GroundedActivityServer(class)(21 func)(继承ActivityServer)
EUROPA::GuardedEqConstraint(class)(3 func)(继承Constraint)
EUROPA::ActPoint(class)
EUROPA::CompositeActivityEngine(class)(68 func)(继承ActivityEngine)
SimpleTimer(class)(18 func)
EUROPA::ModeHKConstraint(class)(3 func)(继承Constraint)
EUROPA::DualEngine(class)(10 func)(继承CompositeActivityEngine)
EUROPA::FlexibleTimeActivityServer(class)(11 func)(继承ActivityServer)
EUROPA::FixedTimeActivityServer(class)(14 func)(继承ActivityServer)
EUROPA::GroundedEngine(class)(6 func)(继承CompositeActivityEngine)

可提供的源码
1. 新开源版本Europa的源码(此处提供的源码是对github中的部分内部源码作了修改,以提供的为准)
2. 老开源版本Europa源码
3. OpenSPIFe源码
4. 反编译了一部分的闭源源码(不保证正确性,建议仅供参考)
5. IDA反编译的闭源源码
6. 找到的一个合适的XmlRpc(C++)源码

信用行为

  • 发布项目
    1
  • 订单总数
    0
  • 退款单数
    0

完善简历

工程师完善技术能力和项目经验,更易接到订单

发布任务

企业点击发布任务,工程师会在任务下报名,招聘专员也会在1小时内与您联系,1小时内精准确定人才

微信客服

需求方请加需求方端客服沟通需求,工程师请加工程师端客服浏览推送职位

需求方端客服
工程师端客服
联系需求方端客服