Posts

Blog posts accumulated over the time.

Rtag cli tools dev

mi1itray.axe published on
3 min, 558 words

自己无聊,想开发开发。想着最近需要一个tag管理的系统,我用的是windows的,文件管理是层级管理,不是tag的,想着写一个也不难,就自己写了一下。开发语言用rust,数据库使用mongodb,手很生,写了好几天,累死✌了。

Read More

Binary Diffing

mi1itray.axe published on
57 min, 11385 words

最近想看看binary diffing的内容,直接从头看看一篇篇翻,涉及到很多机器学习内容,很多不懂的,慢慢来看吧。这里先看了10几篇,很多都只看了一个摘要。 主要是了解一下思路,看看这个领域的内容的研究历史,Binary Diffing 1暂时只看到2016年的paper,后续继续更新,主要文章引用如下

  • Bitshred: feature hashing malware for scalable triage and semantic analysis.
  • Binary function clustering using semantic hashes.
  • Binslayer: accurate comparison of binary executables.
  • Control flow-based malware variant detection.
  • {MutantX-S}: Scalable Malware Clustering Based on Static Features.
  • Semantics-based obfuscation-resilient binary code similarity comparison with applications to software plagiarism detection.
  • Leveraging semantic signatures for bug search in binary programs.
  • Cross-architecture bug search in binary executables.
  • Bingo: Crossarchitecture cross-os binary search.
  • Statistical similarity of binaries.
  • discovRE: Efficient Cross-Architecture Identification of Bugs in Binary Code.
  • Scalable Graph-based Bug Search for Firmware Images.
  • Crossarchitecture binary semantics understanding via similar code comparison.
Read More

Khaos: The Impact of Inter-procedural Code Obfuscation on Binary Diffing Techniques

mi1itray.axe published on
14 min, 2721 words

这是一篇CCFB的文章,来自中科大,文章提出了一种新的二进制混淆模式来抵抗binary diffing技术的分析。

从混淆角度,它是从IR层面切割函数并融合函数,改变了函数的调用关系。与OLLVM是不冲突的混淆,对抵抗binary diffing有很好的效果,并且也是基于LLVM框架,对混淆技术的发展是有意义的。

Read More

Obfuscate hide string && zer0pts

mi1itray.axe published on
13 min, 2454 words

Obfuscate项目是用于隐藏字符串,增加分析的难度,但是Obfuscate只能对抗静态的分析。zer0pts比赛中的一题就是利用这个项目,但是它很巧妙,隐藏的是模块的函数名,主要逻辑是调用so文件的模块,它隐藏so中的函数名后,从静态分析是很难看出来调用的逻辑是什么,忽然感觉这个项目就有点用了。

Read More

Frida call java class/method to explode

mi1itray.axe published on
13 min, 2519 words

利用Frida去调用java代码中的类,然后爆破。算是一种主动的方法。主要是之前有一道apk题目是爆破的思路,但是我不会写java代码,想起来很难受,冲浪的时候看到Sakura的blog有感,就再去试试,并记录在此。然后发现这题原来是adword原题,(其实题目挺简单,只是当时摆),气死✌了。

主要是记录Frida主动调用apk中Java中的代码。主动调用可以用于爆破,模拟程序部分执行。

需要注意的知识点是在java代码中的static类型数据在爆破过程中需要每次都对这种类型值重新设置。因为static类型在所有实例中都是统一,修改一个实例就会修改所有实例,需要用变量.属性.value = ...的写法重新设置值。

var bvar = b.$new(IntClass.$new(2));
for (...) {
    bvar._static_val.value = ...;
}
Read More