动态

记录一次安卓动态调试lib库

馋奶兔 提交于 2019-11-30 22:51:10
这道题是iscc 2017中的安卓第二题,所有的算法都在lib库中,而lib库又是加了壳的,所以就用动态调试解决吧。第一次动态调试安卓,就写的详细一些吧。 文中用到 1.能正常运行这个crackme的手机一部,需要root(本人手上的主力机是安卓7.1的就运行不了) 2.IDA一个 3.IDA神级插件Keypatch 4.安卓调试adb 5.python 6.这个crackme 题目链接 链接: http://pan.baidu.com/s/1kVLYYOJ 密码:e2tj 解析 准备 首先在手机上安装这个crackme,这个不需要多说。 通过jeb的逆向,发现所有与题目解题相关的代码都在libtutu.so中。ida直接载入会发现这个so是被加密的。 那就开始动态调试。 在ida的目录下有一个叫dbgsrv的文件夹 此次我们动态调试所需要的是android_server。 通过各种方法,把它放到 /system/bin/ 目录下,并给予执行权限 然后在电脑上执行 adb shell ,输入 su 拿到root权限后再输入 andoird_server 。 看到 Listening on port #23946... 再开一个命令行窗口,输入 adb forward tcp:23946 tcp:23946 进行端口转发。 至此,准备工作就完成了。 IDA连接调试

记录一次安卓动态调试lib库

柔情痞子 提交于 2019-11-30 22:38:38
这道题是iscc 2017中的安卓第二题,所有的算法都在lib库中,而lib库又是加了壳的,所以就用动态调试解决吧。第一次动态调试安卓,就写的详细一些吧。 文中用到 1.能正常运行这个crackme的手机一部,需要root(本人手上的主力机是安卓7.1的就运行不了) 2.IDA一个 3.IDA神级插件Keypatch 4.安卓调试adb 5.python 6.这个crackme 题目链接 链接: http://pan.baidu.com/s/1kVLYYOJ 密码:e2tj 解析 准备 首先在手机上安装这个crackme,这个不需要多说。 通过jeb的逆向,发现所有与题目解题相关的代码都在libtutu.so中。ida直接载入会发现这个so是被加密的。 那就开始动态调试。 在ida的目录下有一个叫dbgsrv的文件夹 此次我们动态调试所需要的是android_server。 通过各种方法,把它放到 /system/bin/ 目录下,并给予执行权限 然后在电脑上执行 adb shell ,输入 su 拿到root权限后再输入 andoird_server 。 看到 Listening on port #23946... 再开一个命令行窗口,输入 adb forward tcp:23946 tcp:23946 进行端口转发。 至此,准备工作就完成了。 IDA连接调试

Unity动态改变物体遮挡关系

我只是一个虾纸丫 提交于 2019-11-30 22:24:39
在动态创建物体时,通常同父级下先创建的子物体会被后创建的遮挡,此时就需要我们用代码改变对象的层级。 GameObject go;go.transform.SetAsLastSibling();//设置对象为最下层 go.transform.SetAsFirstSibling();//设置为最上层有时需要把对象放置在中间某个位置, go.transform.SetSiblingIndex(-1);//数字为-1时设置对象最下层 go.transform.SetSiblingIndex(0);//数字为0时设置对象最上层 go.transform.SetSiblingIndex(1);//数字为1时设置对象位第二层 来源: https://www.cnblogs.com/wangqijun/p/11643049.html

动态代理

心已入冬 提交于 2019-11-30 22:12:21
文章目录 Java有三个动态特性: 反射 注解 动态代理 本文主要介绍动态代理的知识。 代理是什么 代理背后一般至少有一个实际对象,代理的外部功能和实际对象一般是一样的,用户与代理打交道,不直接接触实际对象,虽然外部功能和实际对象一样,但代理有它存在的价值: 节省成本比较高的实际对象的创建开销,按需延迟加载,创建代理时并不真正创建实际对象,而只是保存实际对象的地址,在需要时再加载或创建 执行权限检查,代理检查权限后,再调用实际对象 屏蔽网络差异和复杂性,代理在本地,而实际对象在其他服务器上,调用本地代理时,本地代理请求其他服务器 动态代理是什么 首先我们来看看动态代理的定义。 动态代理: 动态代理可以在运行时动态地创建一个类,这个类实现一个或多个接口,在不修改原有类的基础上动态地为该类获取的对象添加方法,修改行为。 用大白话解释下就是,你在家外面想有刀削苹果,但是刀在你家里面。怎么办呢?这时候动态代理就可以在你需要刀的时候(anywhere,anytime)为你变出一把刀(但是你用这把变出来的刀削平果的时候其实是在使用家里的刀,这样有点超现实了,但是一时没想出更好的例子)。 动态代理应用 为什么要介绍动态代理呢?因为动态代理是面向切面编程(AOP)的基础。是不是很耳熟,没错,相信你在学习Spring的时候已经接触到了Spring AOP的概念了。 什么是Spring AOP呢?

