|
[分享]发几个Android静态和动态分析的小技巧
不错,学习了! |
|
|
|
我的山寨安卓卫士代码(学习作品,顺便求职求包养ing)
楼主做得不错啊! |
|
[原创]Apk利器:ApkToolkit v3.0
不错,直接到3.0了 |
|
|
|
[原创]Android平台的ollydbg即将到来,求gikdbg.art内测伙伴!
貌似很不错哦! 赞一个 |
|
[分享]Android安全机制解析与应用实践
看目录,还是不错的。 |
|
[求助]如何彻底的伪装安卓的GPS
楼主这是悬赏啊,建议去其他网站挂吧。 |
|
[原创]Android安全之 – Dex文件解析(一)
mark,谢谢楼主 |
|
[原创]360安全招聘_无线攻防第三题粗解
赞一个! 弱弱问下楼主,你用ida跟的还是gdb? |
|
[原创]360安全招聘_无线攻防第三题粗解
嗯。楼主,我有一个疑问,我用ida6.1打开五一之后更新的apk中的.so文件,发现有如下错误: 然后函数表中的On_load函数和verify函数面目全非了: 这个是大概是通过什么方式实现的。这样做了之后,如何去链接.so中的函数呢。 |
|
[原创]360安全招聘_无线攻防第三题粗解
楼主能给点详细思路么? |
|
[原创]360安全招聘_无线攻防第二题
弱弱问下,楼主参加比赛的昵称是:xiao 吗? |
|
[原创]4月底360无线攻防试题第一题解析
不好意思,没懂你想问什么。 |
|
[原创]360安全招聘_无线攻防第二题
隔几天,找个空闲时间,把东西好好整理后再写出来。 -------------------------------------------------------------------------------- 第一小问思路:反编译APK之后,直接查找替换,更改所有文件的包名以及文件夹的目录结构。这里关键是要处理jni调用。JNI分为静态注册和动态注册。若采用静态注册,那么native方法名一定是:Java_包名__fun();动态注册,则在Register方法中。不管是哪种方式,包名一定要正确。 在MainActivity.smali文件中,可以看到如下两个native方法的声明。 .method private native applicatioNameCheck()V .end method .method private native packageNameCheck()V .end method (以packageNameCheck为例子)如果采用静态注册,那么更改包名后,静态注册函数名变为:Java_com_qihoo_crack_StubApplication_packageNameCheck,而原来.so库文件函数名是:Java_com_qihoo_test_packageNameCheck,直接使用原来的.so文件,肯定找不到。(这里说得有点罗嗦,望不喷) 使用nm查看.so文件,发现apk是动态注册native方法的。 当时做题的时候,开始思路和楼主一样,想通过保留原来的包,删减MainActiviy类,保留native方法。然后在更改包后的MainActiviy中new一个对象并调用native方法即可。理论上分析是可行的,其实是可行的!!!(顺便更正下前面的回复,这种方法是可行的,不好意思)刚做了实验,不管是静态还是动态,都是可行的。(我仔细查看了我以前修改的代码,发现犯了一个错误,在修改后的MainActivity中没有删除native方法的声明,调用时也调用错了,故出现了NULL错误). 后面,我采用另外一种方法:通过自己创建一个与修改后的包名想对应.so文件,再在这个.so文件去调用原来的.so文件中的这两个native函数。 自建.so文件关键代码(packageNameCheck为例子): void* filehandle = dlopen("/data/data/com.qihoo.crack.stubapplication/lib/libqihooTest.so", RTLD_LAZY ); if(filehandle) { void (*packageNameCheck)(JNIEnv *,jobject); packageNameCheck = (void (*)(JNIEnv *,jobject)) dlsym(filehandle, "packageNameCheck"); //找到.so文件中的函数 if(packageNameCheck) { packageNameCheck(env, obj); //传递参数调用 return ; } else { LOGI("packageNameCheck is null"); } } Android.mk文件编写: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := qihooTest LOCAL_SRC_FILES := libqihooTest.so include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_SRC_FILES:= CallqihooTest.c LOCAL_C_INCLUDES := /$(JNI_H_INCLUDE) LOCAL_SHARED_LIBRARIES := libutils LOCAL_PRELINK_MODULE := false LOCAL_LDLIBS := -L . -ldl -llog LOCAL_MODULE := CallqihooTest include $(BUILD_SHARED_LIBRARY) 再修改MainActivity.smali文件中加载的.so文件名即可实现第一小问的要求,修改代码很少,就不附上来了吧。 第二小问: 直接参看: http://blogs.360.cn/blog/proxydelegate-application/ ,把博客中略过的东西补全即可实现。 最后测试结果已经在前面的回帖中贴出,这里就不贴了。 |
|
|
|
[原创]360安全招聘_无线攻防第二题
这位兄弟,第三题你做出来了吧,来发一贴吧。 |
|
[原创]360安全招聘_无线攻防第二题
楼主,你这样修改貌似有问题。 我试了一下你修改的apk,有错误,找不到native方法,报NULL指针。 我当时做第一小问也是这个思路,不过不行。后面我换另一种方式来实现的。 第二小问我也是按照: 正happy 这位兄弟给出的那篇360的博文思路实现的。最后我得到的测试结果是: |
|
[原创]360安全招聘_无线攻防第二题
楼主,能贴一下你的测试样图吗? |
|
[原创]4月底360无线攻防试题第一题解析
惭愧。 动态跟踪.so文件不怎么会,硬看汇编,没搞出来。 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值