摘要: 在上文中,我们通过分析定位到sub_130C()这个函数有很大可能性是用来做反调试检测的,并且作者开了一个新的线程,并且用了一个while来不断执行sub_130C()这个函数,所以说我们每次手动的修改TracerPid实在是不现实。既然如此我们何不把sub_130C()这个函数给nop掉呢?为了防... 阅读全文
posted @ 2015-08-04 18:45 是非猫 阅读(3079) 评论(0) 推荐(0) 编辑
摘要: 转载自http://drops.wooyun.org/tips/6840在现在的移动安全环境中,程序加壳已经成为家常便饭了,如果不会脱壳简直没法在破解界混的节奏。ZJDroid作为一种万能脱壳器是非常好用的,但是当作者公开发布这个项目后就遭到了各种加壳器的针对,比如说抢占ZJDroid的广播接收器让... 阅读全文
posted @ 2015-08-04 18:45 是非猫 阅读(5410) 评论(0) 推荐(0) 编辑
摘要: 我们继续分析自毁程序密码这个app,我们发现该程序会用fopen ()打开/proc/[pid]/status这个文件,随后会用fgets()和strstr()来获取,于是我们在strstr()处下个断点,然后让hex view的数据与R0同步。每次点击继续,我们都会看到strstr传入的参数。当传... 阅读全文
posted @ 2015-08-04 18:41 是非猫 阅读(2752) 评论(0) 推荐(0) 编辑
摘要: Ida双开定位的意思是先用ida静态分析so文件,然后再开一个ida动态调试so文件。因为在动态调试中ida并不会对整个动态加载的so文件进行详细的分析,所以很多函数并无法识别出来。比如静态分析中有很多的sub_XXXX函数:但动态调试中的ida是没有这些信息的。所以我们需要双开ida,然后通过id... 阅读全文
posted @ 2015-08-04 18:40 是非猫 阅读(1796) 评论(0) 推荐(0) 编辑
摘要: 我们知道so文件在被加载的时候会首先执行.init_array中的函数,然后再执行JNI_OnLoad()函数。JNI_Onload()函数因为有符号表所以非常容易找到,但是.init_array里的函数需要自己去找一下。首先打开view ->Open subviews->Segments。然后点击... 阅读全文
posted @ 2015-08-04 18:37 是非猫 阅读(2725) 评论(0) 推荐(1) 编辑