ASM

IDT系统中断描述表以及绕过Xurtr检测的HOOK姿势

半城伤御伤魂 提交于 2019-12-17 10:49:01
什么是中断? 指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。 比如:除零(0号中断)、断点(3号中断)、系统调用(2e号中断)、以及异常处理等都会引发中断,所以自然需要相应的中断例程去进行处理。 这样操作系统就会用数据结构来维护这些中断例程,这个数据结构就是IDT(Interrupt Descriptor Table)。 中断描述表 IDT表的长度与地址是由CPU的IDTR寄存器来描述的。IDTR寄存器共有48位,高32位是IDT表的基地址,低16位是IDT的长度。 typedef struct _IDTR{ USHORT IDT_limit; USHORT IDT_LOWbase; USHORT IDT_HIGbase; }IDTR,*PIDTR; IDTR idtr; __asm SIDT idtr; 可以通过以上SIDT指令可以读取IDTR寄存器。然后通过MAKEWORD宏把高位与地位组合起来就可以获得IDT表的基地址了。 简单来说,IDT表是一张位于物理内存的线性表,共有256个表项。在32位模式下,每个IDT表项的长度是8个字节(64 bit),IDT表的总长度是2048字节。 kd> r idtr idtr

u-boot之make <board_name>_config执行过程分析

