首页
社区
课程
招聘
[求助] 反编译 raw C# assembly
发表于: 2022-1-22 21:10 4966

[求助] 反编译 raw C# assembly

2022-1-22 21:10
4966

有些C#程序和powershell脚本中用Marshal.GetDelegateForFunctionPointer动态加载和调用代码,有什么工具能够逆向这些代码?

 

C#示例:

1
2
3
4
5
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
delegate void pFunction();
Marshal.Copy(assembly_code, 0, baseAddress, shellcode.Length);
pFunction f = (pFunction)Marshal.GetDelegateForFunctionPointer( baseAddress,typeof(pFunction));
f();

powershell示例

1
2
3
4
5
6
7
8
9
$var_va = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((func_get_proc_address kernel32.dll VirtualAlloc), (func_get_delegate_type @([IntPtr], [UInt32], [UInt32], [UInt32]) ([IntPtr])))
 
$var_buffer = $var_va.Invoke([IntPtr]::Zero, $var_code.Length, 0x3000, 0x40)
 
[System.Runtime.InteropServices.Marshal]::Copy($var_code, 0, $var_buffer, $var_code.length)
 
$var_runme = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($var_buffer, (func_get_delegate_type @([IntPtr]) ([Void])))
 
$var_runme.Invoke([IntPtr]::Zero)
  • ilspy/dnspy 只能逆向PE格式;
  • IDA pro Binary file 模式(MetaPC / Microsoft Visual Studio .Net) 都无法反汇编出指令;
  • libemu可以模拟执行。

有什么工具推荐?


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2022-1-22 21:14 被technic_tec编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1018
活跃值: (337)
能力值: ( LV7,RANK:106 )
在线值:
发帖
回帖
粉丝
2

不像是native x64 code,不然IDA也可以反汇编和动态调试。
这种情况x64dbg能够支持吗?


而且不少情况是malware analyze,所以还是希望找一个静态分析的方法。

最后于 2022-1-22 22:14 被technic_tec编辑 ,原因:
2022-1-22 22:10
0
雪    币: 1018
活跃值: (337)
能力值: ( LV7,RANK:106 )
在线值:
发帖
回帖
粉丝
3
谢谢!
所以对于powershell case,只能运行.ps1脚本然后再attach上去是么?
2022-1-23 17:52
0
游客
登录 | 注册 方可回帖
返回
//