动态

(原创)WINCE流驱动的动态加载调试

泄露秘密 提交于 2020-02-17 15:36:42
免去重新生成NK IMAGE的麻烦,直接用应用程序调试流驱动,高效快捷,透明可见。 1.在EVC下编译驱动源文件,生成驱动的DLL. 注意:在编译时请注意project setting,要加入驱动的导出文件,即在project options 中加入 /def:"IR.DEF" , 这一步很重要,否则驱动无法被应用程序调用。 2.用EVC编写一个动态加载驱动的程序,举例如下: //动态加载流驱动; HANDLE m_hIR; m_hIR = RegisterDevice(TEXT("IRC"),1,TEXT("irc.dll"),1); if(m_hIR == NULL){ dwErr = GetLastError(); strErr.Format(L"Error Code = %d\n",dwErr); ::MessageBox(NULL,strErr,_T("IRC Device Test Program"),MB_OK); } //卸载流驱动; DeregisterDevice(m_hIR); m_hIR = NULL; 3.将驱动工程生成的DLL文件复制到目标平台的windows目录下,即可运用应用程序进行驱动的动态加载了。 在驱动程序中,可以利用 RETAILMSG 进行驱动的跟踪调试,调试信息会从平台的串口中打印出来。 来源: https://www.cnblogs

pwn之ret2libc

