Skip to main content

CLE

Latest Release Python Version PyPI Statistics License

CLE loads binaries and their associated libraries, resolves imports and provides an abstraction of process memory the same way as if it was loader by the OS's loader.

Project Links

Project repository: https://github.com/angr/cle

Documentation: https://api.angr.io/projects/cle/en/latest/

Installation

pip install cle

Usage example

>>> import cle
>>> ld = cle.Loader("/bin/ls")
>>> hex(ld.main_object.entry)
'0x4048d0'
>>> ld.shared_objects
{'ld-linux-x86-64.so.2': <ELF Object ld-2.21.so, maps [0x5000000:0x522312f]>,
 'libacl.so.1': <ELF Object libacl.so.1.1.0, maps [0x2000000:0x220829f]>,
 'libattr.so.1': <ELF Object libattr.so.1.1.0, maps [0x4000000:0x4204177]>,
 'libc.so.6': <ELF Object libc-2.21.so, maps [0x3000000:0x33a1a0f]>,
 'libcap.so.2': <ELF Object libcap.so.2.24, maps [0x1000000:0x1203c37]>}
>>> ld.addr_belongs_to_object(0x5000000)
<ELF Object ld-2.21.so, maps [0x5000000:0x522312f]>
>>> libc_main_reloc = ld.main_object.imports['__libc_start_main']
>>> hex(libc_main_reloc.addr)       # Address of GOT entry for libc_start_main
'0x61c1c0'
>>> import pyvex
>>> some_text_data = ld.memory.load(ld.main_object.entry, 0x100)
>>> irsb = pyvex.lift(some_text_data, ld.main_object.entry, ld.main_object.arch)
>>> irsb.pp()
IRSB {
   t0:Ity_I32 t1:Ity_I32 t2:Ity_I32 t3:Ity_I64 t4:Ity_I64 t5:Ity_I64 t6:Ity_I32 t7:Ity_I64 t8:Ity_I32 t9:Ity_I64 t10:Ity_I64 t11:Ity_I64 t12:Ity_I64 t13:Ity_I64 t14:Ity_I64

   15 | ------ IMark(0x4048d0, 2, 0) ------
   16 | t5 = 32Uto64(0x00000000)
   17 | PUT(rbp) = t5
   18 | t7 = GET:I64(rbp)
   19 | t6 = 64to32(t7)
   20 | t2 = t6
   21 | t9 = GET:I64(rbp)
   22 | t8 = 64to32(t9)
   23 | t1 = t8
   24 | t0 = Xor32(t2,t1)
   25 | PUT(cc_op) = 0x0000000000000013
   26 | t10 = 32Uto64(t0)
   27 | PUT(cc_dep1) = t10
   28 | PUT(cc_dep2) = 0x0000000000000000
   29 | t11 = 32Uto64(t0)
   30 | PUT(rbp) = t11
   31 | PUT(rip) = 0x00000000004048d2
   32 | ------ IMark(0x4048d2, 3, 0) ------
   33 | t12 = GET:I64(rdx)
   34 | PUT(r9) = t12
   35 | PUT(rip) = 0x00000000004048d5
   36 | ------ IMark(0x4048d5, 1, 0) ------
   37 | t4 = GET:I64(rsp)
   38 | t3 = LDle:I64(t4)
   39 | t13 = Add64(t4,0x0000000000000008)
   40 | PUT(rsp) = t13
   41 | PUT(rsi) = t3
   42 | PUT(rip) = 0x00000000004048d6
   43 | t14 = GET:I64(rip)
   NEXT: PUT(rip) = t14; Ijk_Boring
}

Valid options

For a full listing and description of the options that can be provided to the loader and the methods it provides, please examine the docstrings in cle/loader.py. If anything is unclear or poorly documented (there is much) please complain through whatever channel you feel appropriate.

Loading Backends