2vue的class动态绑定形式

浪子不回头ぞ 提交于 2019-11-30 22:12:16
vue的class动态绑定,分为2种形式 第一数组形式: <div class="test" :class="[ isGreen ? 'active' :'']"> 我是模拟1 </div> data中变量在前面展示 第二对象形式 <div :class="{active: isActive ,green: isTest }"> 我是模拟2 </div> data中变量写后面 <style> .test{font-size:30px;} .green{color:#00FF00;} .active{background:#FFf000;} </style> 动态绑定class ,由data中变量控制 data : { isActive : true, isGreen : true, isTest: true, } 来源: https://www.cnblogs.com/maomao-Sunshine/p/11642547.html

Spring 动态管理RabbitMQ队列

南楼画角 提交于 2019-11-30 22:02:33
学习RabbitMQ时创建队列我使用了一下2种方式 1.代码中静态创建队列。 @Configuration public class RabbitConfig { @Bean public Queue helloQueue() { return new Queue("hello"); } } 2.通过http:*****:15672 的页面控制上对队列的 现在想管理队列,所以动态创建删除队列。 1.配置依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> 2.配置application.properties spring.rabbitmq.host=192.168.202.128 spring.rabbitmq.port=5672 spring.rabbitmq.username=root spring.rabbitmq.password=123 3.注入ConnectionFactory @Resource(name="rabbitConnectionFactory") private ConnectionFactory connectionFactory; 4.创建队列

泛型动态实例化

99封情书 提交于 2019-11-30 19:56:44
泛型动态实例化需要三个步骤:1.获得泛型类型,2.指定泛型类型,3.实例化 有如下泛型类型: namespace NS { class Buy<T> { public T Amount {get;set;} } } 则 Buy<T> 实例化步骤如下 1.获得泛型类型 typeBuy 方式1 Type typeBuy=typeof(Buy<>); 方式2 Type typeBuy=Type.GetType("NS.Buy`1"); 2.指定泛型类型,获得最终泛型类型 ,如最终类型为 Buy<int>,则最终泛型类型 typeBuyInt Type typeBuyInt=typeBuy.MakeGenericType(typeof(int)); //指定泛型类型 3.使用类型 typeBuyInt 进行动态实例化 方式1 Buy<int> buy=typeBuyInt.GetConstructor(new Type[] { }).Invoke(new object[] { }); 方式2 Buy<int> buy=Activator.CreateInstance(typeBuyInt); 此处实例化仅为举例说明,实际使用也不会直接写出 Buy<int> buy的定义。泛型动态实例化是用于针对泛型的抽象级处理的,有利于简化架构代码量,例如ORM架构以泛型缓存所有实体类映射

动态SQL、绑定变量、静态SQL的性能对比

点点圈 提交于 2019-11-30 19:47:08
1 测试样例 下面的三个存储过程,分别使用了动态 SQL 、绑定变量、静态 SQL 三种编程方式。具体存储过程内容如下: l 动态 SQL create or replace procedure proc1 as begin for i in 1 .. 100000 loop execute immediate 'insertinto t values (' || i || ')'; commit; end loop; end proc1; l 绑定变量 create or replace procedure proc2 as begin for i in 1 .. 100000 loop execute immediate 'insert into t values(:X)' using i; commit; end loop; end proc2; l 静态 SQL create or replace procedure proc3 as begin for i in 1 .. 100000 loop insert into t values(i); commit; end loop; end proc3; 2 测试过程 测试过程的步骤为 1) drop table t purge; 2) create table t (x int); 3) alter system