乐固静态脱壳

其实在一月份的时候已经发在博客了,由于之前文章并不是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也必须异或回去, ...

Ptrace注入

Ptrace函数 long ptrace(enum __ptrace_request request,pid_t pid,void *addr, void *data); 第一个参数决定ptrace的行为 PTRACE_ATTACH:附加到指定远程进程。 PTRACE_DETACH:从自定远程进程分离。 PTRACE_PEEKTEXT:从远程进程指定内存地址来读取一个WORD大小的数据。 PTRACE_POKETEXT: ...

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组成 ...