随笔分类 - Mobile Security
摘要:此类函数还是有杀伤力的1、openAssetFile(Uri uri, String mode)This is like openFile(Uri, String), but can be implemented by providers that need to be able to return sub-sections of files, often assets inside of their .apk.2、openFile(Uri uri, String mode)Override this to handle requests to open a file blob.3、openT
阅读全文
posted @ 2013-08-19 18:27
yarpee
摘要:通常函数返回使用 pop {r7,pc}或bx lr等方式(bx,b类似jmp为跳转指令,但bx可以指定跳转区域究竟为thumb还是arm指令。thumb指令指令的时候,直接填写该地址却总是产生SIGSYS信号(非法指令执行)。原因就是该函数为thumb指令,因此跳转时必须要把指令地址的最低位设置为1(bx 通过这一位来区分指令集),所以函数地址就加了一。thumb指令集与arm指令集切换movR0,#5 ;Argument to function is in R0addR1,PC,#1 ;Load address of SUB_BRANCH, Set for THUMB by...
阅读全文
posted @ 2013-08-08 15:26
yarpee
摘要:新增个手写GNU语法arm的方法,以后可以狂逆狂写hello.S文件.datamsg:.ascii "Hello, ARM!\n"len = . - msg.text.globl _start_start:/* syscall write(int fd, const void *buf, size_t count) */mov %r0, $1 /* fd -> stdout */ldr %r1, =msg /* buf -> msg */ldr %r2, =len /* count -> len(msg) */mov %r7, $4 /* write is
阅读全文
posted @ 2013-08-07 22:45
yarpee
摘要:使用strace for Android跟踪系统调用过程方便后续的so文件分析http://benno.id.au/blog/2007/11/18/android-runtime-stracehttp://mpigulski.blogspot.com/2010/09/debugging-dlopen-unsatisfiedlinkerror.html
阅读全文
posted @ 2013-08-07 22:32
yarpee
摘要:一、android jni实现1.静态实现jni:先由Java得到本地方法的声明,然后再通过JNI实现该声明方法。2.动态实现jni:先通过JNI重载JNI_OnLoad()实现本地方法,然后直接在Java中调用本地方法。采用静态实现的方式,如果没有进行加密处理,很容易就在IDA导出函数搜到采用动态实现的方式,还能起到一定的隐藏作用,导出的部分不是就能直接看到java层调的函数名,而是绑定的函数名native层:在JNI_OnLoad注册相关函数JNIEXPORT jstring JNICALL native_hello(JNIEnv *env, jclass clazz){return (*
阅读全文
posted @ 2013-07-31 16:49
yarpee
摘要:一、ndk编译android上运行的c程序新建个hello目录,底下要有jni目录,下面就是Android.mk文件1.Android.mk文件内容如下:LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= hello.cLOCAL_MODULE:= helloLOCAL_FORCE_STATIC_EXECUTABLE := true#LOCAL_STATIC_LIBRARIES := libc#LOCAL_CFLAGS += -Iinclude/dir -DSOMEFLAGSinclude $(BUILD_EXEC
阅读全文
posted @ 2013-07-31 01:19
yarpee
摘要:简单记录比如要hook一个app包中一个类的private void c(dmp dmp1),其中dmp是个类,这种的处理的方式如下:用cydiasubstrate hook框架1.先通过hook 一个返回context对象的函数,比如SafeApplication类中的public static Context a()获取到contextpublic static Context a() { Invoke.print(); return g; }2.构造类dmp3.Class maClass = Class.forName("dmp", true, A...
阅读全文
posted @ 2013-07-30 17:03
yarpee
摘要:到http://www.busybox.net/downloads/binaries/下载放到sdcard然后adb shellsumount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system //保证system可写这里在android shell 内,sh:cp not found, 解决方法用"cat /mnt/sdcard/busybox > /system/xbin"于是cat /mnt/sdcard/busybox > /system/xbinchmod 755 busyboxbusybox l
阅读全文
posted @ 2013-07-18 21:46
yarpee
摘要:一、android service通知activity更新方式有1. service 通过广播的形式发送broadcast,向这个activity的内部类发广播的消息来更新界面2. service直接向activity发intent,把activity的launchMode设置为singleInstance二、安全性这边关注第1种方式的广播和接收intent安全,如果不对广播的发送和接收进行判断,会有很大的安全隐患在我的场景中,是动态注册broadcast,考虑安全如下:A、针对sendBroadcast1.通常采用的安全方式有setPackage设置包名intent.setAction(&q
阅读全文
posted @ 2013-07-18 01:19
yarpee
摘要:gdb输出信息过长,需要取前面的数据,下面这种方法好(gdb) set logging file <file name>(gdb) set logging on(gdb) info functions(gdb) set logging off完了就可以去取数据了Num Basename Type Address Reason | | Source | | | | | | | | 1 OpenDoor - 0x74000 e...
阅读全文
posted @ 2013-05-15 11:03
yarpee
摘要:一、STMFD SP!,{R4-R7,R11,LR}表示依次把R4-R7,R11,LR放入SP中,LR在高位参考:http://blog.chinaunix.net/uid-26435987-id-3073083.html二、学习arm中如何进行参数传递在 ARM 平台上,前4个参数由寄存器 r0-r3 传递,4个后的参数由栈传递。跟 x86 一样也是最后一个参数在栈的最高地址。参考:http://www.360doc.com/content/11/1010/17/7394876_154947299.shtmlhttp://www.yun09.com/blog/post/tigerz/2011
阅读全文
posted @ 2013-05-12 22:02
yarpee
摘要:之前断断续续看ARM,啥也没学到的感觉。开始系统学习arm,坚持下来,从arm开发环境,到arm模拟器实际运行。GNU AS汇编编译语法摘自skyeye arm_hello的代码start.S:#define MODE_SVC 0x13#define I_BIT 0x80.text .align 4 .global begin .type begin, functionbegin: /*disable I-bit*/ mov r0, #I_BIT|MODE_SVC msr cpsr_c, ...
阅读全文
posted @ 2013-04-17 18:01
yarpee
浙公网安备 33010602011771号