此生再无相见时 提交于 2019-12-17 02:00:01
  从网上下载uboot源码之后需要对源码作相应修改来支持自己的开发板,更改完源码之后需要配置。uboot(make<board_name>_config)。这里以百问网的开发板jz2440为例子,配置命令为make 100ask24x0_config。这条命令的执行过程按以下几步分析: 1、u-boot-1.1.6/Makefile简单分析 2、u-boot-1.1.6/mkconfig详细分析 3、总结make 100ask24x0_config这条命令执行后会发生什么 1、u-boot-1.1.6/Makefile简单分析。Makefile的最简单的规则如下(摘超自博客 https://blog.csdn.net/haoel/article/details/2886 ) target ... : prerequisites ... command ... ... target 也就是一个目标文件,可以是Object File ,也可以是执行文件。还可以是一个标签 (Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。 prerequisites 就是,要生成那个target 所需要的文件或是目标。 command 也就是make 需要执行的命令。(任意的Shell 命令) u-boot-1.1.6/Makefile文件下增加了支持jz2440开发板的规则

oracle常见视图

筅森魡賤 提交于 2019-12-16 15:49:14
常见视图 1、查询ASM磁盘可以通过视图V$ASM_DISK;ASM磁盘组则可以通过视图V$ASM_DISKGROUP 2、查询数据库闪回空间的使用情况,可以通过视图V$RECOVERY_FILE_DEST 3、查看当前数据库名:v$instance、v$database 4、查看用户所具有的角色:DBA_ROLE_PRIVS 5、查看用户所具有的系统权限:DBA_SYS_PRIVS 6、查看用户所拥有的对象权限:DBA_TAB_PRIVS 7、查看系统拥有的角色:DBA_ROLES 来源: CSDN 作者: ko_oi 链接: https://blog.csdn.net/ko_oi/article/details/103487701

11gR2 RAC ASM启动过程

自古美人都是妖i 提交于 2019-12-14 06:46:43
从11gR2开始,RAC的ocr和vote开始通过创建一个磁盘组的形式共同存在于ASM中, 从而很好的控制了10g中仍需要为这2个RAC节点划分相应的设备, 并且相应的ASM的spfile也可以存放到ASM diskgroup中以实现多节点ASM的共享管理了。 不过这听上去似乎有些不可思议,照常理来说 ASM实例启动并mount diskgroup后才能够访问diskgroup上的文件, 但是ASM实例只有获得ASM spfile后才能够启动实例,这2者形成了死循环。到底是先启动ASM实例还是RAC先管理到OCRVOTE磁盘组呢。下面我们通过一系列的实验及说明来解释这个问题: 从11.2开始Oracle Cluterware标示voting disk files的方法较之前的版本11.1或10.2有所区别,11.2之前voting disk file的位置存放在OCR中, 但是因为从11.2开始ocr和votedisk可以存放在ASM了 , 所以自11.2始voting disk file通过GPNP profile中的CSS voting file discovery string来定位。 CSS voting disk file的discovery string将指向ASM,所以它要使用ASM discovery string的值。我们利用gpnptool

ASMSupport教程4.12 生成方法调用操作

我的梦境 提交于 2019-12-13 22:18:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> <p>这一节我们讲如何用ASMSupport生成方法调用的操作,方法调用包括下面四种类型:</p> <ol> <li>调用构造方法 <li>调用静态方法 <li>调用非静态方法 <li>调用当前类的方法 <li>调用父类方法</li></ol> <p>首先我们需要看我们想要生成的类:</p> <p>代码1:</p> <h3> <div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:8ef33b82-d2bb-4577-8993-178c1b8d44f7" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre class="brush: java; gutter: true; first-line: 1; tab-size: 4; toolbar: true; width: 796px; height: 519px;" style=" width: 796px; height:

ASMSupport教程1:简单的HelloWorld

落爺英雄遲暮 提交于 2019-12-13 22:17:57
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 这里不做过多解释,先通过下面的代码生成一个class,再通过反射调用其main方法,感受下ASMSupport的奇妙 1.首先创建一个抽象类 public abstract class AbstractExample { /** * system.out global variable */ public static GlobalVariable systemOut = AClassFactory.getProductClass(System.class).getGlobalVariable("out"); public static Class<?> generate(IClassContext creator){ //_这是Class的输出路径。主要为了调试作用。我们通过asmsupport生成的class将获输出到这个路径 //你可以通过反编译软件看看我们生成的结果 creator.setClassOutPutPath(".//target//"); //这个就是个开关。前面我们把该创建的方法变量都放到了传送带上了。调用startup //启动传送带,将上面的东西一个个处理给我返回一个我们需要的成品(就是class了) Class<?> cls = creator.startup(); /

ASMSupport教程4:动态生成类

泪湿孤枕 提交于 2019-12-13 22:13:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 有一段时间没有写blog了,主要原因是前段时间去西安旅游了。好了进入正题。这个篇blog将学习到如何生成一个Class。并且在这个Class中添加局部变量和各种类型的方法。 首先我们看下要生成的class对应的java代码是什么: <!-- lang: java --> public class CreateClassExample { private static String staticGlobalVariable = "I'm a static global variable at class"; public int globalVariable; public CreateClassExample(int intVal) { this.globalVariable = intVal; } private void commonMethod() { System.out.println("staticGlobalVariable : " + staticGlobalVariable); System.out.println("globalVariable : " + this.globalVariable); } public static void main(String[] args) { new

ASMSupport教程4.10 instanceof操作符生成

旧时模样 提交于 2019-12-13 22:07:08
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> <p>instanceof是判断对象是否是某种类型的,我们可以看下下面的代码:</p> <div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:4f2d1c23-092c-4b0f-888f-8ada43241043" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre class="brush: java; gutter: true; first-line: 1; tab-size: 4; toolbar: true; width: 665px; height: 295px;" style=" width: 665px; height: 295px;overflow: auto;">package generated.operators; import java.io.PrintStream; import java.util.ArrayList; import java.util

XTTS Creates Alias on Destination when Source and Destination use ASM (Doc ID 2351123.1)

非 Y 不嫁゛ 提交于 2019-12-12 18:19:51
XTTS Creates Alias on Destination when Source and Destination use ASM (Doc ID 2351123.1) APPLIES TO: Oracle Database - Enterprise Edition - Version 11.2.0.1 and later Oracle Database Cloud Schema Service - Version N/A and later Oracle Database Exadata Cloud Machine - Version N/A and later Oracle Cloud Infrastructure - Database Service - Version N/A and later Oracle Database Cloud Exadata Service - Version N/A and later Information in this document applies to any platform. SYMPTOMS When using XTT migration method (both Note 2005729.1 -12C and Note 1389592.1 -11G) and both source and destination

asm学习2-java类在asm里的基本描述

喜你入骨 提交于 2019-12-11 17:27:32
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 上节里有关于asm的一些基本概念,比如:visit里的第一个类版本,方法的描述、引用描述等,下面将一一介绍。 类版本 一个Java二进制的类文件,都有一个版本,对应于不同的jdk版本。因此ASM中提供了几个常量来指定一个类的版,这些常量定义在org.objectweb.asm.Opcodes接口中,如下: asm中类版本标识 对应jdk版本 public static final int V1_1 = 196653; public static final int V1_2 = 46; 1.2 public static final int V1_3 = 47; 1.3 public static final int V1_4 = 48; 1.4 public static final int V1_5 = 49; 1.5 public static final int V1_6 = 50; 1.6 public static final int V1_7 = 51; 1.7 public static final int V1_8 = 52; 1.8 内部名字 在Java二进制文件中使用的是JVM的内部名字,而不是我们所熟悉的以“.”分割的全限定名,内部名字是以“/”替代“.”的全名。例如:java.lang