taintdroid源码分析之四 组件(进程)通信间污点传播
2014-10-15 20:50
127 查看
上文讲解了程序执行时污点传播方法。当然还需要讲解程序间或程序内部通过通信可能的污点传播。仍然以整数数据为例。
由安卓的体系结构可知,所有应用内与应用间通信都是通过binder实现,而关键部分总是写入数据包parcel当中的,这部分内容需要对binder比较熟悉,请自行补充。
当通信内容中包含整数型时,系统提供方法nativeWriteInt就可以将数据写入。但此时将丢失污点信息,因此在该过程中需要添加污点传播代码。其源码如下:
public final void writeInt(int val) {
// begin WITH_TAINT_TRACKING && WITH_TAINT_BYTE_PARCEL
int start = dataPosition();
nativeWriteInt(mNativePtr, val);
int end = dataPosition();
int len = end - start;
int tag = Taint.getTaintInt(val);
//String tstr = "0x" + Integer.toHexString(tag);
//if (tag != 0) Log.w("ParcelJava", "writeInt("+val+") tag = " + tstr + "\n");
//updateTaint(tag);
updateTaint(tag, start, len);
// end WITH_TAINT_TRACKING && WITH_TAINT_BYTE_PARCEL
}
就这样,当数据写入时将污点一并写入,同时在通信对方接收时一并将污点信息提取并标记到所读取的数据污点位。
由安卓的体系结构可知,所有应用内与应用间通信都是通过binder实现,而关键部分总是写入数据包parcel当中的,这部分内容需要对binder比较熟悉,请自行补充。
当通信内容中包含整数型时,系统提供方法nativeWriteInt就可以将数据写入。但此时将丢失污点信息,因此在该过程中需要添加污点传播代码。其源码如下:
public final void writeInt(int val) {
// begin WITH_TAINT_TRACKING && WITH_TAINT_BYTE_PARCEL
int start = dataPosition();
nativeWriteInt(mNativePtr, val);
int end = dataPosition();
int len = end - start;
int tag = Taint.getTaintInt(val);
//String tstr = "0x" + Integer.toHexString(tag);
//if (tag != 0) Log.w("ParcelJava", "writeInt("+val+") tag = " + tstr + "\n");
//updateTaint(tag);
updateTaint(tag, start, len);
// end WITH_TAINT_TRACKING && WITH_TAINT_BYTE_PARCEL
}
就这样,当数据写入时将污点一并写入,同时在通信对方接收时一并将污点信息提取并标记到所读取的数据污点位。
相关文章推荐
- taintdroid源码分析 三之 解释器污点传播
- nginx进程间的通信机制源码分析(二)-------原子操作、自旋锁、文件锁
- TaintDroid剖析之Native方法级污点跟踪分析
- React源码分析5 -- 组件通信,refs,key,ReactDOM
- Nginx源码分析--master和worker进程间的通信
- [置顶] Android开发知识(四)Android进程间Binder通信机制的源码分析(下)
- nginx源码分析1———进程间的通信机制二(自旋锁)
- TaintDroid剖析之File & Memiry & Socket级污点传播
- 【React源码分析】组件通信、refs、key和ReactDOM
- TaintDroid剖析之File & Memiry & Socket级污点传播
- nginx进程间的通信机制源码分析(一)----共享内存
- TaintDroid剖析之IPC级污点传播
- DroidPlugin源码分析插件进程管理以及预注册Activity,Service,ContentProvide的选择
- Android污点分析工具flowdroid源码简析
- open-iscsi源码分析 -- 进程通信
- nginx源码分析1———进程间的通信机制五(文件锁)
- TaintDroid剖析之IPC级污点传播
- [置顶] Android开发知识(三)Android进程间Binder通信机制的源码分析(上)
- Nginx源码分析-master和worker进程间的通信
- TaintDroid剖析之File & Memiry & Socket级污点传播