标签: dalvik

Android中不安全的类?

Android Dalvik标准库是否具有类似于Java SE中未记录的类sun.misc.Unsafe的类,它允许直接访问内存.

java android dalvik

8
推荐指数
1
解决办法
3171
查看次数

是不是有.apk的官方格式规范?

我见过一些将.apk文件反转为基本文件的应用程序.我想知道在哪里可以找到.apk文件的官方规范,但我无处可去!如果没有正式的规范,有人可以告诉我们在哪里看,以及有关规范的最佳资源是什么?

android reverse-engineering dalvik apk

8
推荐指数
1
解决办法
1409
查看次数

在不构建核心库时,不明智或错误地使用核心类(java.*或javax.*)

当我清理我的项目时,我收到以下错误:

[2011-10-05 13:47:53 - The Basics] Dx 
trouble processing "java/nio/CharBuffer.class":

Ill-advised or mistaken usage of a core class (java.* or javax.*)
when not building a core library.
Run Code Online (Sandbox Code Playgroud)

这通常是由于在使用IDE(例如Eclipse)时无意中在应用程序的项目中包含了核心库文件.如果你确定你不是故意定义一个核心类,那么这就是最可能的解释.

但是,您实际上可能正在尝试在核心命名空间中定义一个类,例如,您可能已从非Android虚拟机项目中获取该类.这肯定是行不通的.它至少会危害您的应用与该平台的未来版本的兼容性.它的合法性通常也是有问题的.

如果您真的打算构建一个核心库 - 它只适合作为创建完整虚拟机分发的一部分,而不是编译应用程序 - 那么使用"--core-library"选项来抑制此错误消息.

如果你继续使用"--core-library"但实际上正在构建一个应用程序,那么预先警告你的应用程序仍然无法构建或运行,在某些时候.请为愤怒的客户做好准备,例如,一旦升级操作系统,您的应用程序就会停止运行.你应该为这个问题负责.

如果您合法地使用恰好位于核心软件包中的某些代码,那么最简单的安全替代方法是重新打包该代码.也就是说,将有问题的类移动到您自己的包命名空间中.这意味着它们永远不会与核心系统类冲突.JarJar是一个可以帮助您完成这项工作的工具.如果你发现你不能做到这一点,那就表明你所走的道路最终会导致痛苦,痛苦,悲伤和悲伤.

[2011-10-05 13:47:53 - The Basics] Dx 1 error; aborting
[2011-10-05 13:47:53 - The Basics] Conversion to Dalvik format failed with error 1
Run Code Online (Sandbox Code Playgroud)

dalvik

8
推荐指数
1
解决办法
6748
查看次数

Dalvik VM如何在方法调用之间保存和恢复其寄存器?

从语义上讲,Dalvik VM为每种方法都有一组新的寄存器,并且没有访问调用堆栈的指令.但就其实现而言,寄存器应以某种方式保存在方法调用上并在方法返回时恢复.Dalvik(谷歌的实施)如何做到这一点?

android jvm computer-architecture dalvik vm-implementation

8
推荐指数
2
解决办法
1313
查看次数

malloc和dlmalloc之间的区别

为了在dalvik堆中分配内存区域,应用程序使用dlmalloc而不是普通的malloc,为什么使用dlmalloc,以及它与malloc的区别.(据我所知,为了在创建dalvik VM时分配dalvik堆,使用了malloc.)

android memory-management dalvik

8
推荐指数
1
解决办法
5547
查看次数

是否存在Java的通用或"胖"类文件?

一个胖二进制是可在多个架构上运行的二进制.基本上,它由一个编译两次的程序组成,每个架构一次,然后写入同一个文件.可能最着名的例子是Apple的"通用"二进制文件,允许为英特尔和Power PC架构编译程序,并从相同的可执行文件运行.

这对Java来说从来都不是问题,因为Java在JVM上运行,允许它从任何支持JVM的计算机运行.但是,Android现在非常流行,Android的VM(Dalvik)与JVM不兼容.有没有办法编译代码两次,并创建一个可以由JVM和Dalvik执行的类文件?如果没有,这甚至可能吗?

java android dalvik fat-binaries

8
推荐指数
1
解决办法
462
查看次数

自动转换Android的dex代码

我想转换/仪器Dex文件.转型的目标包括测量代码覆盖率.请注意,源文件不可用.所以检测Dex是唯一的选择.

我想知道是否有任何现有的代码库,我可以看作为编写工具来实现我的目标的示例.

