资源简介

反调试在代码保护中扮演着很重要的角色,虽然不能完全阻止攻击者,但是还是能加大攻击者的时间成本,一般与加壳结合使用,核心还是加壳部分。

资源截图

代码片段和文件信息

#include “com_example_zbb_jiagu02_Myndk.h“
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include “android/log.h“
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
//ptrace自己使得android_server附加不上
void anti_debug01()
{
    ptrace(PTRACE_TRACEME 0 0 0);
}
//检测Tracepid的值
void anti_debug02()
                        {
                            try
                            {
                                const int bufsize = 1024;
                                char filename[bufsize];
                                char line[bufsize];
                                int pid = getpid();
                                sprintf(filename “/proc/%d/status“ pid);
                                FILE* fd = fopen(filename “r“);
                                if (fd !=NULL)
                                {
                                    while (fgets(line bufsize fd))
                                    {
                                        if (strncmp(line “TracerPid“ 9) == 0)
                                        {
                                            int statue = atoi(&line[10]);
                                            if (statue != 0)
                                            {
                                                fclose(fd);
                        int ret = kill(pid SIGKILL);
                    }
                    break;
                }
            }
            fclose(fd);
        } else
        {
            // LOGD(“open %s fail...“ filename);
        }
    } catch (...)
    {

    }

}
//将文件读入字符串中,c++能用,此处不能包括头文件
/*jstring readFileIntoString(char * filename)
{
    ifstream ifile(filename);
    //将文件读入到ostringstream对象buf中
    ostringstream buf;
    char ch;
    while(buf&&ifile.get(ch))
        buf.put(ch);
    //返回与流对象buf关联的字符串
    return buf.str();
}
 */
//检测端口号,针对android_server这个端口号
void anti_debug03() {
    const int bufsize=512;
    char filename[bufsize];
    char line[bufsize];
    int pid =getpid();
    sprintf(filename“/proc/net/tcp“);
    FILE* fd=fopen(filename“r“);
    if(fd!=NULL){
        while(fgets(linebufsizefd)){
            if (strncmp(line “5D8A“ 4)==0){
                int ret = kill(pid SIGKILL);
            }
        }
    }
    fclose(fd);

}
//检测这些调试进程的名字
void anti_debug04(){
    const int bufsize = 1024;
    char filename[bufsize];
    char line[bufsize];
    char name[bufsize];
    char nameline[bufsize];
    int pid = getpid();
    //先读取Tracepid的值
    sprintf(filename “/proc/%d/status“ pid);
    FILE *fd=fopen(filename“r“);
    if(fd!=NULL){
        while(fgets(linebufsizefd)){
                if(strstr(line“TracerPid“)!=NULL)
                {
                 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        9093  2016-09-28 22:08  反调试代码.cpp
     文件      453026  2017-03-09 11:32  关于反调试方法总结(一)以及源码实现.pdf

评论

共有 条评论