当前位置: 首页 > news >正文

上海网站制作费用网站开发行业标准

上海网站制作费用,网站开发行业标准,wordpress不同侧边栏,网站后台更新文档写在前面 我们在逆向软件时难免会遇到一些反调试策略#xff0c;这篇文章就来详细总结下#xff0c;现阶段比较流行的几种反调试策略及解决方案。 特定文件检测 反调试功能#xff1a; 通过检测文件方式#xff0c;检测android_server文件是否存在设备中的指定目录/data/l…写在前面 我们在逆向软件时难免会遇到一些反调试策略这篇文章就来详细总结下现阶段比较流行的几种反调试策略及解决方案。 特定文件检测 反调试功能 通过检测文件方式检测android_server文件是否存在设备中的指定目录/data/local/tmp/下如果存在将结束程序达到反调试的目的。 解决方案 使用mv android_server as修改特定文件的文件名即可防止特定文件名检测。 特定端口检测 反调试功能 通过检测端口方式检测android_server默认端口是否正在开启通过adb shell ➔ su ➔ cat /proc/net/tcp来检查结果是否包含对应的16进制IDA默认端口23946转换成16进制就是5D8A。 解决方案 修改特定端口即可防止特定端口检测。android_server本身支持自定义端口号的命令很简单./android_server -p12345 直接加上-p参数即可注意端口号和参数之间没空格 ptrace占用附加 反调试功能 IDA调试动态调试必须要附加的这里提前进行占用代码ptrace(PTRACE_TRACEME, 0, 0, 0);其中PTRACE_TRACEME代表本进程被其父进程所跟踪。其父进程应该希望跟踪子进程一般一个进程只能被附加一次。后面再附加调试就会失败达到反调试的目的。 解决方案 直接逆向分析so一般是到JNI_OnLoad中就可查看到相关代码NOP掉即可 TracePid检测 反调试功能 在应用的so层加个循环检查自己status中的TracerPid字段值应用正在调试时此值是非0的那么就认为被附加调试了。 adb shell ➔ su ➔ ps | grep 软件的包名 ➔ cat /proc/进程ID/status | grep TracerPid 解决方案 分析so层相关检测判断NOP掉 或 一劳永逸修改内核信息 即可 调试状态检查 检查应用是否属于debug模式 直接调用Android中的flag属性ApplicationInfo.FLAG_DEBUGGABLE判断是否属于debug模式这个其实就是为防止现在破解者为了调试应用将应用反编译在AndroidManifest.xml中添加android:debuggable属性值将其设置true。然后就可以进行调试。 添加这个属性之后我们可以用 dumpsys package [packagename]命令查看debug状态所以我们可以检查应用的AppliationInfo的flag字段是否为debuggable即可 解决方案 修改 AndroidManifest.xml 文件将 android:debuggable 属性设置为 false也可通过将/default.prop中的Android系统属性ro.debuggable修改为1即可使得设备所有应用可以被调试。使用动态调试中方法二提到的magisk环境及模块直接修改手机为可调试状态即可 检查应用是否处于调试状态 这个也是借助系统的一个api来进行判断android.os.Debug.isDebuggerConnected();这个就是判断当前应用有没有被调试我们加上这段代码之后进行jdb连接操作jdb -connect com.sun.jdi.SocketAttach:hostname127.0.0.1,port8700当连接成功后这个方法就会返回true那么我们可以利用这个api来进行判断当前应用是否处于调试状态来进行反调试操作。 解决方案 逆向相关程序直接搜索关键词并定位去除相关检测代码并重打包即可注意软件一般有签名校验。 签名校验 反调试功能 准备来说不算是反调试方案但是也是一种安全防护策略签名校验一般现在有很多用途用意在于防止二次打包。 解决方案 逆向相关程序直接搜signatures关键词并定位去除相关检测代码并重打包也有一键去除工具(NP、MT)即可 模拟器检测 反调试功能 检测应用是不是运行在一台模拟器中如果是将结束程序达到反调试的目的。 public static boolean isEmulator() {try {Class systemPropertyClazz Class.forName(android.os.SystemProperties);boolean kernelQemu getProperty(systemPropertyClazz, ro.kernel.qemu).length() 0;boolean hardwareGoldfish getProperty(systemPropertyClazz, ro.hardware).equals(goldfish);boolean modelSdk getProperty(systemPropertyClazz, ro.product.model).equals(sdk);if (kernelQemu || hardwareGoldfish || modelSdk) return true;} catch (Exception e) {// error assumes emulator}return false; }private static String getProperty(Class clazz, String propertyName) throws Exception {return (String) clazz.getMethod(get, new Class[] {String.class}).invoke(clazz, new Object[] {propertyName}); }解决方案 修改调试器以消除特征性代码或数据或使用其他不易被检测到的调试器。 代码执行时间差检测 反调试功能 动态调试时关键代码的前后时间差比正常执行时要大许多因此可以计算两段代码执行所用的时间如果超出一般正常情况下设定的值就认为代码被调试将结束程序达到反调试的目的。五个能获取时间的api time()函数、time_t结构体 clock()函数、clock_t结构体 gettimeofday()函数、timeval结构、timezone结构 clock_gettime()函数、timespec结构 getrusage()函数、rusage结构 int gettimeofday(struct timeval *tv, struct timezone *tz); void check_time() {int pid getpid();struct timeval t1;struct timeval t2;struct timezone tz;gettimeofday(t1, tz);gettimeofday(t2, tz);int timeoff (t2.tv_sec) - (t1.tv_sec);if (timeoff 1) {int ret kill(pid, SIGKILL);return ;} }解决方案 尽量减少调试器的干扰或使用模拟器等环境加速执行。 写在后面 这些反调试都是通常比较常见的只有我们了解了反调试的方式才能对应的过掉反调试。 特定文件检测、调试端口检测、进程名称检测、定时轮询检测、self-debugging反调试JDWP协议反调试。特定文件检测对特定目录下的特定文件名称进行检测,如android_server等如果存在将结束程序。 调试端口检测对正在运行的特定端口进行检测如23946等如果存在将结束程序。 进程名称检测对正在运行的特定进程名称进行检测如android_server等如果存在将结束程序。 定时轮询检测启动一个循环定时对TracerPid的值等其他特点进行检测如果发生被调试的特征的变化将结束进程。 self-debugging反调试利用一个进程只能被调试一次的特点创建一个子进程用来对自身进行调试让其他调试程序无法调试。 JDWP协议反调试通过一个isDebuggerConnected方法用于判断JDWP调试器是否正在工作如果存在将结束程序。参考文章 Android安全防护之旅—应用反调试操作的几种方案解析https://developer.aliyun.com/article/179707 android逆向之-反调试https://blog.csdn.net/u013346208/article/details/122929650 安卓逆向-反调试与绕过反调试的几种姿势https://forum.butian.net/share/776 Android逆向之反调试http://pwn4.fun/2017/04/15/Android%E9%80%86%E5%90%91%E4%B9%8B%E5%8F%8D%E8%B0%83%E8%AF%95/ [原创]对安卓反调试和校验检测的一些实践与结论https://bbs.kanxue.com/thread-268155.htm 移动安全面试题—调试反调试https://juejin.cn/post/7265926762731192379
http://www.dnsts.com.cn/news/151957.html

