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

[求助] 反编译 raw C# assembly

2022-1-22 21:10
4239

有些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可以模拟执行。

有什么工具推荐?


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

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

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


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

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