CLE's loader is implemented in the Loader class. There are several backends that can be used to load a single file:

  • ELF, as its name says, loads ELF binaries. ELF files loaded this way are statically parsed using PyElfTools.

  • PE is a backend to load Microsoft's Portable Executable format, effectively Windows binaries. It uses the (optional) pefile module.

  • Mach-O is a backend to load, you guessed it, Mach-O binaries. Support is limited for this backend.

  • Blob is a backend to load unknown data. It requires that you specify the architecture it would be run on, in the form of a class from ArchInfo.

Which backend you use can be specified as an argument to Loader. If left unspecified, the loader will pick a reasonable default.

Finding shared libraries

  • If the auto_load_libs option is set to False, the Loader will not automatically load libraries requested by loaded objects. Otherwise...

  • The loader determines which shared objects are needed when loading binaries, and searches for them in the following order:

    • in the current working directory
    • in folders specified in the ld_path option
    • in the same folder as the main binary
    • in the system (in the corresponding library path for the architecture of the binary, e.g., /usr/arm-linux-gnueabi/lib for ARM, note that you need to install cross libraries for this, e.g., libc6-powerpc-cross on Debian - needs emdebian repos)
    • in the system, but with mismatched version numbers from what is specified as a dependency, if the ignore_import_version_numbers option is True
  • If no binary is found with the correct architecture, the loader raises an exception if except_missing_libs option is True. Otherwise it simply leaves the dependencies unresolved.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cle-9.3.4.tar.gz (250.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cle-9.3.4-py3-none-any.whl (234.3 kB view details)

Uploaded Python 3

File details

Details for the file cle-9.3.4.tar.gz.

File metadata

  • Download URL: cle-9.3.4.tar.gz
  • Upload date:
  • Size: 250.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for cle-9.3.4.tar.gz
Algorithm Hash digest
SHA256 1df8f0a720b331adf30afc3cb20898fbd613d4426b8008ed1c60be3852c0d414
MD5 aa08c6e79eb8a41ecd0dfbd1d58b3b80
BLAKE2b-256 e769da16509496a6941da07c7296df29a30351292a3ef707e90e4415d0ba7909

See more details on using hashes here.

Provenance

The following attestation bundles were made for cle-9.3.4.tar.gz:

Publisher: angr-release.yml on angr/ci-settings

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cle-9.3.4-py3-none-any.whl.

File metadata

  • Download URL: cle-9.3.4-py3-none-any.whl
  • Upload date:
  • Size: 234.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for cle-9.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0cb39027ed0aa8f25cce779b71170fc8101fafaf8b19520753a02f2ca0ac7645
MD5 d68a374a900a41a14293c0d13da503a0
BLAKE2b-256 53f08d072bfd3c906f3915af8b95464c26273959e6b4cc4714103d9d777afffa

See more details on using hashes here.

Provenance

The following attestation bundles were made for cle-9.3.4-py3-none-any.whl:

Publisher: angr-release.yml on angr/ci-settings

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

9.3.4 This release

2 files

9.3.3

2 files

9.3.2

2 files

9.3.1

2 files

9.3.0

2 files

9.2.223

2 files

9.2.222

7 files

9.2.221

15 files

9.2.217

2 files

9.2.215

2 files

9.2.214

2 files

9.2.213

2 files

9.2.212

2 files

9.2.211

2 files

9.2.209

2 files

9.2.208

2 files

9.2.207

2 files

9.2.205

2 files

9.2.204

2 files

9.2.203

2 files

9.2.202

2 files

9.2.201

2 files

9.2.199

2 files

9.2.198

2 files

9.2.197

2 files

9.2.196

2 files

9.2.195

2 files

9.2.194

2 files

9.2.193

2 files

9.2.192

2 files

9.2.191

2 files

9.2.190

2 files

9.2.189

2 files

9.2.188

2 files

9.2.187

2 files

9.2.186

2 files

9.2.185

2 files

9.2.184

2 files

9.2.183

2 files

9.2.182

2 files

9.2.181

2 files

9.2.180

2 files

9.2.179

2 files

9.2.178

2 files

9.2.177

2 files

9.2.176

2 files

9.2.175

2 files

9.2.174

2 files

9.2.173

2 files

9.2.172

2 files

9.2.171

2 files

9.2.170

2 files

9.2.169

2 files

9.2.168

2 files

9.2.167

2 files

9.2.166

2 files

9.2.165

2 files

9.2.164

1 file

9.2.163

1 file

9.2.162

2 files

9.2.161

2 files

9.2.160

2 files

9.2.159

2 files

9.2.158

2 files

9.2.157

2 files

9.2.156

2 files

9.2.154

2 files

9.2.153

2 files

9.2.152

2 files

9.2.150

2 files

9.2.149

2 files

9.2.148

2 files

9.2.147

2 files

9.2.146

2 files

9.2.145

2 files

9.2.144

2 files

9.2.143

2 files

9.2.142

2 files

9.2.141

2 files

9.2.140

2 files

9.2.139

2 files

9.2.138

2 files

9.2.137

2 files

9.2.136

2 files

9.2.135

2 files

9.2.134

2 files

9.2.133

2 files

9.2.132

2 files

9.2.131

2 files

9.2.130

2 files

9.2.129

2 files

9.2.128

2 files

9.2.127

2 files

9.2.126

2 files

9.2.125

2 files

9.2.124

2 files

9.2.123

2 files

9.2.122

2 files

9.2.121

2 files

9.2.120

2 files

9.2.119

2 files

9.2.118

2 files

9.2.117

2 files

9.2.116

2 files

9.2.115

2 files

9.2.114

2 files

9.2.113

2 files

9.2.112

2 files

9.2.111

2 files

9.2.110

2 files

9.2.109

2 files

9.2.108

2 files

9.2.107

2 files

9.2.106

2 files

9.2.105

2 files

9.2.104

2 files

9.2.103

2 files

9.2.102

2 files

9.2.101

2 files

9.2.100

2 files

9.2.99

2 files

9.2.98

2 files

9.2.97

2 files

9.2.96

2 files

9.2.95

2 files

9.2.94

2 files

9.2.93

2 files

9.2.92

2 files

9.2.91

2 files

9.2.90

2 files

9.2.89

2 files

9.2.88

2 files

9.2.87

2 files

9.2.86

2 files

9.2.85

2 files

9.2.84

2 files

9.2.83

2 files

9.2.82

2 files

9.2.81

2 files

9.2.80

2 files

9.2.79

2 files

9.2.78

2 files

9.2.77

2 files

9.2.76

2 files

9.2.75

2 files

9.2.74

2 files

9.2.73

2 files

9.2.72

2 files

9.2.71

2 files

9.2.70

2 files

9.2.69

2 files

9.2.68

2 files

9.2.67

2 files

9.2.66

2 files

9.2.65

2 files

9.2.64

2 files

9.2.63

2 files

9.2.62

2 files

9.2.61

2 files

9.2.60

2 files

9.2.59

2 files

9.2.58

2 files

9.2.57

2 files

9.2.56

2 files

9.2.55

2 files

9.2.54

2 files

9.2.53

2 files

9.2.52

2 files

9.2.51

2 files

9.2.50

2 files

9.2.49

2 files

9.2.48

2 files

9.2.47

2 files

9.2.46

2 files

9.2.45

2 files

9.2.44

2 files

9.2.43

2 files

9.2.42

2 files

9.2.41

2 files

9.2.40

2 files

9.2.39

2 files

9.2.38

2 files

9.2.37

2 files

9.2.36

2 files

9.2.35

2 files

9.2.34

2 files

9.2.33

2 files

9.2.32

2 files

9.2.31

2 files

9.2.30

2 files

9.2.29

2 files

9.2.28

2 files

9.2.27

2 files

9.2.26

2 files

9.2.25

2 files

9.2.24

2 files

9.2.23

2 files

9.2.22

2 files

9.2.21

2 files

9.2.20

2 files

9.2.19

2 files

9.2.18

2 files

9.2.17

2 files

9.2.16

2 files

9.2.15

2 files

9.2.14

2 files

9.2.13

2 files

9.2.12

2 files

9.2.11

2 files

9.2.10

2 files

9.2.9

2 files

9.2.8

2 files

9.2.7

2 files

9.2.6

2 files

9.2.5

2 files

9.2.4

2 files

9.2.3

2 files

9.2.2

2 files

9.2.1

2 files

9.1.12332

2 files

9.1.11752

2 files

9.1.11611

2 files

9.1.11508

2 files

9.1.10913

2 files

9.0.10730

2 files

9.0.10689

2 files

9.0.10651

2 files

9.0.10576

2 files

9.0.10534

2 files

9.0.10409

2 files

9.0.10339

2 files

9.0.10281

2 files

9.0.10159

2 files

9.0.10072

2 files

9.0.10055

2 files

9.0.10010

2 files

9.0.9947

2 files

9.0.9792

2 files

9.0.9684

2 files

9.0.9572

2 files

9.0.9506

2 files

9.0.9438

2 files

9.0.9355

2 files

9.0.9297

2 files

9.0.9166

2 files

9.0.9031

2 files

9.0.8761

2 files

9.0.8021

2 files

9.0.7912

2 files

9.0.7833

2 files

9.0.7491

2 files

9.0.7293

2 files

9.0.6885

2 files

9.0.6852

2 files

9.0.6790

2 files

9.0.6642

2 files

9.0.6588

2 files

9.0.6488

2 files

9.0.6421

2 files

9.0.6281

2 files

9.0.6136

2 files

9.0.5903

2 files

9.0.5811

2 files

9.0.5739

2 files

9.0.5610

2 files

9.0.5450

2 files

9.0.5405

2 files

9.0.5376

2 files

9.0.5327

2 files

9.0.5326

2 files

9.0.5171

2 files

9.0.5034

2 files

9.0.5002

2 files

9.0.4940

2 files

9.0.4885

2 files

9.0.4663

2 files

9.0.4495

2 files

9.0.4446

2 files

9.0.4378

2 files

8.20.7.27

1 file

8.20.7.6

1 file

8.20.6.8

1 file

8.20.6.1

1 file

8.20.5.27

1 file

8.20.1.7

1 file

8.19.10.30

1 file

8.19.10.29

1 file

8.19.7.25

1 file

8.19.4.5

1 file

8.19.2.4

1 file

8.18.10.25

1 file

8.18.10.5

1 file

7.8.9.26

1 file

7.8.8.1

1 file

7.8.7.1

1 file

7.8.6.16

1 file

7.8.2.21

1 file

7.7.12.16

1 file

7.7.9.21

1 file

7.7.9.14

1 file

7.7.9.8.post1

1 file

7.7.9.8

1 file

6.7.7.27

1 file

6.7.6.9

1 file

6.7.4.12

1 file

6.7.3.26

1 file

6.7.1.31

1 file

6.7.1.13.post2

1 file

6.7.1.13

1 file

5.6.12.3

1 file

5.6.10.5

1 file

5.6.8.22

1 file

4.6.6.28

1 file

4.6.5.27

1 file

4.6.4.28

1 file

4.6.3.28

1 file

4.6.3.15

1 file

4.6.2.25

1 file

4.6.1.30

1 file

4.6.1.27

1 file

4.6.1.6

1 file

4.6.1.4

1 file

4.5.12.28

1 file

4.5.12.12

1 file

4.5.11.23

1 file

4.5.10.15

1 file

4.5.10.14

1 file

4.5.9.29

1 file

4.5.9.22

1 file

4.5.9.14

1 file

4.5.9.13

1 file

4.5.9.9

1 file

1.0

1 file

1.00

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page