1{ lib
2, buildPythonPackage
3, capstone
4, fetchFromGitHub
5, fetchPypi
6, gevent
7, keystone-engine
8, multiprocess
9, pefile
10, pyelftools
11, python-registry
12, unicorn
13}:
14
15buildPythonPackage rec {
16 pname = "qiling";
17 version = "1.4.0";
18 format = "setuptools";
19
20 src = fetchPypi {
21 inherit pname version;
22 sha256 = "sha256-xUoNHMyGN0G2itVcKLsk+7QKxZdguzyh6OZCqCHNB4Y=";
23 };
24
25 propagatedBuildInputs = [
26 capstone
27 gevent
28 keystone-engine
29 multiprocess
30 pefile
31 pyelftools
32 python-registry
33 unicorn
34 ];
35
36 postPatch = ''
37 substituteInPlace setup.py \
38 --replace "pefile==2021.5.24" "pefile>=2021.5.24"
39 '';
40
41 # Tests are broken (attempt to import a file that tells you not to import it,
42 # amongst other things)
43 doCheck = false;
44
45 pythonImportsCheck = [
46 "qiling"
47 ];
48
49 meta = with lib; {
50 description = "Qiling Advanced Binary Emulation Framework";
51 homepage = "https://qiling.io/";
52 license = licenses.gpl2Only;
53 maintainers = teams.determinatesystems.members;
54 };
55}