Android smali问题

Android smali问题,第1张

概述我目前正在对smali /“代码混淆器”进行一些研究,我正试图熟悉目前反编译的源代码.为此,我创建了一个简单的应用程序,并由smali反编译.我现在正试图理解反编译的源代码,以便在以后使用代码混淆器后改进并比较安全性(反编译).虽然大多数小型源代码并不那么困难,但我有时会遇到数字格式转换的问题.你可以向我解释一下吗以下一行.我猜它应该有五个值,但我不确定,这

我目前正在对smali /“代码混淆器”进行一些研究,我正试图熟悉目前反编译的源代码.为此,我创建了一个简单的应用程序,并由smali反编译.

我现在正试图理解反编译的源代码,以便在以后使用代码混淆器后改进并比较安全性(反编译).虽然大多数小型源代码并不那么困难,但我有时会遇到数字格式转换的问题.

你可以向我解释一下吗以下一行.我猜它应该有五个值,但我不确定,这是哪种二进制格式.如何计算它0x4014 = 5 ???

const-wIDe/high16 v0,0x4014       // 100000000010100        (5 = 101)

附件是此测试函数的完整java和smali代码源:

Java来源:

 boolean test(int a,double d) {        if (a < 5 && d < 5)            return true;        else             return false;    }

Smali来源:

.method test(ID)Z    .locals 2    .parameter "a"    .parameter "d"    .prologue    .line 28    const/4 v0,0x5    if-ge p1,v0,:cond_0    const-wIDe/high16 v0,0x4014    cmpg-double v0,p2,v0    if-gez v0,:cond_0    .line 29    const/4 v0,0x1    .line 31    :goto_0    return v0    :cond_0    const/4 v0,0x0    goto :goto_0.end method
最佳答案不幸的是,dalvik字节码不区分整数类型(short / integer / long / etc.)和浮点类型(float / double).因此baksmali无法知道是否将这样的常量显示为浮点或整数,因此它只是默认为整数.

由于您提到的指令存在,这进一步复杂化了.从dalvik-bytecode page from the dalvik documentation:

“将给定的文字值(右向零扩展到64位)移动到指定的寄存器对中.”

因此该指令实际上会将值0x4014000000000000加载到v0和v1寄存器中.这是标准的64位IEEE-754浮点表示.第一个(最高有效)位是符号位,接下来的11位是指数(基数2),最后52位是尾数.在这种情况下,我们有一个二进制表示

0100000000010100000000000000000000000000000000000000000000000000SEEEEEEEEEEemmMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

对于符号位,0为正,1为负.

对于指数,您取11位的整数值(在本例中为1025),并减去1023,指数为2.

而对于尾数,前面有一个隐含的“1”,在2 ^ 0处,下面的数字是通常的2 ^ -1,2 ^ -2等.所以在这种情况下,我们有二进制数1.01,或1 * 2 ^ 0 1 * 2 ^ -2,或1.25.

用于该值的一般计算形式是

-1 ^(2 S)* M * 2 ^ E.

其中S,M和E是符号,尾数和指数.

在这种情况下,我们有
-1 ^(2 0)* 1.25 * 2 ^ 2 = 1 * 1.25 * 4 = 5

如果您不想每次都手动执行此计算,则可以使用各种在线计算器为您执行此 *** 作. http://babbage.cs.qc.edu/IEEE-754/64bit.html似乎是更好的之一. 总结

以上是内存溢出为你收集整理的Android smali问题全部内容,希望文章能够帮你解决Android smali问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1139531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存