IDA 动态调试之反反调试

admin 2024年11月29日10:07:04评论9 views字数 1619阅读5分23秒阅读模式

来源

https://bbs.kanxue.com/thread-277808.htm

IDA 动态调试之反反调试

声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

IDA 动态调试之反反调试

反调试与反反调试

IDA调试端口检测

读取/proc/net/tcp,查找IDA远程调试所用的23946端口,若发现说明进程正在被IDA调试。

IDA 动态调试之反反调试

5D8A —十进制—》23946

反反调试
更改IDA调式默认端口:

./as_64 -p12346

特征文件检测

android_server 特征文件名检测,更改过文件名。

Tracepid 检测

安卓的native下,通过读取进程的status或stat来检测Tracepid ,它主要原理是调试状态下的进程Tracepid不为0。

当检测到Tracepid 不为0时,app会kill掉进程,从而达到反调试的目的。

在 Android 系统中,Tracepid 是指调试当前进程的进程的 PID 。当 Android 程序处于调试状态时,Linux 会向 /proc/"进程 pid"/status 中写入状态信息,其中的 Tracepid 就是调试该进程的进程的 PID.例如,开发人员可以通过不断轮询检查 Tracepid 的值来判断当前进程是否正在被调试,如果 Tracepid 的值为 0,则说明该进程没有被调试;如果不为 0,则说明当前该进程正在被调试,程序可以据此执行相应的操作,如 exit(0) 来防止被进一步调试.

一般情况下当 app 只有一个进程时,附加后程序不会立即退出,而是等待运行到相关退出函数时才会退出,原因很简单,只有一个进程时程序会断下但没办法继续往下执行,便不能够杀死自己,针对这种情况一般会 fork 出一个子进程,让子进程负责 kill 父进程,再优化便是父子进程相互检测是否被调试。

反反调试
让Tracepid在调试的状态下,Tracepid 仍然为0,并且以为万一让kill失效,但能让 app 退出的函数并不止这一个。

编写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进行附加调试,程序并不退出,反调试点就确定了,Tracepid值检测。

原文始发于微信公众号(进击的HACK):IDA 动态调试之反反调试

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月29日10:07:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   IDA 动态调试之反反调试https://cn-sec.com/archives/3448465.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息