反编译dll文件提取函数(子程序)

逆向工程 艾达 反编译
2021-07-10 02:08:57

我有一个大学项目,我的教授给了我一个 DLL 文件,我需要从中提取子程序,并且没有明确定义为子程序。目的是将代码翻译成 C++ 或 C。

我用 IDA Pro 打开代码并搜索名称acalcul

CODE:00470C9C aCalcul:                                ; DATA XREF: CODE:00470C0F↑o
CODE:00470C9C                 text "UTF-16LE", 'calcul',0
CODE:00470CAA                 align 4
CODE:00470CAC
CODE:00470CAC loc_470CAC:                             ; CODE XREF: CODE:0047094C↑j
CODE:00470CAC                 push    ebp
CODE:00470CAD                 mov     ebp, esp
CODE:00470CAF                 push    ebx
CODE:00470CB0                 push    esi
CODE:00470CB1                 push    edi
CODE:00470CB2                 push    dword ptr [ebp+8]
CODE:00470CB5                 xor     eax, eax
CODE:00470CB7                 push    ebp
CODE:00470CB8                 push    offset loc_470CDC
CODE:00470CBD                 push    dword ptr fs:[eax]
CODE:00470CC0                 mov     fs:[eax], esp
CODE:00470CC3                 mov     eax, ds:off_474634
CODE:00470CC8                 mov     eax, [eax]
CODE:00470CCA                 mov     edx, [ebp+0Ch]
CODE:00470CCD                 mov     [edx], eax
CODE:00470CCF                 xor     eax, eax
CODE:00470CD1                 pop     edx
CODE:00470CD2                 pop     ecx
CODE:00470CD3                 pop     ecx
CODE:00470CD4                 mov     fs:[eax], edx
CODE:00470CD7                 pop     eax
CODE:00470CD8                 xor     ebx, ebx
CODE:00470CDA                 jmp     short loc_470CE1
CODE:00470CDC ; ---------------------------------------------------------------------------
CODE:00470CDC
CODE:00470CDC loc_470CDC:                             ; DATA XREF: CODE:00470CB8↑o
CODE:00470CDC                 jmp     @System@@HandleAutoException$qqrv ; System::__linkproc__ HandleAutoException(void)
CODE:00470CE1 ; ---------------------------------------------------------------------------
CODE:00470CE1
CODE:00470CE1 loc_470CE1:                             ; CODE XREF: CODE:00470CDA↑j
CODE:00470CE1                 mov     eax, ebx
CODE:00470CE3                 pop     edi
CODE:00470CE4                 pop     esi
CODE:00470CE5                 pop     ebx
CODE:00470CE6                 pop     ebp
CODE:00470CE7                 retn    8
CODE:00470CE7 ; ---------------------------------------------------------------------------
CODE:00470CEA                 align 4
CODE:00470CEC ; [00000057 BYTES: COLLAPSED FUNCTION Mtsrdm::TMtsDataModule::AS_GetProviderNames(System::OleVariant &). PRESS CTRL-NUMPAD+ TO EXPAND]
CODE:00470D43                 align 4
CODE:00470D44

我需要发现输入和算法来完成我的项目。现在我的问题是如何通过使用现有代码了解 IDA Pro 中的行为来提取函数?

Edit1:我从代码中展示的是一个示例,我真的不知道代码的哪一部分真正负责我假设的功能。

Edit2:https ://www.delicad.com/dl/FlashPolygons_32bits_en.zip 该链接提供了整个 dll,我想找到使用两点绘制一条线的部分。

0个回答
没有发现任何回复~