230 Commits

Author SHA1 Message Date
Eric Kilmer
3b7175276e
Add LGTM badge to README (#126) 2020-04-06 09:58:13 -04:00
William Woodruff
164666cb5b
parse: Fix small memory leak (#124) 2020-04-04 23:36:28 -04:00
William Woodruff
2bf8ad917e
parse: Fix DIR_SECURITY data directory retrieval (#122)
* parse: Fix DIR_SECURITY data directory retrieval

Fixes #121.

* parse: Fix variables

* parse: Add MSDN link for DIR_SECURITY special case
2020-03-30 10:04:57 -04:00
William Woodruff
c0208d643f
CMakeLists: Fix message() (#119) 2020-03-27 17:33:33 -04:00
William Woodruff
84d990dd53
nt-headers: Add IMAGE_DLLCHARACTERISTICS constants (#118)
* nt-headers: Add IMAGE_DLLCHARACTERISTICS constants

Like the other Win32 constants, these are guarded by
_PEPARSE_WINDOWS_CONFLICTS.

* nt-headers: Add comment
2020-03-27 14:48:51 -04:00
William Woodruff
14849a5e66
CMake: Set minimum to 3.12 (#117) 2020-03-27 11:50:36 -04:00
William Woodruff
a27dca9321
CMake: Set minimum to 3.11 (#116)
This was incorrectly set to 3.7, despite
add_compile_definitions appearing in 3.11.
2020-03-27 11:42:49 -04:00
William Woodruff
05676c1bf8
VERSION: 1.0.2 2020-03-26 10:12:34 -04:00
Eric Kilmer
50ff34288a
Fix finding version file (#114) 2020-03-26 10:11:13 -04:00
William Woodruff
9d4000c520
VERSION: 1.0.1 2020-03-18 11:48:58 -04:00
William Woodruff
d57f02a187
setup: Add homepage URL 2020-03-18 11:48:45 -04:00
William Woodruff
322bd6ad14
VERSION: 1.0.0
Closes #105.
Closes #112.
2020-03-17 13:39:30 -04:00
William Woodruff
1dc2c53566
Release 1.0 prep work (#113)
Co-authored-by: Eric Kilmer <eric.d.kilmer@gmail.com>
2020-03-17 13:38:56 -04:00
William Woodruff
c5e9a09087
Dockerfile, cmake: Simplify build (#111)
* Dockerfile, cmake: Simplify build

Always use clang in the Dockerfile, and don't overspecify
the build type.

Additionally, drop -Weverything when building in Debug mode --
it has competing flags internally and isn't intended for actual
builds.

* Dockerfile: Set CC and CXX

Ensures that we build with clang(++).

* python/setup: Blacken
2020-03-09 15:18:54 -04:00
William Woodruff
4b2aa738cb
parse: Handle a potential nullptr from splitBuffer (#110)
Identified by #109: when parsing the PE sections, we incorrectly
trust that the offset range given to us by each section is valid.

We pass this range to splitBuffer expectly a valid bounded_buffer.

splitBuffer correctly determines that the range is invalid, and
returns a nullptr to indicate failure.

We fail to check for that nullptr in getSections, resulting in
an eventual segfault by null dereference when we attempt to
reference the invalid section.

This commit adds a check for that nullptr and causes getSections
to return false. This is then propagated as an invalid
section error.

Example:

```bash
/app/pe-parse # /usr/bin/dump-pe /tmp/test1.exe
Error: 3 (Invalid section)
Location: ParsePEFromFile:2380
```

Fixes #109.
2020-03-09 12:47:16 -04:00
Eric Kilmer
68ab345297 Compile pepy with unicode_codecvt (#108)
Ideally, we would be able to autodetect which unicode library we want to
use, but this should hopefully work as a stop-gap solution.
2020-01-13 19:14:08 -05:00
Paul Kehrer
29a9c8ff04 remove travis CI (#104)
* remove travis CI

* also remove the coverity badge

we can re-add it if we add coverity back into the CI
2019-12-23 12:38:09 -05:00
Paul Kehrer
5a21e22292 Github actions (#103) 2019-12-23 10:28:47 -05:00
William Woodruff
2acb1fc975
Dockerfile: Dockerize pe-parse (#102)
Adds a default entrypoint for the dump-pe as well.
2019-12-06 13:36:08 -05:00
Stefan Siegfried
bd68ba418f Populate Rich header version strings (#94) 2019-11-16 17:45:55 +01:00
Jonas Kvinge
ea3970c9a0 Fix PEPARSE_INCLUDE_DIR for cross-compiling (#101) 2019-11-09 19:19:34 -05:00
William Woodruff
fe719c9b87
pe-parser-library, dump-pe: Windows.h accommodations (#99)
Makes it easier to use pe-parse in a translation unit where
Windows.h is also included.
2019-10-27 21:36:27 -04:00
William Woodruff
b4e2695921
travis: Add Windows build (#97) 2019-10-24 01:40:21 -04:00
William Woodruff
67a09499bf
parse: Fix unsafe cast (#96)
* parse: Fix unsafe cast

* parse: Fix uninitialized warning

This is a false positive from cl.exe's /W4: We only
use this variable in a branch where it ends up initialized.
2019-10-24 01:15:56 -04:00
William Woodruff
40987e1f7e
pe-parser-library: Fix GetDataDirectoryEntry (#95)
* pe-parser-library: Fix GetDataDirectoryEntry

Avoids UB.

* pe-parser-library: clang-format

* pe-parser-library: Use ref
2019-10-21 19:51:41 -04:00
William Woodruff
b3ab75577d
parse: Remove debug print 2019-10-21 12:18:18 -04:00
William Woodruff
2c775e5d6a
Directory entry retrieval (#90)
* pe-parser-library: Directory entry extraction

Also runs clang-format on all library files.

* dump-pe: Refactor, clang-format

* pe-parser-library: Use enum for directory kinds

* travis: Refactor

* travis: Fixup stages

* travis: Fix matrix

* examples, pe-parser-library, pepy: clang-format

* travis: Use minimal for lint

* travis: Use find

* clang-format: Remove old option

* travis: More experimentation

* travis: Move addons

* travis: Remove coverity

* travis: Hackery

* travis: Move addons up

* .travis: clang-format-8

* examples: clang-format

* travis: Fix homebrew

* CONTRIBUTING: Add contrib guidelines

* travis: Build python ext, reenable coverity

Remove old build files.

* travis: Re-add coverity secret

* travis: Build with coverity in a separate dir
2019-10-21 09:00:54 -04:00
Stefan Siegfried
1544c61c38 Initial impl. of Rich header parser. (#89)
* Initial impl. of Rich header parser. Closes trailofbits/pe-parse#83

* Fix const correctness per @woodruffw PR review
2019-10-14 15:57:54 -04:00
Jack Williams
6ee67f63e1 Icu and codecvt 2 (#88)
* Support for Windows codecvt and icu4c

* Add dependency for Travis

* Update README

* Fix codecvt build for linux

* Fix linux builds

* Fix copyright
2019-09-16 20:59:24 -04:00
Jack Williams
d2f74fadb0 Revert pepy change (#87) 2019-09-08 22:34:09 -04:00
redfast00
fece2ae3de Fix 'type qualifiers ignored on cast result type' warning (#85) 2019-08-29 14:19:24 -04:00
Jack Williams
724247d321 Goodness for dump-pe utility (#80) 2018-10-16 17:37:48 -04:00
Jack Williams
a8f7da7a2b More Windows compatibility (#75)
* Attempt to make setup.py more platform independent

* Fix markdown

* Fix cmake config for pre-Windows 10 installations

* Fix Travis build
2018-09-27 10:05:12 -04:00
Jack Williams
766b183a1b Explicit use of std namespace, prefer std::vector over std::list, never use std::endl (#74) 2018-09-24 11:10:29 -04:00
William Woodruff
78869e5337
cmake: Bump minimum version to 3.7 (#78) 2018-09-21 17:29:29 -04:00
William Woodruff
697714b379
parse: Limit resource table recursion to 3 levels (#77) 2018-09-21 11:06:08 -04:00
Jack Williams
19a3bf4859 Minor pepy fixes (#73)
* Minor pepy fixes

* Fix python2

* Fix conversion

* Adjust whitespace

* Bumping pepy version
2018-09-21 10:27:40 -04:00
William Woodruff
c6acdea485
Merge pull request #76 from trailofbits/buffer-overread
buffer, parse: Fix overread on {d,q,}words
2018-09-20 16:41:00 -04:00
William Woodruff
0f740c43ab
buffer, parse: Fix overread on {d,q,}words
When read 2, 4, or 8 bytes from a bounded_buffer, we only
checked to see if the offset, not the whole span, was in bounds.

This results in an arbitrary memory read of up to 1, 3, or 7 bytes
when the offset is aligned with the very end of the buffer.
2018-09-20 10:57:22 -04:00
Jack Williams
11685390bb Fix Windows build and VS2017 compiler errors for example project (#70) 2018-09-05 19:03:59 +02:00
Jack Williams
6fa093aa42 Minor update to machine and subsytem constants (#72) 2018-09-05 15:22:05 +02:00
Jack Williams
2664eec5f6 Add machine and subsytem to-string methods (#71)
* Add machine and subsytem enums and to-string methods

* Minor fix
2018-08-31 17:44:22 +02:00
Alessandro Gario
9545944ea5 Fix symbol table parsing (#65)
The following issues were found and corrected:

1. Auxiliary symbols were not being counted; this caused
   the parser to loop above the actual number of symbols
2. When parsing auxiliary symbols, it is best to position
   the offset manually at the start of the next data
   structure (everything is padded to 18 bytes)
3. Some auxiliary symbol handlers were not correctly
   updating the file offset
4. Print a warning when skipping auxiliary symbols

This closes #65
2018-04-16 10:26:55 +02:00
Marty Plummer
b66e9dbedb Added meson build scripts.
Mostly for ease of use as a subproject to parse windows dependencies
for packaging.

Signed-off-by: Marty Plummer <ntzrmtthihu777@gmail.com>
2018-04-16 10:26:55 +02:00
Tony Theodore
64989f688a CMake improvements, MinGW compatibility, shared libs support
* mingw-w64 fixes

  - `WIN32` is user-defined, `_WIN32` is pre-defined by toolchain[1]
  - use gcc options instead of MSVC
    - `-fPIC` is redundant on mingw
    - don't error on `old-style-cast`

[1] https://msdn.microsoft.com/en-us/library/b0084kay.aspx

* add option to build shared libs

* add option to disable command line tools

* ignore more Visual Studio files

* enable shared builds on MSVC (with cmake >= 3.4)

https://blog.kitware.com/create-dlls-on-windows-without-declspec-using-new-cmake-export-all-feature/

* fix old-style-cast warning
2018-03-27 14:52:05 +02:00
Alessandro Gario
4cd4127961 Docs: Update the build instructions 2018-03-26 14:40:30 +02:00
Alessandro Gario
50ca8192e6
MSVC: Fix compilation warning caused by ::toupper (#64) 2018-03-26 13:40:48 +02:00
Alessandro Gario
752f526e2e
Fix compilation error on Ubuntu Xenial (#60)
* CMake: Remove -Wstrict-overflow (#59)
This warning has been added by mistake in a previous PR. Closes #59

* Travis: Do not build the examples
2017-12-20 00:13:03 +01:00
Alessandro Gario
b60b908fa2 Install public headers, add Arch package, build pepy under Travis and more (#57)
* CMake: Added install directives

* CMake: Added support for find_package(pe-parse)

* Fixed a compilation error on Linux

* CMake: Fix cmake module installation

* Added ArchLinux package

* Finished implementing the address converted example

* peaddrconv: Print the image base address.

* peaddrconv: Enable more warnings.

* Update travis to also build the examples

* Fix a compilation warning on Ubuntu 14.04

* Travis: Add macOS support.

* Better output for Travis, fix a compilation error on macOS.

* Travis: Do not build examples under macOS.

* Travis: Also compile the python module (pepy)

* Readme: Add a section to show how to use the library.

* Windows: Fix a compilation error, enable /analyze (see details).

The nt-headers.h include file is defining several constexpr values
using reserved (by windows.h) names.

These names (i.e.: IMAGE_FILE_MACHINE_UNKNOWN) are in fact macros
defined inside the Windows header files, and causes the preprocessor
to break definitions such as the following one:

constexpr std::uint16_t IMAGE_FILE_MACHINE_UNKNOWN = 0x0;

The fix (for now) consists in including the nt-headers.h file before
windows.h, but we should probably choose whether to use different
names or avoid defining those values (since they are inside the
system header anyway).
2017-11-25 16:01:53 -05:00
Alessandro Gario
e632a37290 Bugfix: Do not use memset on non-POD structures 2017-10-21 19:45:25 +02:00