initial commit
This commit is contained in:
26
binder-trace.nix
Normal file
26
binder-trace.nix
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
setuptools
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "binder-trace";
|
||||
version = "1.4.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "foundryzero";
|
||||
repo = "binder-trace";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-PoarAeQ8+C43rdi5ZL9ntxvqaLP/aHWxmoBri/EDP9g=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Binder Trace is a tool for intercepting and parsing Android Binder messages. Think of it as \"Wireshark for Binder\".";
|
||||
homepage = "https://github.com/foundryzero/binder-trace";
|
||||
};
|
||||
}
|
||||
32
dyldextractor.nix
Normal file
32
dyldextractor.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
setuptools,
|
||||
progressbar2,
|
||||
capstone
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "dyldextractor";
|
||||
version = "v2.2.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "arandomdev";
|
||||
repo = "dyldextractor";
|
||||
rev = "d44855e8ae51c328847e500b5f52bacf563eb08a";
|
||||
hash = "sha256-cIzQsEADveuof0L5a5CXC0KfdH9Ydxo7ajrPwHMWD6k=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [ progressbar2 capstone ];
|
||||
|
||||
pythonRelaxDeps = [ "capstone" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Extract Binaries from Apple's Dyld Shared Cache";
|
||||
homepage = "https://github.com/arandomdev/DyldExtractor";
|
||||
};
|
||||
}
|
||||
27
flake.lock
generated
Normal file
27
flake.lock
generated
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1729256560,
|
||||
"narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
57
flake.nix
Normal file
57
flake.nix
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
description = "Reverse Engineering Workshop flake";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs }:
|
||||
let
|
||||
allSystems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
];
|
||||
|
||||
forAllSystems = f: nixpkgs.lib.genAttrs allSystems (system: f {
|
||||
pkgs = import nixpkgs { inherit system; config.allowUnfree = true; };
|
||||
});
|
||||
|
||||
in {
|
||||
devShells = forAllSystems ({ pkgs }: {
|
||||
default = pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
temurin-bin
|
||||
ghidra-bin
|
||||
(vscode-with-extensions.override { vscodeExtensions = pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||
{
|
||||
name = "vscode-frida";
|
||||
publisher = "CodeColorist";
|
||||
version = "0.8.2";
|
||||
hash = "sha256-mCBnBguwg23Wc2PhefuagiG5ZI2GAW0DoEUWEhr+/PM=";
|
||||
}
|
||||
];
|
||||
})
|
||||
swift
|
||||
#frida-tools -> different version is already required by xpcspy
|
||||
lief
|
||||
libusbmuxd
|
||||
libplist
|
||||
ldid
|
||||
radamsa
|
||||
wireshark
|
||||
android-tools
|
||||
jadx
|
||||
(python3.withPackages (pypkgs: with pypkgs; [
|
||||
(pypkgs.callPackage ./xpcspy.nix {})
|
||||
(pypkgs.callPackage ./pyimg4.nix {})
|
||||
(pypkgs.callPackage ./dyldextractor.nix {})
|
||||
(pypkgs.callPackage ./binder-trace.nix {})
|
||||
(pypkgs.callPackage ./frida-python.nix {})
|
||||
]))
|
||||
];
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
||||
68
frida-python.nix
Normal file
68
frida-python.nix
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
fetchPypi,
|
||||
buildPythonPackage,
|
||||
typing-extensions,
|
||||
darwin,
|
||||
}:
|
||||
let
|
||||
version = "16.0.19";
|
||||
format = "setuptools";
|
||||
|
||||
devkit = {
|
||||
aarch64-darwin = fetchurl {
|
||||
url = "https://github.com/frida/frida/releases/download/${version}/frida-core-devkit-${version}-macos-arm64.tar.xz";
|
||||
hash = "sha256-5VAZnpHQ5wjl7IM96GhIKOfFYHFDKKOoSjN1STna2UA=";
|
||||
};
|
||||
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://github.com/frida/frida/releases/download/${version}/frida-core-devkit-${version}-linux-x86_64.tar.xz";
|
||||
#hash = "sha256-7iptwk+Za9AgjX1rUYtvi9RSg823HV8ga7G09A6jImU=";
|
||||
hash = "sha256-yNXNqv8eCbpdQKFShpAh6rUCEuItrOSNNLOjESimPdk=";
|
||||
};
|
||||
}.${stdenv.hostPlatform.system}
|
||||
or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
|
||||
in
|
||||
buildPythonPackage rec {
|
||||
pname = "frida-python";
|
||||
inherit version;
|
||||
|
||||
src = fetchPypi {
|
||||
pname = "frida";
|
||||
inherit version;
|
||||
hash = "sha256-rikIjjn9wA8VL/St/2JJTcueimn+q/URbt9lw/+nalY=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
mkdir assets
|
||||
pushd assets
|
||||
tar xvf ${devkit}
|
||||
export FRIDA_CORE_DEVKIT=$PWD
|
||||
popd
|
||||
'';
|
||||
|
||||
env.NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isDarwin "-framework AppKit";
|
||||
|
||||
propagatedBuildInputs = [ typing-extensions ];
|
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
darwin.apple_sdk.frameworks.AppKit
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "frida" ];
|
||||
|
||||
passthru = {
|
||||
inherit devkit;
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers (Python bindings)";
|
||||
homepage = "https://www.frida.re";
|
||||
license = lib.licenses.wxWindows;
|
||||
maintainers = with lib.maintainers; [ s1341 ];
|
||||
platforms = [ "aarch64-darwin" "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
25
frida-tools.nix
Normal file
25
frida-tools.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
{ lib, fetchPypi, python3Packages }:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "frida-tools";
|
||||
version = "12.3.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-jtxn0a43kv9bLcY1CM3k0kf5K30Ne/FT10ohptWNwEU=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
pygments
|
||||
prompt-toolkit
|
||||
colorama
|
||||
frida-python
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers (client tools)";
|
||||
homepage = "https://www.frida.re/";
|
||||
maintainers = with lib.maintainers; [ s1341 ];
|
||||
license = lib.licenses.wxWindows;
|
||||
};
|
||||
}
|
||||
74
pyimg4.nix
Normal file
74
pyimg4.nix
Normal file
@@ -0,0 +1,74 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
fetchPypi,
|
||||
poetry-core,
|
||||
poetry-dynamic-versioning,
|
||||
setuptools,
|
||||
asn1,
|
||||
click,
|
||||
pycryptodome
|
||||
}:
|
||||
let
|
||||
pylzss = buildPythonPackage rec {
|
||||
pname = "pylzss";
|
||||
version = "v0.3.8";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "m1stadev";
|
||||
repo = "pylzss";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-Y0u9rFJWYWyJUVEgpLtQHsXu0JpTgRKxFJHB+B3EFyU=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "LZSS library for CPython ";
|
||||
homepage = "https://github.com/m1stadev/pylzss";
|
||||
};
|
||||
};
|
||||
|
||||
lzfse = buildPythonPackage rec {
|
||||
pname = "lzfse";
|
||||
version = "0.4.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi{
|
||||
inherit pname version;
|
||||
hash = "sha256-xolfjKE+7dLhi24MmHyUaBFQMImECbxEp6qNT0pCzqs=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
};
|
||||
in buildPythonPackage rec {
|
||||
pname = "pyimg4";
|
||||
version = "v0.8.6";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "m1stadev";
|
||||
repo = "PyIMG4";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-jpI0R/OLyN9mh/E2hmn4f+KSM4UpuQ1anin8kZGqqzI=";
|
||||
};
|
||||
|
||||
build-system = [ poetry-core poetry-dynamic-versioning ];
|
||||
|
||||
dependencies = [
|
||||
asn1
|
||||
click
|
||||
pycryptodome
|
||||
pylzss
|
||||
lzfse
|
||||
];
|
||||
|
||||
pythonRelaxDeps = [ "pylzss" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "A Python library/CLI tool for parsing Apple's Image4 format.";
|
||||
homepage = "https://github.com/m1stadev/PyIMG4";
|
||||
};
|
||||
}
|
||||
46
xpcspy.nix
Normal file
46
xpcspy.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
fetchPypi,
|
||||
setuptools,
|
||||
frida-tools,
|
||||
frida-python,
|
||||
python3,
|
||||
callPackage
|
||||
}:
|
||||
let python =
|
||||
let packageOverrides = self: super: {
|
||||
frida-python = (callPackage ./frida-python.nix {});
|
||||
frida-tools = super.toPythonModule(callPackage ./frida-tools.nix {});
|
||||
};
|
||||
in python3.override {
|
||||
inherit packageOverrides;
|
||||
self = python;
|
||||
};
|
||||
|
||||
in buildPythonPackage rec {
|
||||
pname = "xpcspy";
|
||||
version = "v0.8.3";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hot3eed";
|
||||
repo = "xpcspy";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-/7nv1Xtsu4cGXai12d0fN6OR9d5mgV/0xK2UrlUv2rc=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
nativeBuildInputs = [ python.pkgs.frida-tools ];
|
||||
buildInputs = [ python.pkgs.frida-tools ];
|
||||
dependencies = [ python.pkgs.frida-python python.pkgs.frida-tools ];
|
||||
|
||||
pythonRelaxDeps = [ "frida-tools" "frida" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Bidirectional XPC message interception and more. Powered by Frida";
|
||||
homepage = "https://github.com/hot3eed/xpcspy";
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user