zoukankan      html  css  js  c++  java
  • 浅谈android反调试之 转发端口

    反调试方案:

    我们最通常使用的动态工具是IDA, IDA的动态调试端口默认为23946,我们可以通过/pro/net/tcp 查看android 系统所有TCP Socket
    启动android_server之后,/proc/net/tcp ,端口号是0x5D8A,十进制为23946

    我们可以利用默认的调试端口23946 来实现反调试。实现代码如下, 实现原理: Android操作系统不允许一个IP可能同时存在多个相同的端口的套接字
     
     

    解决方案:

    最常见的解决的解决方案, 我们不使用默认转发端口23946。 android_server 提供命令指定转发端口
    命令: ./android_server -p12345 ,注意端口号和参数之间没有空格
    端口号变为0x3039,即12345
    虽然这种做法很简单,但是对于一个崇尚简约的程序员而言,每次都要都要指定端口,烦不烦。我们能不能和之前的通过逆向android_server, 通过修改android_server的默认端口来永久改变端口号。不同IDA版本的android_server 使用指令集不太一样,比如IDA6.6 使用是ARM指令集, IDA6.8 使用的是Thumb指令集。不过修改方案是一致的, 笔者以使用Thumb指令集的IDA6.8的android_server.
    1. IDA打开android_server, 找到main函数,如下:
    对应的二进制指令代码

    2.这里需要知道一点关于ARM指令的知识,这里的LDR R5, =5D8A, 一条伪指令, =5D8A指的指令和变量(存储值为5D8A)的相对偏移地址,这句为什么同一条ARM汇编对应16进制不一样了,因为指令地址不一样,导致偏移地址不一样。 按照惯例,这个存储5D8A的地址就在所在函数结束的后面.如下:

    右侧有个DATA_XREF可知,这里有两处被应用,即两个伪指令LDR, R5, =0x5D8A的地址, 双击可以验证。
     
    3.接下来我们用二进制编辑工具010 Editor 编辑文件偏移B8D8
    将这个值改成我们指定端口号:12345(0x3039),保存,测试
     
    3. 测试OK
     
  • 相关阅读:
    环境是如何建立的 启动文件有什么
    环境中存储的是什么
    串行 并行 异步 同步
    TPC-H is a Decision Support Benchmark
    进程通信类型 管道是Linux支持的最初Unix IPC形式之一 命名管道 匿名管道
    删除环境变量
    14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚
    14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚
    14.3.2.1 Transaction Isolation Levels 事务隔离级别
    14.3.2.1 Transaction Isolation Levels 事务隔离级别
  • 原文地址:https://www.cnblogs.com/jiaoxiake/p/6801093.html
Copyright © 2011-2022 走看看