修改android内核反调试标志

第一处 msm/fs/proc/base.c文件 273行 proc_pid_wchan 函数修改为(主要对285行进行了修改)

static int proc_pid_wchan(struct task_struct *task, char *buffer)
{
    unsigned long wchan;
    char symname[KSYM_NAME_LEN];

    wchan = get_wchan(task);

    if (lookup_symbol_name(wchan, symname) < 0)
        if (!ptrace_may_access(task, PTRACE_MODE_READ))
            return 0;
        else
            return sprintf(buffer, "%lu", wchan);
    else{
        if (strstr(symname, "trace")) {
            return sprintf(buffer, "%s", "sys_epoll_wait");
        }
        return sprintf(buffer, "%s", symname);
    }
}


第二处 msm/fs/proc/array.c 文件 134行

static const char * const task_state_array[] = {
    "R (running)",      /*   0 */
    "S (sleeping)",     /*   1 */
    "D (disk sleep)",   /*   2 */
    "T (stopped)",      /*   4 */
    "t (tracing stop)", /*   8 */
    "Z (zombie)",       /*  16 */
    "X (dead)",     /*  32 */
    "x (dead)",     /*  64 */
    "K (wakekill)",     /* 128 */
    "W (waking)",       /* 256 */
};

修改后

static const char * const task_state_array[] = {
    "R (running)",      /*   0 */
    "S (sleeping)",     /*   1 */
    "D (disk sleep)",   /*   2 */
    "S (sleeping)",     /*   4 */
    "S (sleeping)",     /*   8 */
    "Z (zombie)",       /*  16 */
    "X (dead)",     /*  32 */
    "x (dead)",     /*  64 */
    "K (wakekill)",     /* 128 */
    "W (waking)",       /* 256 */
};


第三处 msm/fs/proc/array.c 文件 180行

    seq_printf(m,
        "State:\t%s\n"
        "Tgid:\t%d\n"
        "Pid:\t%d\n"
        "PPid:\t%d\n"
        "TracerPid:\t%d\n"
        "Uid:\t%d\t%d\t%d\t%d\n"
        "Gid:\t%d\t%d\t%d\t%d\n",
        get_task_state(p),
        task_tgid_nr_ns(p, ns),
        pid_nr_ns(pid, ns),
        ppid, /*tpid*/
                0,
        cred->uid, cred->euid, cred->suid, cred->fsuid,
        cred->gid, cred->egid, cred->sgid, cred->fsgid);

原文地址:https://blog.51cto.com/haidragon/2404656

时间: 2024-08-24 09:42:42

修改android内核反调试标志的相关文章

[转载]Android Native反调试

本文转载自: http://www.zhaoxiaodan.com/java/android/android-native%E5%8F%8D%E8%B0%83%E8%AF%95.html 思考 之前研究了下如何调试和尝试反一个别人加密的东西, 所以现在的体会就是: 其实重点不是你如何加密, 重点是如何不让别人知道你怎么加密的 因为像这种自己加密的资源运行的时候自己解密之后拿来用的程序, 我甚至根本不用关心你到底怎么加密, 加密算法是啥, 我只需要知道, 你解密完了之后, 那个资源的内存块在哪,

修改Android手机内核,绕过反调试

0x1.手机设备环境 Model number: Nexus 5 OS Version: Android 4.4.4 KTU84P Kernel Version: 3.4.0-gd59db4e 0x2.Android内核提取 查找Android设备的boot分区文件.高通芯片的设备可以通过下面的命令进行查找. cd /home/androidcode/AndroidDevlop/modifyNexus5Boot adb shell ls -al /dev/block/platform/msm_s

Android程序反破解技术

0x1 对抗反编译可以大概分为以下几点: 1.对抗反编译工具,例如apktool.dex2jar等 2.对抗静态编译,分为代码混淆技术.NDK保护.apk加壳保护. 3.对抗动态调试,分为检测调试器.检测模拟器. 4.防止重编译,分为检查签名,校验保护. 更多相关内容请参考<Android软件安全与逆向分析>. 0x02 对抗反编译工具,例如dex2jar,通常是在分析dex2jar源码后,来找到漏洞,在java源码中加入会触发dex2jar异常的代码,从而使dex2jar不能正常使用. de

Android逆向之旅---应用的&quot;反调试&quot;方案解析(附加修改IDA调试端口和修改内核信息)

一.前言 在前一篇文章中详细介绍了Android现阶段可以采用的几种反调试方案策略,我们在破解逆向应用的时候,一般现在第一步都回去解决反调试,不然后续步骤无法进行,当然如果你是静态分析的话获取就没必要了.但是有时候必须要借助动态调试方可破解,就需要进行操作了.现阶段反调试策略主要包括以下几种方式: 第一.自己附加进程,先占坑,ptrace(PTRACE_TRACEME, 0, 0, 0)!第二.签名校验不可或缺的一个选择,本地校验和服务端校验双管齐下!第三.借助系统api判断应用调试状态和调试属

逆向手机内核,添加调试支持和反调试

0x00前言 一个安卓应用可以被调试的条件是应用AndroidManifest.xml显示指定android:debuggable="true",如果没有设置android:debuggable的值,则默认android:debuggable="false",所以发布的应用大部分都是不可调试的,如果要调试,则需要解包,改属性然后重打包,这样非常麻烦,而且效率低.第二个条件是内核配置文件default.prop的属性ro.debuggable=1,这样就不用管应用里面

浅谈android反调试之 转发端口

反调试方案: 我们最通常使用的动态工具是IDA, IDA的动态调试端口默认为23946,我们可以通过/pro/net/tcp 查看android 系统所有TCP Socket 启动android_server之后,/proc/net/tcp ,端口号是0x5D8A,十进制为23946 我们可以利用默认的调试端口23946 来实现反调试.实现代码如下, 实现原理: Android操作系统不允许一个IP可能同时存在多个相同的端口的套接字 解决方案: 最常见的解决的解决方案, 我们不使用默认转发端口2

[转载]Android应用方法隐藏及反调试技术浅析

本文转载自: http://drops.wooyun.org/tips/9471 0x00 前言 Android应用的加固和对抗不断升级,单纯的静态加固效果已无法满足需求,所以出现了隐藏方法加固,运行时动态恢复和反调试等方法来对抗,本文通过实例来分析有哪些对抗和反调试手段. 0x01 对抗反编译 首先使用apktool进行反编译,发现该应用使用的加固方式会让apktool卡死,通过调试apktool源码(如何调试apktool可参见前文<Android应用资源文件格式解析与保护对抗研究>),发

浅谈Android反调试 之 PTRACE_TRACEME

反调试原理: 关于Ptrace:  http://www.cnblogs.com/tangr206/articles/3094358.html ptrace函数 原型为: #include <sys/ptrace.h>long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);ptrace有四个参数:  1). enum __ptrace_request request:指示了ptrace要执行的命

Android Native一处反调试

之前转载了一篇文章介绍了两种反调试方式,分别是ptrace自身和查看TracerPid信息,文章地址: http://www.cnblogs.com/dacainiao/p/5124151.html 这一处反调试是在调试某加固时遇到的,原理是查看当前所有的tcp连接,如果有<00000000:5D8A>就退出,也就是本地连接的23946端口(IDA的默认监听端口). 当然,解决办法可以Path掉该处的反调试或者修改IDA的客户端把默认的监听端口改成其他的. 反调试的方法还有很多,只是分析的样本