在Android沙盒监控恶意软件运行时,通常会有记录执行了什么shell(root)命令的需求。一般执行root命令通常会使用Runtime.getRuntime.exec("su"),获取一个Process对象后通过InputStream往里面填命令。有些偷懒的会直接su command来执行。 监控这种类型的命令执行,第一个监控点是在su的main入口中,记录argv来获取命令。但更多情况下,su是会调用sh去获得一个shell,后续的命令交互就交给了这个shell。 那么就还需要去修改下shell的代码。Android 4.x之后用更强大的体积更小的mksh取代了ash,但是模拟器的build里还没有这么做,需要手动用mksh去覆盖掉ash。 对mksh的修改集中在两个方面: 1)对于shell启动时直接接收参数,或者对于exec等特殊的shell指令,同样在main函数中做记录 2)对于通过标准输入记录的指令,在main.c的command函数中,解析Source结构体,获取传入的命令并记录。 通过这两种方式,就可以较好地记录应用执行过什么root命令了。 具体可见4c7K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0D9L8$3N6Q4x3X3g2X3L8r3q4F1K9$3g2J5x3o6p5%4i4K6u0W2L8h3g2Q4x3V1k6Q4c8e0c8Q4b7U0S2Q4z5o6m8Q4c8e0N6Q4b7e0N6Q4z5p5c8S2L8X3c8J5L8$3W2V1i4@1f1$3i4@1t1J5i4K6V1&6i4@1f1%4i4K6W2n7i4K6V1J5i4@1f1@1i4@1t1^5i4@1q4p5i4@1f1%4i4K6W2n7i4K6V1I4i4@1f1$3i4K6S2q4i4@1p5%4M7X3!0G2N6q4!0q4y4g2)9&6x3g2!0n7c8q4!0q4y4q4!0n7b7W2!0m8y4q4!0q4y4W2)9^5z5g2!0m8y4#2!0q4z5q4!0m8x3g2)9^5b7#2!0q4y4#2)9&6b7g2)9^5y4q4!0q4y4W2)9&6y4W2!0n7z5g2!0q4y4W2!0n7x3#2)9&6y4g2)9J5k6r3g2F1j5h3u0D9k6g2)9J5k6r3y4G2L8h3#2S2L8X3c8Q4x3X3c8D9L8$3N6Y4K9h3&6Y4i4K6u0V1K9h3&6Q4x3X3c8S2L8X3c8J5L8$3W2V1i4K6u0r3
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课