Android ELF文件编译之符号隐藏

编译系统是一套非常强大的系统,有众多的编译参数,但是大部分人只听过很少几个,希望以后能有时间好好看一下相关的资料研究清楚。 今天来介绍Android下面NDK编译so时,怎样实现符号隐藏,gcc默认的情况下是将所有符号都导出的,为了安全启见可以将符号隐藏,可以给破解带来很大的麻烦,另外还可以有效减...

2017-02-21 14:59:49

阅读数 1440

评论数 0

Android SO 加壳(加密)与脱壳思路

原帖地址:http://blog.csdn.net/jltxgcy/article/details/52205210 0x01 常见的Android SO加壳(加密)思路     1.1 破坏Elf Header     将Elf32_Ehdr 中的e_shoff, ...

2016-12-21 16:25:07

阅读数 3153

评论数 0

花指令文章

http://blog.csdn.net/qincode/article/details/16116091 http://blog.csdn.net/yangbostar/article/details/6194133 http://www.cnblogs.com/hrhguanli/p/...

2016-12-19 19:18:41

阅读数 493

评论数 0

Android C语言_init函数和constructor属性及.init/.init_array节探索

了解C语言的程序猿都知道有两种方法可以让一部分代码在so或可执行文件被加载的时候先于其它任何函数执行,一种是定义一个void _init(void)函数,另一种是在函数后面声明constructor属性。那么这两种方式在执行的时候有什么区别吗?先后顺序呢?了解ELF文件格式的人又会问它们在文件中的...

2016-12-13 11:42:51

阅读数 2479

评论数 0

ELF文件分析中的重要工具

1. file 用于查看文件的简单信息 BriansdeMacBook-Pro:armeabi-v7a brian$ file libcheckcert.so libcheckcert.so: ELF 32-bit LSB shared object, ARM, version 1 (SYS...

2016-12-09 17:02:37

阅读数 1668

评论数 0

Android LLVM-Obfuscator C/C++ 混淆编译的深入研究

一、 LLVM是什么? (1)LLVM是lowlevel virtual machine的简称,是一个编译器框架。苹果公司的Xcode 4.0之后用的都是LLVM编译器。 (2)LLVM 诞生于2003.10伊利诺伊大学香槟分校,创始人ChrisLattner,现任苹果公司『开发者工具』部门的主...

2016-09-28 15:10:04

阅读数 1708

评论数 0

程序的链接和装入及Linux下动态链接的实现

原帖地址:http://blog.chinaunix.net/uid-11848011-id-96382.html 程序的链接和装入存在着多种方法,而如今最为流行的当属动态链接、动态装入方法。本文首先回顾了链接器和装入器的基本工作原理及这一技术的发展历史,然后通过实际的例子剖析了Linux...

2016-08-09 17:27:02

阅读数 400

评论数 0

Android ELF文件中.got .plt .rel.plt .rel.dyn节的区别和联系

以下暂时做为自己的笔记,不做详细介绍。 首先打印出来Section Header: 可以看到上面.got和.plt节的类型是PROGBITS,也就是代码;而.rel.dyn和.rel.plt是REL,它们是Elf32_Rel类型的结构体数据。这就是为什么用ida查看ELF文件的时候只能看见...

2016-08-03 17:40:40

阅读数 3304

评论数 0

UPX elf to mem

Decompressing ELF Directly to Memory on Linux/x86         Copyright (C) 2000-2015 John F. Reiser  jreiser@BitWagon.com References:     defin...

2016-07-19 17:33:30

阅读数 619

评论数 0

UPX对Android上ELF加壳使用过程中的若干问题总结

下面内容部分摘录自:http://www.cnblogs.com/fishou/p/4202061.html 5、相关问题总结 5.1、编译UPX出现“cannot find -lz”错误。          分析:原因是链接器LD没有找到编译出来的zlib库libz.so或libz.a。...

2016-07-12 16:08:42

阅读数 4414

评论数 0

Arm Inline hook的简易原理图

Arm架构下有arm指令和thumb指令之分,不同指令集的hook过程不一样。 假设我们要hook libc.so中的execv和read函数,android系统的库应该都加了-mthumb-interworking编译选项,支持thumb/arm的代码交织,所以要区分目标函数是thumb还是ar...

2016-05-16 16:55:52

阅读数 3545

评论数 0

Android Inline hook跳转部分代码

转自看雪帖子:http://bbs.pediy.com/showthread.php?p=1216957 求人不如求己阿,已经解决啦!现在放出被注入的SO源码(至于如何注入并查找目标函数,自己去看看古河大哥的libinject); 源码主要分为两块: 1.用于初始化trampoline和实现...

2016-04-18 17:47:37

阅读数 1011

评论数 0

Android通过链接视图和加载视图实现GOT HOOK

1. 背景 最近在研究android平台的hook技术,发现网上的资料比较凌乱,自己总结一下。 首先要非常熟悉ELF文件格式,自己动手写一个解析ELF文件的小程序基本就可以研究的比较透彻了。 ELF文件中有节和段的概念,相信很多人都不太了解它们的区别:节头表是在链接阶段非常重要的结构,提供了链接器...

2016-03-25 16:42:25

阅读数 953

评论数 0

动态链接库中的.symtab和.dynsym

shared library (.so) "Program Library Howto-Shared Libraries"是很好的材料, 下面的内容多是据此整理的. 定义: Shared libraries are libraries that are loaded by p...

2016-03-25 14:18:34

阅读数 4410

评论数 0

Android和Linux动态加载机制及PLT/GOT作用介绍

首先回顾一下Linux平台上,一个模块甲需要调用另外一个模块乙中的函数时的动态链接机制:     1、模块甲在编译期间,将要引用的模块乙的名字与函数名写入自身的符号表。     2、运行期模块甲调用时,调用流程是从调用代码到PLT表到GOT表再跳入模块乙。     而如何保证模块甲的代码能从其...

2016-03-18 17:39:53

阅读数 1575

评论数 0

基于执行视图解析ELF

[《Redirecting functions in shared ELF libraries》](http://www.codeproject.com/Articles/70302/Redirecting-functions-in-shared-ELF-libraries#_Toc2578159...

2016-03-17 16:49:40

阅读数 1461

评论数 0

基于Android的ELF PLT/GOT符号重定向过程

原帖地址: http://bbs.pediy.com/showthread.php?p=1326515 ----------------- #引言 写这篇技术文的原因,主要有两个: - 其一是发现网上大部分描述PLT/GOT符号重定向过程的文章都是针对x86的,比如[《Redirectin...

2016-03-17 15:06:09

阅读数 745

评论数 0

Android注入完全剖析

转载自chouchou大神,地址:http://www.cnblogs.com/wanyuanchun/p/4020756.html 0 前沿 本文主要分析了一份实现Android注入的代码的技术细节,但是并不涉及ptrace相关的知识,所以读者如果不了解ptrace的...

2015-09-30 11:18:49

阅读数 912

评论数 0

360 so加壳动态脱壳方法

转载地址:http://mp.weixin.qq.com/s?__biz=MjM5NzAxMzk4NA==&mid=209300616&idx=1&sn=bcc440640f68e9355fcb20842a1ddaef&scene=0#rd 环境及...

2015-09-29 17:35:52

阅读数 3266

评论数 0

提示
确定要删除当前文章?
取消 删除