本教程所用Android Studio测试项目已上传:https://github.com/PrettyUp/SecTest 一.混淆 对于很多人而言是因为java才接触到“混淆”这个词,由于在前移动互联网时代在java程序中“混淆”也只是针对java代码,所以混淆基本就和对java源代码进行混淆等价. 但说到混淆的本质,不过就是将变量名.函数名由有助于开发维护人员理解其用途的名称(如my_name,get_key)改用a,b,c,d这种简短无意义的词去替换.从这个思路出发,资源其实也是可以混淆…
0x00 时间相关反调试 通过计算某部分代码的执行时间差来判断是否被调试,在Linux内核下可以通过time.gettimeofday,或者直接通过sys call来获取当前时间.另外,还可以通过自定义SIGALRM信号来判断程序运行是否超时. 0x01 检测关键文件 (1)/proc/pid/status./proc/pid/task/pid/status 在调试状态下,Linux内核会向某些文件写入一些进程状态的信息,比如向/proc/pid/status或/proc/pid/task/pi…
TLS(Thread Local Storage 线程局部存储) 一个进程中的每个线程在访问同一个线程局部存储时,访问到的都是独立的绑定于该线程的数据块.在PEB(进程环境块)中TLS存储槽共64个(位于PEB的TlsBitmapBits字段中,共64位(bit)微软保证每个进程最少拥有64个索引可用,如果需要,系统还会为线程提供更多的索引).每个TEB(线程环境块)偏移0x2C处是一个PVOID THreadLocalStoragePointer指针,存放着当前进程TLS副本地址.TLS对每个…
混淆 Android Studio:  只需在build.gradle(Module:app)中的buildTypes中增加release的编译选项即可,如下: <code class="hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace…
一.工具下载: 1.apktool(资源文件获取,如提取出图片文件和布局文件) 反编译apk:apktool d file.apk –o path 回编译apk:apktool b path –o file.apk 2.dex2jar(源码文件获取,将apk反编译成java源码,即classes.dex转化成jar文件) dex2jar是一个工具包,反编译dex和jar,还提供了一些其它的功能,每个功能使用一个bat批处理或 sh 脚本来包装,只需在Windows 系统中调用 bat文件.在Li…
=========================================================================虽然反编译很简单,也没下面说的那么复杂,不过还是转了过来. Android混淆.反编译以及反破解的简单回顾          搜索下,发现文章相关文档好多好多.就简单点,不赘述了==   一.Android混淆 1)概述          新建Android工程,根目录下会有个proguard.cfg.简单的混淆,你只需要在project.proper…
信息安全常被描述成一场军备竞赛,白帽与黑帽,渗透测试者与黑客,善与恶,本文将聚焦这场永无止境决斗中的一个小点. HTML5 & JS 应用中充满着对输入进行验证/注入的问题,需要开发人员始终保持警惕.但同时还存在着另一个问题,就是应用中程序专用代码的易访问性.为了防止盗版或者至少使盗版更加困难,常会使用混淆工具对 JS 代码进行混淆.作为对立面,反混淆工具也可以将混淆过的 JS 代码进行还原.我曾经接触过双方的一些工具,下面是我的一些研究成果. 首先,下面这是我们的示例代码(取自Google C…
几种常见的JavaScript混淆和反混淆工具分析实战 xiaix2016-03-05+8共1195751人围观 ,发现 5 个不明物体WEB安全 信息安全常被描述成一场军备竞赛,白帽与黑帽,渗透测试者与黑客,善与恶,本文将聚焦这场永无止境决斗中的一个小点. HTML5 & JS 应用中充满着对输入进行验证/注入的问题,需要开发人员始终保持警惕.但同时还存在着另一个问题,就是应用中程序专用代码的易访问性.为了防止盗版或者至少使盗版更加困难,常会使用混淆工具对 JS 代码进行混淆.作为对立面,反混…
目录 简述(脱壳前学习的知识.壳的历史.脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述 Apk文件结构 Dex文件结构 壳史 壳的识别 Apk文件结构 Dex文件结构 壳史 第一代壳 Dex加密 Dex字符串加密 资源加密 对抗反编译 反调试 自定义DexClassLoader 第二代壳 Dex抽取与So加固 对抗第一代壳常见的脱壳法 Dex Method代码抽取到外部(通常企业版) Dex动态加载 So加密 第三代壳 Dex动态解密与So混淆 Dex Method代码动态解密 So代…
稍稍总结一下在Crack或Rervese中比较常见的一些反调试方法,实现起来也比较简单,之后有写的Demo源码参考,没有太大的难度. ①最简单也是最基础的,Windows提供的API接口:IsDebuggerPresent(),这API实际上就是访问PEB的BeingDebugged标志来判断是否处于调试状态. if (IsDebuggerPresent()) //API接口 { AfxMessageBox(L"检测到调试器"); } else { AfxMessageBox(L&qu…