共计 5 篇文章

乐固静态脱壳

其实在一月份的时候已经发在博客了,由于之前文章并不是MD格式,而博客几经折腾,所以之前的文章并没有放上来。 前记 最近看到很多人在研究腾讯乐固,试了下以前做的脱壳机,并且看了下最新版壳的实现,发现还是换汤不换药。测试了几个不同版本的样本,发现之前写的代码还能用,故此重新编辑。 方法 将dex文件放在同级目录下文件名改为classes.dex运行即可,在同级目录释放repair.dex即为修复dex,代码简陋难免有BUG,敬请谅解 原理 乐固其实只对Dex头大小为0xE0的位置进行了加密,且采用的xtea算法的变形,所以直接抠IDA F5之后解密的代码部分即可 源码: #include ...

Gslab游戏安全竞赛

比赛挺遗憾的,第一题验证楞是没看出来是一个delta=0的等式,一直以为解出来的方程会有小数,无法想象程序怎么验证成功。导致没比赛资格了。数学功力还得加强,下面仅是学生组安卓的分析。 Round1 首先程序校验了key的格式,格式应该为XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX,长度为32,仅含有[0-9],[a-f] 其次取每一段进行运算,首尾进行运算,结果记为a1,a2,a3,a6(在接下来给的注册机中会有这一段运算) 接下来是对Code进行Base64解码,这里的Base64并不是标准的Base64,改动在于索引的下标进行了异或。所以解Base64也必须异或回去, ...

360加固Dump

360主体逻辑部分采用的VMP虚拟机的模式,在case:29和case:33是其函数调用点,在其调用点下断点,监视其函数调用过程。 0x1.反调试 1. 时间反调试 逻辑流程: 通过time()获取时间计算时间差值 反反调试: 两次置函数返回值为0 2. rtld_db_dlactivity 原理分析: 如果程序在被调试的状态下, /system/bin/linker中会注册此函数 逻辑流程: 读取/ ...

Ollvm 初探

在现在很多保护手段中,有许多程序使用O-LLVM来保护代码,虽然效率低下,但是能增加逆向的难度。接下来通过分析0ctf中的choices来简单了解下O-LLVM。 0x1.LLVM O-LLVM是基于LLVM上开发的 什么是LLVM? LLVM是一个好用、好玩,而且超前的系统语言(比如C和C++语言)编译器。 当然,因为LLVM实在太强大,你会听到许多其他特性(它可以是个JIT;支持了一大批非类C语言;还是App Store上的一种新的发布方式等等)。这些都是真的,不过就这篇文章而言,还是上面的定义更重要。 LLVM组成 ...

GoogleCTF for APK

此文以记录分析路程 实在是懒。比赛的时候分析到一半就不想分析了。耐心不够啊!感觉质量还是很不错! Mainfest文件中定义在Android6.0SDK,在Android4.4.4中运行程序闪退。折腾了几个小时下AVD在Android6.0中跑还是闪退,只能硬着头皮看逻辑了。 Java层只有loadlibrary("cook"),分析so中JNI_ONLOAD,发现字符串全部被处理,使用的时候调用sub_1034解密,直接动态调试,顺便看下为什么会闪退。(自己编写一个Loader加载so调试会比较方便)。发现mkdir会失败。patch下(其实patch目的还是看后面字符串解密, ...