小编loc*_*cct的帖子

使用 smalidea 在 Intellij 调试器中调试 smali 代码时访问虚拟寄存器

我目前正在学习调试 smali 代码,我正在使用这个工具(https://github.com/devadvance/rootinspector)作为例子。

在一个代码片段中,它是这样写的

    public boolean checkRootMethod3() {
    Log.d(Main.TAG, "check4");
    try {
        File file = new File("/system/xbin/su");
        return file.exists();
    } catch (Exception e) {
            return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

对应的smali代码如下

.method public checkRootMethod3()Z
.locals 4

.prologue
.line 76
const-string v2, "RootInspector"

const-string v3, "check4"

invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

.line 78
:try_start_0
new-instance v1, Ljava/io/File;

const-string v2, "/system/xbin/su"

invoke-direct {v1, v2}, Ljava/io/File;-><init>(Ljava/lang/String;)V

.line 79
.local v1, "file":Ljava/io/File;
invoke-virtual {v1}, Ljava/io/File;->exists()Z
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0

move-result v2

.line …
Run Code Online (Sandbox Code Playgroud)

android intellij-idea

5
推荐指数
0
解决办法
255
查看次数

在 LLVM 中创建 raw_ostream 对象

创建 raw_ostream 对象并将其用于打印的正确方法是什么?我阅读了各种文章,我能找到的唯一示例是(如何将 llvm::outs() 重定向到文件?

raw_ostream *output = &outs();
Run Code Online (Sandbox Code Playgroud)

它利用了 llvm::outs。

抱歉问这个,因为我不太熟悉 C++,但必须了解 LLVM 的工作原理。

c++ llvm-ir

2
推荐指数
1
解决办法
794
查看次数

安全网离线验证

我正在尝试按照此处的示例执行离线验证(https://github.com/googlesamples/android-play-safetynet/blob/master/server/java/src/main/java/OfflineVerify.java)。但是,当我尝试导入以下类时,Android Studio 指示未解析的引用

import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.json.webtoken.JsonWebSignature;
import org.apache.http.conn.ssl.DefaultHostnameVerifier;
Run Code Online (Sandbox Code Playgroud)

未解析的引用是 api 和 DefaultHostnameVerifier。

我错过了一些设置吗?

android safetynet

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

iOS ARM64 系统调用

我正在学习更多关于 shellcode 和在 iOS 设备上使用 arm64 进行系统调用的知识。我正在测试的设备是 iPhone 6S。

我从这个链接(https://github.com/radare/radare2/blob/master/libr/include/sflib/darwin-arm-64/ios-syscalls.txt)得到了系统调用列表。

我从这里了解到 x8 用于放置 arm64 的系统调用号(http://arm.ninja/2016/03/07/decoding-syscalls-in-arm64/)。

我认为用于传递 arm64 参数的各种寄存器应该与 arm 相同,所以我参考了这个链接(https://w3challs.com/syscalls/?arch=arm_strong),取自https://azeria-labs .com/writing-arm-shellcode/

我在 Xcode 中编写了内联汇编,这里有一些片段

//exit syscall
__asm__ volatile("mov x8, #1");
__asm__ volatile("mov x0, #0");
__asm__ volatile("svc 0x80");
Run Code Online (Sandbox Code Playgroud)

但是,当我跳过这些代码时,应用程序不会终止。

char write_buffer[]="console_text";
int write_buffer_size = sizeof(write_buffer);

__asm__ volatile("mov x8,#4;"     //arm64 uses x8 for syscall number
                 "mov x0,#1;"     //1 for stdout file descriptor
                 "mov x1,%0;"    //the buffer to display
                 "mov x2,%1;"    //buffer size
                 "svc 0x80;" …
Run Code Online (Sandbox Code Playgroud)

assembly ios arm64

0
推荐指数
2
解决办法
3359
查看次数

标签 统计

android ×2

arm64 ×1

assembly ×1

c++ ×1

intellij-idea ×1

ios ×1

llvm-ir ×1

safetynet ×1