dvm

.Net Core之Swagger

会有一股神秘感。 提交于 2020-12-13 08:02:39
1.项目生成xml 2.添加链接文件,并将属性设值为始终复制 3.添加swagger引用:Swashbuckle.AspNetCore 4.startup.cs配置swargger的xml来源: ConfigureServices方法添加: services.AddMvc(); services.AddOptions(); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "DVM AdsPlatformProxy Service WebApi", Version = "v1.0.0.3" }); var basePath = PlatformServices.Default.Application.ApplicationBasePath; var docPath = Path.Combine(basePath, "Docs"); var docs = XMLUtil.CreateXPathDocumentsFromDirectory(docPath); docs.ForEach(xp => c.IncludeXmlComments(() => { return xp; })); });//swagger文件路径配置 services.RegisterServiceR<ILogBase,

Android平台dalvik模式下java Hook框架ddi的分析(1)

人走茶凉 提交于 2020-10-02 08:48:15
本文博客地址: http://blog.csdn.net/qq1084283172/article/details/75710411 一、前 言 在前面的博客中已经学习了作者crmulliner编写的,针对Android系统的跨进程 inline Hook的实现即Android native Hook框架adbi的实现。Android Hook框架adbi主要是针对的Android的native函数进行inline Hook操作,那么如果需要对Android系统中Java编写的函数进行Hook,又该怎么操作呢?作者crmulliner后面又实现了针对Android的java函数进行Hook的框架ddi。adbi Hook框架和ddi java Hook框架的实现流程都差不多,首先实现root权限下Android跨进程的so注入,在so库文件被加载注入到目标进程中时,调用该so库文件的构造函数有一次代码执行的机会,利用这一次代码执行的机会既可以进行针对Android系统底层native函数的inline Hook或者.got Hook等,也可以进行针对Android系统的java函数进行dalvik Hook或者art Hook。Android平台的所有跨进程Hook都是基于Android系统root权限下的so注入和一次代码执行机会来实现的,只要能实现Android的跨进程注入

Android平台dalvik模式下java Hook框架ddi的分析(2)--dex文件的注入和调用

巧了我就是萌 提交于 2020-08-20 06:37:16
本文博客地址: http://blog.csdn.net/qq1084283172/article/details/77942585 前面的博客《 Android平台dalvik模式下java Hook框架 ddi 的分析(1) 》中,已经分析了dalvik模式下 ddi 框架Hook java方法的原理和流程,这里来学习一下ddi框架代码中涉及到的 dex文件的注入和调用。将一个Android的so库文件跨进程注入到另一个进程中,在so库文件的实现里,我们可以做很多的事情,例如:inline Hook,java方法的Hook,dex文件的注入和调用,ndk的jni函数的Hook等等。 1 .ddi框架在进行dex文件的注入和调用是在原来dalvik模式下java方法Hook的基础上修改过来的,在 hijack注入工具将android so库文件注入到目标pid进程时实现android的inline Hook操作,为了保证android的inline Hook操作的顺利执行,需要为注入到目标pid进程中android so库文件定义 .init段或者.init_array段的构造函数,如下图中的my_init构造函数;在inline Hook操作的自定义函数my_epoll_wait里进行dalvik虚拟机模式下的java方法Hook操作。 代码的流程梳理如下: 1.

Android 源码分析(十) Dalvik 虚拟机创建过程

青春壹個敷衍的年華 提交于 2020-05-02 10:50:26
一. 介绍Dalvik   1.java的运行需要JVM,同样android中使用了java语言,也需要一个VM。针对手机处理器和内存等硬件资源不足而推出来的一款VM,为android运行提供环境,叫DVM。   2.Dalvik虚拟机允许多个instance的存在。实际上android中的每一个app都是运行在自己VM实例之中(沙盒)。每一个VM实例在linux中又是一个单独的进程,所以可以认为是同一个概念。运行在自己的DVM进程之中,不同的app不会相互干扰,且不会因为一个DVM的崩溃导致所有的app进程都崩溃。这点来说, Android dvm的进程和Linux的进程, 应用程序的进程 概念类似。   3.与 JVM的区别:      1.基于架构的不同。JVM是基于栈的架构,而DVM是基于寄存器架构。     2.jvm运行的是字节码文件,而dvm运行自己定义的dex文件格式。        JVM编译过程 java->class->jar        DVM编译过程java->class->dex     总结dvm与jvm区别:           区别一:dvm执行的是.dex格式文件 jvm执行的是.class文件 android程序编译完之后生产.class文件,然后,dex工具会把.class文件处理成.dex文件,然后把资源文件和.dex文件等打包成

干货 干货 2019阿里巴巴Android40道基本面试题

|▌冷眼眸甩不掉的悲伤 提交于 2020-04-24 23:29:42
找工作还是需要大家不要经常,有我们干这一行的接触人本来就不多 难免看到面试官会紧张,主要是因为怕面试官问的问题到不上来,那时候不要着急 ,答不上了的千万不然胡扯一些,直接就给面试官说这块我还没接触到,以后如果工作当中遇到的话我可以很快的吧这个问题给解决了,但是我们有了这篇文章,就不一样了,基本上问的问题都有适当的看一下,到时候很快就可以拿到 offer 我在这里祝大家工作顺利,天天开心 ,好了下面就是正题, 1. Tcp和http 的区别   Tcp是在网络层,http是在服务层.Http借助Httpclient和urlconnenticon是短连接 ,请求一次后就断开了需要 重新请求才能连接   Tcp借助是socket,长连接需要三次握手,第四次握手才能取消连接 2 .存储数据有哪些方式   文件存储,   sharedpreference存储,   sqllite存储 ,   contentprivider存储 ,   网络存储 3. 如何将一个Activity设置成窗口的样式。 可以自定义一个activity的样式,详细见手机卫士的程序详细信息 android:theme="@android:style/Theme.Dialog" 4.如何退出Activity?如何安全退出已调用多个Activity的Application?   每打开一个Activity,就记录下来