我了解Smali项目以及以Smali为基础的许多其他项目.但是,这些项目都不是我的目的的好例子.

我正在寻找自动转换smali代码或dexlib表示的代码,从中生成smali.后面的选项对我来说是首选,因为可以避免生成smali的开销.

android dalvik dex smali

8
推荐指数
1
解决办法
1924
查看次数

Python与Dalvik或AAF之间的本土桥梁

是否有任何项目将Python和Dalvik连接在同一地址空间中?

那是用一种语言创建的对象可以在另一种语言中注册为侦听器,反之亦然?

-

Python可以是CPython或PyPy;

Dalvik可能是完整的Android应用程序框架,也可能只是Dalvik虚拟机,或者在最坏的情况下,甚至可能是非Dalvik JVM;

Bridge可以用Python/cffi,Python/jni,本机C/C++代码甚至java编写.

据我所知,脚本环境并不能满足我的需求.

如果完全缺乏Python - Dalvik桥,我将采用全功能的基于C/C++的C/C++ - Dalvik桥作为最后的手段作为有效的答案.然后需要一个示例来实例化C/C++中的on对象,该对象可以在运行时作为有效的侦听器提交给某些Android API,包括安全性考虑因素.

python java-native-interface android dalvik python-cffi

8
推荐指数
1
解决办法
1047
查看次数

究竟是什么导致Android中的"旋转暂停"错误?

我目前无法调试一些依赖本机库的Android代码.特别是一个本地调用似乎容易出现"旋转暂停"错误.它通常表现如下:

threadid=2: spin on suspend #2 threadid=48 (pcf=3)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我还没有确切地确定这里失败了什么,除了在大约10条消息之后,我的应用程序遇到了SIGSTKFLT退出.每次,第一个线程是GC,第二个线程是当前正在执行本机代码的线程.与此消息一起打印的堆栈部分始终在堆栈顶部具有本机方法.

当Dalvik抱怨这件事时究竟发生了什么,我怎样才能开始调试原因以便我能解决它?

编辑:一个有趣的皱纹 - 在本机开发人员做了一些更改后,我现在也看到以下错误:

PopFrame missed the break
VM aborting
Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1)
Run Code Online (Sandbox Code Playgroud)

对我来说,线程转储在堆栈顶部显示我的本机方法也是非常奇怪的,但是线程状态RUNNABLE不是NATIVE- 这怎么可能呢?

java-native-interface android dalvik

8
推荐指数
1
解决办法
2355
查看次数

我可以安全地阻止Dalvik浏览器代理请求吗?

我注意到,当Android-OS设备上的用户访问我的网站时,每个页面上都会发生两个请求.第一个是普通浏览器,第二个是"Dalvik".例:

"GET/HTTP/1.1"200 2126" - ""Mozilla/5.0(Linux; Android 5.0.2; SAMSUNG SM-G925F/G925FXXU1AOD8 Build/LRX22G)AppleWebKit/537.36(KHTML,与Gecko一样)SamsungBrowser/3.0 Chrome/38.0. 2125.102 Mobile Safari/537.36"1229 2802

"GET/HTTP/1.1"200 2117" - ""Dalvik/2.1.0(Linux; U; Android 5.0.2; SM-G925F Build/LRX22G)"546 8729

根据我对此的理解,第一个请求来自实际的浏览器,另一个来自运行浏览器的虚拟机(Dalvik).问题是Dalvik请求不使用相同的cookie和/或POST数据,这会触发服务器端的错误.一个例子是当用户注册帐户时.普通浏览器通过POST数据发送,但Dalvik请求只对动作URL进行了GET.同样,如果用户已登录,Dalvik将在基于权限的页面上尝试GET,该页面可能会将其重定向到其他位置,因为它没有会话.

用户没有遇到任何实际问题(据我所知),但是,我们注意到错误记录的尝试.所以我的问题是:我可以肯定地阻止所有访问尝试,如果浏览器代理指示"的Dalvik/.*."?是否会对用户产生任何不利影响?考虑到与Dalvik相关的请求实际上没有重新发布真实数据或进行会话,似乎不太可能.但希望有更多Android经验的人可以提供一些反馈,例如,我应该发出特定的HTTP标头/状态代码,例如"401 Unauthorized"或"400 Bad Request"?

任何帮助,将不胜感激.

browser android dalvik

8
推荐指数
1
解决办法
7364
查看次数