首页 > 其他分享 > 看雪ctf AliCrackme_2

看雪ctf AliCrackme_2

时间:2023-09-24 11:56:22浏览次数:35  
标签:int 看雪 Tracepid ctf var AliCrackme pointer 调试 IDA

看雪ctf AliCrackme_2

使用jadx打开,image-20230924100140933

去IDA打开so,搜索check可以搜索到说明是静态注册的,看着就是一个简单的校验,但是填进去错误,看到题目的提示是有反调试,但用frida附加时没有反调试的,应该是针对IDA的反调试,网上查找了下,发现了几种反调试的方法

image-20230924100252541

反调试方法

1.IDA调试端口检测

在调试器作远程调试时,会占用一些固定的端口号

通过读取 /proc/net/tcp,查找IDA远程调试所用的23946端口(也可以在运行netstat -apn的结果中搜索23946端口),若发现说明进程正在被IDA调试。

绕过方法:

由于只对23946端口进行判断,可以通过 ./android_server -p 23947 ,将IDA调试端口改为23947或者其他端口,注意端口转发和IDA调试的端口号都要改成23947

2.特征文件检测

android_server 特征文件名检测,我这边已经更改过文件名,附加程序关闭,继续分析。

3.tracepid检测

安卓的native下,通过读取进程的status或stat来检测Tracepid ,它主要原理是调试状态下的进程Tracepid不为0。
当检测到Tracepid 不为0时,app会kill掉进程,从而达到反调试的目的。

绕过方法:

对于这种调试的检测手段,最彻底是修改系统源码后重新编译,让 Tracepid 永远为0,也可以创建一个子进程,让子进程主动ptrace自身设为调试状态,此时正常情况下,子进程的 Tracepid 应该不为0。此时我们检测子进程的 Tracepid 是否为0,如果为0说明源码被修改

这里使用的frida去hook绕过了,没有修改源码了,

function Tracepid() {
    console.warn(".............")
    var fgetsPtr = Module.findExportByName("libc.so", "fgets");
    var fgets = new NativeFunction(fgetsPtr, 'pointer', ['pointer', 'int', 'pointer']);
    Interceptor.replace(fgetsPtr, new NativeCallback(function (buffer, size, fp) {
        var retval = fgets(buffer, size, fp);
        var bufstr = Memory.readUtf8String(buffer);
        if (bufstr.indexOf("TracerPid:") > -1) {
            Memory.writeUtf8String(buffer, "TracerPid:\t0");
        }
        return retval;
    }, 'pointer', ['pointer', 'int', 'pointer']));
    var killptr = Module.findExportByName("libc.so", "kill");
    var kill = new NativeFunction(fgetsPtr, 'int', ['int', 'int']);
    Interceptor.replace(killptr, new NativeCallback(function (pid,sig) {
        console.log("kill")
        return 0;
    }, 'int', ['int', 'int']));
}

依次尝试上面的几种反调试的方法,发现是第三种方法反调试的,所以使用frida 先hook后再使用IDA附加调试,发现可以正常调试,没有报错。然后使用IDA在check处下断点,可以看到校验值被修改了,把这个值填进去,结果正确image-20230924112041022

image-20230924112150784

标签:int,看雪,Tracepid,ctf,var,AliCrackme,pointer,调试,IDA
From: https://www.cnblogs.com/immune53/p/17725790.html

相关文章

  • BUUCTF Reverse/[NPUCTF2020]你好sao啊
    里面就一个加密函数,分析后发现这是一段变表的base解密,将四个字符替换成三个字符点击查看代码void*__fastcallRxEncode(constchar*a1,inta2){intv3;//[rsp+18h][rbp-38h]intv4;//[rsp+1Ch][rbp-34h]intv5;//[rsp+20h][rbp-30h]intv6;//[rsp+2......
  • 《从0到1的CTF成长之路》1.1.1 常见的搜集 解题过程
    纯新手,写题日记,不是Writeup!随便摸索dockerps发现有端口80直接用浏览器打开127.0.0.1:80解题试试书里教的工具scrabblegitclonehttps://github.com/denny0223/scrabble.git./scrabble127.0.0.1...fatal:notagitrepository(oranyoftheparentdirectori......
  • Buuctf——[ZJCTF 2019]NiZhuanSiWei
    审题进入题目链接发现是白盒审计<?php$text=$_GET["text"];$file=$_GET["file"];$password=$_GET["password"];if(isset($text)&&(file_get_contents($text,'r')==="welcometothezjctf")){echo"&l......
  • Buuctf——[网鼎杯 2020 青龙组]AreUSerialz
    这是一道序列化的题目<?phpinclude("flag.php");highlight_file(__FILE__);classFileHandler{protected$op;protected$filename;protected$content;function__construct(){$op="1";$filename="/......
  • 《从0到1的CTF成长之路》使用配套docker环境
    官方文档https://book.nu1l.com/tasks/#/pages/web/1.1打开docker镜像新建docker-compose.yml文件,将官网给的配置文件复制进去vimdocker-compose.yml启动docker-composeup-ddocker使用dockerimage#获取当时所有镜像dockerrmi<镜像名>#删除镜像......
  • Buuctf——[RoarCTF 2019]Easy Calc
     有waf,不能出现非数字参数值。使用%20num可以绕过waf(AbusingPHPquerystringparsertobypassIDS,IPS,andWAF(secjuice.com))过滤了单双引号,可以用chr()函数构造字符串?%20num=var_dump(scandir(chr(46))) ?%20num=show_source(chr(47).chr(102).chr(49).chr(97).ch......
  • ctfhub_WEB基础关(RCE续集)
    WEB基础七、RCE8、过滤空格该关卡是将输入命令中的空格全部置空代码解读,这行代码使用了正则表达式来检查变量$ip是否包含空格字符。如果preg_match_all函数返回false,表示没有匹配到空格字符,那么$cmd变量将设置为ping命令并执行该命令。否则,如果$ip中包含空格字......
  • analyze和collectFirstUIP函数使用pathCs和seen注意事项
    analyze和collectFirstUIP函数都非常巧妙地使用pathCs和seen进行遍历冲突生成的传播路径注意:相关修改和借用,需要确保reason中的c0为BCP蕴含文字。 由于传播函数在处理观察时未对watches_bin的观察元对应子句做相应的文字调整处理,所以最为直接的方法是在传播阶段确保二元子句......
  • [HUBUCTF 2022 新生赛]ezPython
    附件链接:https://wwvc.lanzouj.com/iIqq218z5x0d给了一个pyc文件利用命令将pyc转换为py文件uncompyle6ezPython.pyc>ezPython.py打开py文件#uncompyle6version3.9.0#Pythonbytecodeversionbase3.7.0(3394)#Decompiledfrom:Python3.8.2(tags/v3.8.2:7b3ab......
  • [Writeup]2022 NewstarCTF_Week5(Web部分)
    一只网络安全菜鸟--(˙<>˙)/--写博客主要是想记录一下自己的学习过程,过两年毕业了也能回头看看自己都学了些啥东西。由于本人水平有限内容难免有错误、疏漏、逻辑不清、让人看不懂等各种问题,恳请大家批评指正如果我写的东西能对你有一点点帮助,那真是再好不过了。2023Newsta......