廉价感情. 提交于 2020-02-17 14:25:25
0×01 利用思路 ret2libc 这种攻击方式主要是针对 动态链接(Dynamic linking) 编译的程序,因为正常情况下是无法在程序中找到像 system() 、execve() 这种系统级函数(如果程序中直接包含了这种函数就可以直接控制返回地址指向他们,而不用通过这种麻烦的方式)。因为程序是动态链接生成的,所以在程序运行时会调用 libc.so (程序被装载时,动态链接器会将程序所有所需的动态链接库加载至进程空间,libc.so 就是其中最基本的一个) , libc.so 是 linux 下 C 语言库中的运行库 glibc 的动态链接版,并且 libc . so 中包含了大量的可以利用的函数,包括 system() 、execve() 等系统级函数,我们可以通过找到这些函数在内存中的地址覆盖掉返回地址来获得当前进程的控制权。通常情况下,我们会选择执行 system(“/bin/sh”) 来打开 shell, 如此就只剩下两个问题: 1、找到 system() 函数的地址; 2、在内存中找到 “/bin/sh” 这个字符串的地址。 0×02 什么是动态链接(Dynamic linking) 动态链接 是指在程序装载时通过 动态链接器 将程序所需的所有 动态链接库(Dynamic linking library) 装载至进程空间中( 程序按照模块拆分成各个相对独立的部分

Java基础之反射(一)

六眼飞鱼酱① 提交于 2020-02-17 13:37:25
  在Java运行时环境中,对于任意一个类,可以知道这个类的属性和方法,实例化对象,而通过实例化的对象 获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制。那么反射可以实现什么功能呢?   1、在运行时判断任意一个对象所属的类。   2、在运行时构造任意一个类的对象。   3、在运行时判断任意一个类所具有的成员变量和方法。   4、在运行时调用任意一个对象的方法。    其中,一般而言,开发者社群说到的动态语言,大致认同的一个定义是:"程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。"从这个观点看,Perl,Python,Ruby是动态语言,而C++,Java,C#不是动态语言。   Java程序可以加载一个运行时才得知名称的class,获悉其完整构造,并生成其对象实体或对其fields设值或唤起其methods。这种可以"看透class"的能力被称为introspection(内省、内观、反省)。Reflection是Java被视为动态(或者准动态)语言的一个关键性质。    在JDK中,主要由以下类来实现Java反射机制,而这些类都位于java.lang.reflect包中:   Class类:代表一个类,是 Reflection API中的核心类。   Field类:代表类的属性。   Method类:代表类的方法。

Cglib动态代理

*爱你&永不变心* 提交于 2020-02-16 21:32:49
JDK实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类,如何实现动态代理呢,这就需要CGLib了。CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。JDK动态代理与CGLib动态代理均是实现Spring AOP的基础。 委托类: package com.reflect.proxy; public class GunDog1 { public void info() { System.out.println("我是一只美丽的猎狗"); } public void run() { System.out.println("我非常的奔跑迅速"); } } 通用的方法: package com.reflect.proxy; public class DogUtil { public void method1(){ System.out.println("=====模拟第1个通用方法======"); } public void method2(){ System.out.println("=====模拟第2个通用方法======"); } } 代理类“: interceptor(Object obj,Method method,Object[] args ,MethodProxy

java动态代理

丶灬走出姿态 提交于 2020-02-16 20:58:18
package test; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; public class TestProxy { public static void main(String[] args) { //jdk动态代理,JDK动态代理只能对实现了接口的类生成代理,而不能针对类 final AImpl am = new AImpl(); AInterface ai = (AInterface) Proxy.newProxyInstance(am.getClass().getClassLoader(), am.getClass().getInterfaces(), new InvocationHandler(){ @Override public Object invoke(Object proxy, Method method, Object[] args) throws

odoo 动态创建字段的方法

牧云@^-^@ 提交于 2020-02-16 09:01:35
动态创建字段并非一个常见的的需求,但某些情况下,我们确实又需要动态地创建字段。 Odoo 中创建字段的方法有两种,一种是通过python文件class中进行定义,另一种是在界面上手工创建,odoo通过state字段对这两种类型的字段进行区分。 通过界面创建的字段必须以x_开头。 笔者曾经试图通过python文件来动态创建base类型的字段,结果没有找到合适的方法。但是苦思冥想好久之后发现可以通过动态创建manual字段来达到这个目的。 应用: 国内人力资源应用中经常需要统计每个人的工资总表,而工资的构成是灵活动态的(虽然可以固定下来,但是一旦变动又要修改模块代码),这样想要汇总一个总表就变得非常困难, 利用动态创建字段的方法就非常容易的达到这个目的: 表中的工资构成是动态的 one2many ,不修改代码实现汇总总表: 来源: https://www.cnblogs.com/kfx2007/p/5601533.html

Spring 的学习6_______静态代理和动态代理(AOP的底层实现原理)

六眼飞鱼酱① 提交于 2020-02-15 14:41:15
代理模式可分为静态代理,动态代理。 1.静态代理: 静态代理的角色分析: 1.真实对象; 2.代理真实对象的对象(代理对象)一般会添加一些附加的操作; 3.真实对象和代理对象抽象出来的公共部分(一般为抽象类或者接口); 4.用户(通过代理对象来调用真实对象的方法)。 静态代理的一个代码案例: 情景模型:你(用户)通过租房中介(代理对象)从房东(真实对象)进行租房的活动。 真实对象(Host) //真实对象 public class Host implements Rent { public void rent() { System.out.println("Host 租房子啦!"); } } 代理对象: //代理对象 public class Proxy implements Rent { private Host host; public Proxy(Host host) { this.host = host; } public void rent() { lookHouse(); host.rent(); fare(); } //代理对象添加的额外的操作 public void lookHouse(){ System.out.println("带你一起去看看房子!"); } public void fare(){ System.out.println("交易结束,请按时付款!"

vue import动态引入

旧时模样 提交于 2020-02-15 05:20:37
1,动态引入组件 components: { importdata:()=>import(/* webpackChunkName: "importdata" */'./importdata.vue'), flowButtons }, 2,动态引入部分 let message = null; import(/* webpackChunkName: "elementmessage" */'element-ui').then(({Message})=>{ message = Message; }); 来源: CSDN 作者: 837927397@QQ.COM 链接: https://blog.csdn.net/qq_22936647/article/details/104308097

Aigtek功率放大器在使用过程中应该如何进行阻抗匹配

无人久伴 提交于 2020-02-13 17:27:13
功率放大器的匹配方法在线性网络设计中,为获得最大功率传输,网络通常采用共轭阻抗匹配方式,但由于功率放大器输入、输出阻抗呈现非线性,不可能实现共轭匹配,通常是将50Ω负载变换到这样一个阻抗值,其实部可在输入、输出偏置电压下获得最大输出功率,其虚部可以将晶体管内部寄生元件调谐掉,该网络变换成的阻抗称为最佳负载阻抗,也称为动态输出阻抗。 由于功率放大器工作于非线性,小信号放大器的网络设计方法不再适用。通常采用以下三种方法来设计功率放大器的匹配网络:动态阻抗法、大信号S参数法和负载牵引法。 动态阻抗法:动态阻抗法要求提供大信号工作状态下的动态输入、输出阻抗。动态阻抗测试原理是:将功率管调整到最大功率输出状态,然后分别测出从信号源向功率管输入端看去、从负载向输出端看去的阻抗,其阻抗值即为动态输入(Zin)、动态输出阻抗(ZOL), 大信号S参数法:利用大信号S参数可以进行功率放大器的功率增益、稳定性的分析和增益、平坦度的设计。用大信号S参数设计功率放大器时,除了应根据输出功率的大小选择负载阻抗外,还可以根据绝对稳定条件和潜在不稳定条件两种情况分别进行考虑。由于大信号S参数的测量比较困难,通常采用双信号法或大电流直流拟合法来测量大信号S参数。 负载牵引法:负载牵引法要求给出对应各种不同的输出功率、功率增益和效率等参数的数据,由计算机进行综合设计。其设计系统较为复杂。通常对于大功率晶体管而言