如何解决是否可以获取 C# 程序集二进制文件
我的教授要我告诉他我是否可以获得汇编二进制文件的代码。对我来说这是不可能的。 可以使用以下命令调用该文件:https://docs.microsoft.com/en-us/dotnet/api/system.reflection.methodbase.invoke?view=net-5.0#System_Reflection_MethodBase_Invoke_System_Object_System_Object___
((Assembly)obj).EntryPoint.Invoke((object)null,(object[])null);
//object was defined before
谢谢!
[编辑]
感谢大家的回答,我已经尝试过 dotpeek、ildasm .. -> 不工作
该文件不是 dll。
file_read = Path.Combine(Application.StartupPath,"testfile");
bytes = File.ReadAllBytes(string.Concat(file_read));
bytes2 = Memrestore((byte[])bytes);
objAssembly = Assembly.Load((byte[])bytes2);
((Assembly)objAssembly).EntryPoint.Invoke(null,null);
我的教授帮了我一点忙,bytes2 包含测试文件中的所有字节。
在visual studio上,如果我看到这个变量并右键单击->去反汇编我得到这个:
0000000012E5F082 mov edx,9B4000Eh
0000000012E5F087 int 21h
0000000012E5F089 mov eax,21CD4C01h
0000000012E5F08E push rsp
0000000012E5F08F push 70207369h
0000000012E5F094 jb 0000000012E5F105
0000000012E5F096 jb 0000000012E5F0FA
0000000012E5F099 ins dword ptr [rdi],dx
0000000012E5F09A and byte ptr [rbx+61h],ah
0000000012E5F09D outs dx,byte ptr [rsi]
0000000012E5F09E outs dx,byte ptr [rsi]
0000000012E5F09F outs dx,dword ptr [rsi]
0000000012E5F0A0 je 0000000012E5F0C2
0000000012E5F0A2 ?? ??????
0000000012E5F0A3 and byte ptr gs:[rdx+75h],dh
0000000012E5F0A7 outs dx,byte ptr [rsi]
0000000012E5F0A8 and byte ptr [rcx+6Eh],ch
0000000012E5F0AB and byte ptr [rdi+rcx*2+53h],al
0000000012E5F0AF and byte ptr [rbp+6Fh],ch
0000000012E5F0B2 ?? ??????
0000000012E5F0B3 ?? ??????
0000000012E5F0B4 or eax,240A0Dh
0000000012E5F0BA add byte ptr [rax],al
0000000012E5F0BC add byte ptr [rax],al
0000000012E5F0BE add byte ptr [rax],al
0000000012E5F0C0 push rax
0000000012E5F0C1 add byte ptr [r8],r8b
0000000012E5F0C4 add qword ptr [rbx],r8
0000000012E5F0C7 add byte ptr [rsi],dl
0000000012E5F0C9 cmp dl,dh
(这是文件的摘录)
我的问题是:是否可以将此汇编代码还原为 c#?
解决方法
程序集不包含你的源代码 - 所以不,你不能完全得到那个,但是; .NET 程序集包含已编译的 IL - 并且 IL 通常可以进行逆向工程以返回与您的原始代码非常相似的代码。它的准确程度取决于很多因素 - 例如,async
代码被大量重写,“迭代器块”也是如此,并且存在混淆器工具来故意使 IL 更难破译。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。