gpt4 book ai didi

android - 堆损坏 - Android native 代码中的 SEGV_MAPERR

转载 作者:太空宇宙 更新时间:2023-11-04 08:43:23 29 4
gpt4 key购买 nike

我正在尝试为流式 AES 加密创建一个小型库,我的工作基于 Facebook Conceal 项目 (https://github.com/facebook/conceal),只是更改了一些内容并改进了 native 的包装器以支持带填充的密码。

它正在工作,它可以毫无问题地破译文件,但是当我处理大流时,我会遇到随机的堆内存损坏,经过大量调试后,我一直无法找到错误。

这是我的代码:
https://gist.github.com/frisco82/9782725

我试图找到内存分配或释放问题,但几乎没有 malloc 或 free,jni 调用应该是安全的,openssl 也是如此(我已经编译了我自己的,但隐藏提供的也失败)

CheckJni 不会发出任何警告,虽然上下文处理有点开箱即用,但它似乎并没有损坏(实际上 Android concrypt 似乎使用了类似的东西)。

此外,如果有人可以将我指向 Android 原生 AES 多步(多次更新调用)库,我会切换到那个并忘记这个。

错误时有不同,但通常与他的相似:

03-26 10:33:02.065: A/dalvikvm(2475): @@@ ABORTING: DALVIK: HEAP MEMORY CORRUPTION IN mspace_malloc addr=0x0
03-26 10:33:02.065: A/libc(2475): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 2494 (AsyncTask #1)
03-26 10:33:02.205: I/DEBUG(933): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
03-26 10:33:02.205: I/DEBUG(933): Build fingerprint: 'generic_x86/google_sdk_x86/generic_x86:4.4.2/KK/999428:eng/test-keys'
03-26 10:33:02.205: I/DEBUG(933): Revision: '0'
03-26 10:33:02.205: I/DEBUG(933): pid: 2475, tid: 2494, name: AsyncTask #1 >>> com.proton <<<
03-26 10:33:02.205: I/DEBUG(933): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad

完整的堆栈跟踪:
http://pastebin.com/f6mDuQEj

最佳答案

It is working and it can decipher files without problems but I get random Heap Memory Corruptions when I work with large streams.

在我看来,从上面一行来看,您的程序显然正在覆盖您的代码隐式或显式分配的内存。我试图理解您的代码,但我不清楚。但是我试着从内存损坏的场景来看,发现你的程序确实有 malloc/free 调用,这可能会导致内存溢出。

EVP_CIPHER_CTX *ctx = (EVP_CIPHER_CTX*) malloc(sizeof(EVP_CIPHER_CTX));
EVP_CIPHER_CTX_init(ctx);

EVP_CIPHER_CTX *ctx = (EVP_CIPHER_CTX*) malloc(sizeof(EVP_CIPHER_CTX));
EVP_CIPHER_CTX_init(ctx);

我试图检查 EVP_CIPHER_CTX 结构 的布局,但它在您的代码中不可用。但我看到这些指针在您的程序中的各种上下文中得到使用。现在您应该检查在哪些情况下您的缓冲区可以被覆盖,因为您在某些地方使用了不同的 keyLength 并且根据此您的程序正在执行不同的功能。我认为您可能想要查看这些代码并查看是否可能发生溢出!!!....

由于您的应用程序将在基于 android 的系统上运行,我们无法运行任何动态工具(Valgrind/WinDBG/Pageheap..)所以我想您需要通过在重要位置放置一些日志来检查您的代码并查看您在哪里正在覆盖。

希望以上信息对您了解您的问题有所帮助。

关于android - 堆损坏 - Android native 代码中的 SEGV_MAPERR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22662332/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com