-
-
[原创].net wpf程序 移花接木
-
发表于: 2016-9-10 23:13 4323
-
最近在研究C# .net桌面程序。非常有趣
软件是国外作者写的 公司要求修改翻译
从最初的开源变成闭源再到加壳. 一路让我这个小小的职员好蛋疼.
软件是VS2015 C# WPF 程序 在不脱壳的情况下 实现挂钩类托管函数 遍历WPF控件汉化
首先通过各种手段脱壳目标程序,哪怕是不能运行都没关系。只要找到程序main函数。,找到Main的命名空间,然后自己创建一个一样的WPF程序 和他的命名空间一样就可以
这里我的目标程序命名空间是 MainApp
生成以后把文件后缀改成DLL
之后我们创建一个 C# winform 程序删除程序中默认的对话框 添加引用上面生成的文件
因为目标程序是WPF 程序 所以还得添加默认程序集
WindowsBase 和 PresentationFramework
下面开始写代码
using HookDetour; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Threading.Tasks; using System.Windows.Forms; namespace Load { //这里是一个开源的hook库 根据名字自己google class hookClass : IMethodMonitor { [MethodImpl(MethodImplOptions.NoInlining)] [Monitor("System.Windows", "Application")] //目标方法的名称空间,类名 public static void LoadComponent(Uri resourceLocator,bool b) { Console.WriteLine(resourceLocator); //mainwindow.baml var uri = new System.Uri(@"pack://application:,,,/MainApp;component/MainWindow.xaml"); old_LoadComponent(uri, b); } [MethodImpl(MethodImplOptions.NoInlining)] [Original] //原函数标记 public static void old_LoadComponent(Uri resourceLocator, bool b) { Console.WriteLine("null"); } } static class Program { static MainApp.App pMainApp; private static void AppRun(object sender, object args) { //在这里开始干坏事 Console.WriteLine("程序已经启动"); } [STAThread] static void Main() { //建立目标程序导出的类 储存起来,方便找对应方法和变量 pMainApp = new MainApp.App(); //需要程序托管之类的操作需要初始化以后才能干,这里监听 Startup pMainApp.Startup += new System.Windows.StartupEventHandler(AppRun); //部分.net 程序查找不到自身目录资源,需要HOOK添加空间名 //这个HOOK 不一定需要,有些程序加壳以后会自行修复这个问题, //hook LoadComponent 这个函数 hookClass hk = new hookClass(); var hookfun = hk.GetType().GetMethod("LoadComponent"); var hookori = hk.GetType().GetMethod("old_LoadComponent"); //通过 MainApp.App 得到父类 ,根据父类查找 LoadComponent函数 MethodInfo LoadComponentFunction = pMainApp.GetType().BaseType.GetMethod("LoadComponent", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static, System.Type.DefaultBinder, new Type[] { typeof(Uri),typeof(bool) },null); IDetour engine = DetourFactory.CreateDetourEngine(); engine.Patch(LoadComponentFunction, hookfun, hookori); pMainApp.InitializeComponent(); pMainApp.Run(); } } }
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2019-10-2 11:42
被kanxue编辑
,原因:
赞赏记录
参与人
雪币
留言
时间
飘零丶
为你点赞~
2024-5-31 07:39
shinratensei
为你点赞~
2024-5-31 07:32
cancelpj
为你点赞~
2023-11-30 13:00
一笑人间万事
为你点赞~
2023-2-20 02:22
赞赏
他的文章
- [求助]模拟器安卓12注入求教 3295
- [原创]使用 Eziriz .NET Reactor 对c#程序加密 21602
- [原创]shellccode注入c#DLL到非托管程序 5665
- [原创]c# .net隐藏注入c++ DLL 12405
谁下载
kanxue
winndy
thk
LOCKLOSE
pendan2001
ysoni
jgs
hahan
huangyalei
eunt
拍拖
KuNgBiM
Sam.com
b23526
jameshero
fishabc
ttstation
hjw
gegon
spman
archon
fibx
luohb
落花满怀
kmsmxpro
cvcvxk
phenge
Perplex
断线风筝
zzcc
zzage
古月亮
shinansoft
sanfang
greenrock
loqich
asmcatii
uvbs
littlewisp
tubalu
chixiaojie
knighthui
xjj
yjpfpl
久久小斌
carllon
ptcql
aisht
lynnux
djzbxxz
风随雨行
bbqbbqtt
比德张
张云波
囧囧
xuehaonan
tomtory
linziqingl
zjkjbobo
yuchengton
deadlydk
liangwenx
NoFlexlm
DuoLaMMeng
chtq
hackcheni
chinarenjf
goddkiller
yezhulove
atompure
loveqiang
tues
tmxfh
yy大雄
zouxuming
NJDK
romero
IaaIe
bambooqj
cccxxxcx
neite
yangand
wswm
trampshi
opass
Arcade
acqqer
gagmeng
z许
繁小昔
hkzjms
zcfrank
sealmoon
locoyer
小菜园子
马来
bfom
MaYil
我有层壳
看原图
赞赏
雪币:
留言: