反编译windows照片查看器

逆向工程 dll 。网
2021-06-26 06:48:00

我正在尝试反编译 windows 照片查看器 DLL 文件以尝试调整它们,例如编辑速度等。因为这在注册表中是不可能的。

在 ILSpy 或 dotPeek 等程序中打开文件时,我收到如下消息:

此文件不包含托管程序集。

我对逆向工程很陌生,所以有人能告诉我我在这里做错了什么,因为程序说它是一个 .NET Framework 4.5 应用程序。

3个回答

你面临的问题很常见。.NET 应用程序仍然加载许多本机 DLL。对很多人来说,最令人惊讶的是 .NET 框架本身是原生的。

您可以使用该lm v命令识别 WinDbg 中的 .NET DLL 如果是托管 DLL,它会显示:

0:008> lmv m MyApp
start    end        module name
10310000 10574000   MyApp(deferred)             
    Image path: C:\...\MyApp.exe
    Image name: MyApp.exe
    Has CLR image header, track-debug-data flag not set
    Timestamp:        Wed May 21 16:34:02 2014 (537CB95A)
...

请注意Has CLR image header输出中的行.NET 框架也在该过程中加载,但它是原生的,没有这样的一行:

0:008> lmv m mscorwks
start    end        module name
79470000 79a1e000   mscorwks   (pdb symbols)          d:\...\mscorwks.pdb
    Loaded symbol image file: C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
    Image path: C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
    Image name: mscorwks.dll
    Timestamp:        Tue Oct 22 03:06:42 2013 (5265CFA2)
...

托管应用程序有充分的理由使用本机 DLL:

  • 因为它已经实施并且稳定
  • 出于性能原因:也许 C++ 更快(可能不是你的情况,因为你似乎对性能不满意)

PhotoViewer.dll是本机 DLL,即使 dotPeek 说“平台:.Net Framework 4.5”。这似乎是一个错误,因为它还报告了 .NET for kernel32.dll.

反正属性Assembly platformModule Runtime好像有点不一致。以下是我尝试过的一些组合导致的结果,至少需要一些解释:

  • kernel32:平台 4.5,运行时:无
  • Jigfdt.fdt100:平台 2.0,运行时:1.1.4322
  • Fdt.ProfibusTransformers:平台 4.0,运行时 2.0.50727

另一种检测 .NET 的方法是Dependency Walker纯 .NET 程序集通常只有一个依赖项,mscoree.dll而本机 DLL 依赖于不同的东西。

它可能是一个本机 dll。您可能可以反编译主照片查看器二进制文件(根据您的声明,它可能是托管代码)以获取有关本机 dll 的一些信息,以帮助您对 dll 进行基于反汇编的逆向工程。

如果您的 dll 是本机的,并且大小小于 10 兆字节,请尝试使用此Retargetable 反编译器