-
使用ILSpy或Reflector 反编译N3000并导出解决方案,便于搜索方法代码
-
使用ILDASM生成中间代码D:\app\WG\AccessControl\IL\N3000.il
操作如下:(可参考)
打开目录C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin
运行ildasm.exe
通过IL DASM的界面,打开N3000.EXE文件
在文件菜单中使用转储,转储IL文件为D:\app\WG\AccessControl\IL\N3000.IL
-
用NOTEPAD++打开IL文件
-
公开wgconfig类
-
搜索beforefieldinit WG3000_COMM.Core.wgAppConfig
-
-
-
修改private为public
-
公开icPrivilege
-
搜索beforefieldinit WG3000_COMM.DataOper.icPrivilege
-
-
修改private为public
-
公开icConsumerShare
-
搜索beforefieldinit WG3000_COMM.DataOper.icConsumerShare
-
-
修改private为public
-
公开 icConsumer
-
搜索beforefieldinit WG3000_COMM.DataOper.icConsumer
-
-
修改private为public
-
公开 icControllerConfigureFromDB
-
搜索beforefieldinit WG3000_COMM.DataOper.icControllerConfigureFromDB
-
-
修改private为public
此时agent项目应该能编译通过,编译前会调用C:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe将N3000.IL文件编译为N3000.EXE,代表项目会调用N3000.EXE中的方法
C:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe n3000.il /exe /output=n3000.exe
-
注入QGate.Spy.DLL
-
搜索void Main(string[] cmdArgs)
-
查看反编译出来的 N3000.EXE的源码中的入口代码,寻找合理的注入位置,一般选择在登录后,主窗体加载前
-
-
从void Main开始搜索frmADCT3000,在IL文件中找到相应位置
-
添加新行,注意行号要根据上下文确定
IL_07c2: call void [QGate.Spy]QGate.Spy.ClassSpy::Start()
-
保存,重新编译N3000.EXE
至此注入完成