相关文章:

  • 河南建筑网站淘宝导购网站模版
  • 网站制作开发 杭州申报课题所需的网站怎么做
  • 盐山县做网站价格邵阳小学网站建设
  • python 做网站速度阿里云域名查询和注册
  • 网站开发设计报告wordpress variant
  • 精仿手表网站网络技术专业就业方向
  • 来凡网站建设公司wordpress插件放那个文件夹
  • 网站中心wordpress项目管理插件
  • 网页设计公司婚庆网站模板下载东莞建网站公司
  • 成都市成华区建设局官方网站高端网站开发哪里好
  • 鹤岗商城网站建设wordpress数据库加速
  • 惠州网站建设 英语上海热门事件
  • php做网站用什么软件好html5商城网站模板
  • 网络项目个人怎么推广快太原seo推广优化
  • 义乌网站制作是什么南康建设局官方网站
  • 烟台高端网站建设公司哪家好做网站如何找客户
  • 网站备案号怎么做超链接怎样建立网站目录结构
  • 做玩游戏任务得q币的网站平台建站
  • 中型网站开发周期网页游戏设计与制作专业
  • 提高审美网站最大的软件公司
  • 家电网站建设方案标识牌设计
  • 怎么做交易平台网站上海新媒体营销公司
  • 网站如何做自适应中装建设集团董事长
  • 建设部网站官网查询浅谈马云电子商务网站建设
  • ps做网站首页效果特效wordpress分站点
  • 网站开发毕业答辩什么类型的网站开发比较困难
  • 多屏合一网站建设wordpress 产品多图
  • 网站建设 搞笑笑话外汇网站建设
  • 网站建设方维织梦wap模板自适应手机网站dedecms模板下载
  • 网站开发用php还是js服装市场调研报告