标签: re-engineering

逆向工程从源代码中记录了Java

我是一名系统工程师,最近大学毕业,我刚刚获得了一个非常令人生畏的项目.

我们有一个遗留系统,我们合法拥有整个代码及其所有权利.问题是代码记录不完整,文档不完整,有时错误,原始开发人员不可用.

它使用自定义Perl构建脚本需要CPAN的一千个模块才能工作,我不知道Perl.除了Doxygen之外,反向工程到UML失败了,仅限于继承图和调用图.

我已经获得了一个巨大的黑板,我正在慢慢地浏览代码,建模包,然后在其中嵌套包.

我的问题是我是否正在从正确的方向接近这种逆向工程.我正在从底部工作,试图弄清楚在开发UML和编写设计文档时会发生什么.我做了一个包图,但很难弄清楚在那个高水平上发生了什么.

我提出的一篇学术论文表明,我还制作了一份新的需求文档,这将使我的速度更慢,我不知道这是不是一个好主意,因为其他开发人员总是忙于保持遗留系统.

有没有可以帮助我的书籍,我是从正确的角度接近这个吗?我是否应该聘请了解Perl和JMX的合同工来帮助我?

java uml reverse-engineering re-engineering

7
推荐指数
2
解决办法
819
查看次数

ltrace和strace工具中的行号信息

我是否可以查看行号和文件名(对于我使用ltrace/strace运行的程序)以及库调用/系统调用信息.

例如:

code section :: ptr = malloc(sizeof(int)*5); (file:code.c, line:21)
Run Code Online (Sandbox Code Playgroud)

ltrace或任何其他工具: malloc(20) :: code.c::21

我已经尝试了ltrace/strace的所有选项,但无法找到获取此信息的方法.

如果不能通过ltrace/strace实现,我们是否有GNU/Linux的任何并行工具选项?

c re-engineering strace ltrace

6
推荐指数
1
解决办法
3219
查看次数

用5个参数调用的mprotect函数

根据mprotectLinux手册页,该函数有3个参数:

int mprotect(const void *addr, size_t len, int prot);
Run Code Online (Sandbox Code Playgroud)

但是在我正在分析的程序上运行ltrace时,我看到mprotect被调用如下:

mprotect(0x8049000, 4096, 3, 1, 0xb7e057ac)      = 0
Run Code Online (Sandbox Code Playgroud)

什么是第四和第五个参数?

编辑:使用ltrace版本0.5.和内核2.6.24-24-通用

谢谢

c security mprotect re-engineering ltrace

5
推荐指数
1
解决办法
501
查看次数

一系列strcmp()在简单的C++程序开始时调用

我有简单的C++程序:

#include <iostream>

int main()
{
        std::cout << "Hello\n";
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想你不能变得更简单.我正在玩"scratchbox" - 我用来编译ARM平台应用程序的交叉编译平台.我在诺基亚N900手机上运行它.

在研究一些性能问题时,我注意到在开始时有几次调用strcmp().我使用"ltrace"来跟踪库调用,当我在目标(我的手机)上运行它时,看到一系列调用strcmp()现在让我很好奇 - 这些调用的目的是什么?

20:06 user@MaemoBox:~$ ltrace test
__libc_start_main(61732, 1, 0xbed66634, 345616, 345612 <unfinished ...>
__errno_location()                                                                                 = 0x4001d3b0
strrchr("test", '/')                                                                               = NULL
getuid()                                                                                           = 29999
bsearch("test", 0x00055966, 146, 1, 0x0000ed38 <unfinished ...>
strcmp("test", "mv")                                                                               = 7
strcmp("test", "sort")                                                                             = 1
strcmp("test", "tr")                                                                               = -13
strcmp("test", "sysctl")                                                                           = 1
strcmp("test", "test")                                                                             = 0
<... bsearch resumed> )                                                                            = 0x000559e2
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ linux gcc re-engineering ltrace

4
推荐指数
1
解决办法
508
查看次数

标签 统计

re-engineering ×4

ltrace ×3

c ×2

c++ ×1

gcc ×1

java ×1

linux ×1

mprotect ×1

reverse-engineering ×1

security ×1

strace ×1

uml ×1