面试常问点:深入剖析JVM的那些事

 ̄綄美尐妖づ 提交于 2020-04-22 01:53:53
文章较长,主要讲解了JVM的整个流程,其次介绍Dalvik与JVM的区别及ART Class文件结构 -> JVM内存模型 -> 类加载器 -> 类加载过程 -> 类的引用方式 -> 内存分配策略 -> GC -> 对象的引用类型 -> 类卸载 先前知识 众所周知java是一种跨平台的语言,但实际上跨平台的并不是java而是JVM。 JVM(Java Virtual Machine)是一种虚拟机,用来将由java文件编译成的class字节码文件再编译成机器语言,供机器识别。有了JVM中间人的存在就不需要直接与操作系统打交道,且不同的操作系统有不同的JVM,于是就屏蔽了操作系统间的差异,从而使java成为跨平台语言。 DVM又是什么? Dalvik Virtual Machine简称DVM也是一种虚拟机,是专门为Android平台开发的,它与JVM是有差别的。 Dalvik基于寄存器,而JVM 基于栈。性能有很大的提升。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。 寄存器的概念 寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC),在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC) 栈的概念 栈是线程独有的

资本寒冬下的android面经

狂风中的少年 提交于 2020-02-29 18:11:03
声明:作者:璇_c2be 链接: https://www.jianshu.com/p/089861329c1a 在2018年10月初,公司倒闭,无奈走上找工作的道路,不想自己平时图安逸,不思进取,再次找工作才发现,android行业也不是站在风口上,猪也能吹上天的世道了.作为技术小菜的我,再找工作那几个月真是战战兢兢,被打击得信心全无.记录下我的面试经历,分享给需要的人.勉励自己要时时进步,才不会被淘汰. 猎豹移动:(有笔试) atomicinteger内存模型 static编译时有啥不同,static 语句块,static变量,static方法,构造初始化顺序(静态绑定) animation和animator的用法,概述实现原理 Handler,looper,messagequeue,thread,message,每个类功能,关系? Mvc,mvp的差异 app闪退的原因有哪些?每种情况简述分析过程 如果一个app存在多进程,请列出全部的ipc方法 操作系统中进程和线程有什么联系和区别,系统什么时候会在用户态和内核态中切换? 如何加载ndk库?如何在jni中注册native函数,有几种注册方式? 一个app如果性能不好,怎么分析? 饿了么(无笔试) 设计的六大原则 如果hashmap key不一样,但是hashcode一样会怎么样? okhttp有什么优秀的设计模式

列出<T> OrderBy字母顺序

倾然丶 夕夏残阳落幕 提交于 2020-02-26 21:24:26
我在Framework 3.5上使用C#。 我想快速排序通用 List<T> 。 为了这个例子,假设我有一个具有lastname属性的 Person 类型的List。 如何使用lambda表达式对此List进行排序? List<Person> people = PopulateList(); people.OrderBy(???? => ?????) #1楼 您可以使用此代码段: var New1 = EmpList.OrderBy(z => z.Age).ToList(); 其中 New1 是 List<Employee> 。 EmpList 是 List<Employee> 变量。 z 是 Employee 类型的变量。 #2楼 people.OrderBy(person => person.lastname).ToList(); #3楼 您是否需要对列表进行分类,或者只是列表内容的有序序列? 后者更容易: var peopleInOrder = people.OrderBy(person => person.LastName); 要进行排序,您需要 IComparer<Person> 或 Comparison<Person> 。 为此,您可能希望在 MiscUtil中 考虑 ProjectionComparer 。 (我知道我一直把MiscUtil搞定 - 它只是保持相关..

What is the difference between DVM and JVM?

百般思念 提交于 2019-11-28 15:27:30
What is difference between Java Virtual Machine and Dalvik Virtual Machine? Mayuri DVM is Register based which is designed to run on low memory, uses its own byte code and runs .Dex file JVM is Stack based which uses java byte code and runs .class file having JIT. Java source code is compiled by the Java compiler into .class files. Then the dx (dexer) tool, part of the Android SDK processes the .class files into a file format called DEX that contains Dalvik bytecode. The dx tool eliminate all the redundant information that is present in the classes. In DEX all the classes of the application

What is the difference between DVM and JVM?

旧巷老猫 提交于 2019-11-27 09:13:58
问题 What is difference between Java Virtual Machine and Dalvik Virtual Machine? 回答1: DVM is Register based which is designed to run on low memory, uses its own byte code and runs .Dex file JVM is Stack based which uses java byte code and runs .class file having JIT. Java source code is compiled by the Java compiler into .class files. Then the dx (dexer) tool, part of the Android SDK processes the .class files into a file format called DEX that contains Dalvik bytecode. The dx tool eliminate all