GithubHelp home page GithubHelp logo

libpe's Introduction

LibPE

LibPE is a simple parser for PE file format under The BSD 2-Clause License.

Design principles (May be not achieved)

Easy-To-Use

  • Get every part of PE file directly instead of RVA or FOA or even raw data structures.
  • Using reference count to manage object's life circle.
  • Support compilation to lib and dll.

Compatible with PE32(x86) and PE32+(x64)

  • No doubt, it's a must-have ability.
  • Get file info through IPEFile instead of IPEFile32 and IPEFile64, simplify your code.

Good performance

  • Do not parse any content until you need it.
  • Minimize the Disk IO.

Cross platform

  • Support windows & linux.

Why / Why Not XXX?

  • Why using basic types on windows?

    I presume most of the users are developing on Windows platform. So we should minimize the things you may learn.

  • Why using COM-like interface?

    This is the problem I grapple with for most of the time. Althrough it makes LibPE harder to use, we still use it to avoid the use-after-free crashes and to solve the cross-dll problems. And we do not need QueryInterface due to the simple class hierarchy. And also we do not support COM in order to make LibPE easier to use.

  • Why no boost?

    Boost is a very powerful tool. But you need checkout lots of code before you use LibPE. And of course, you should learn boost first before you see the code.

  • Why so many template

    When you need a new type of PE parser, define your own PETrait and change the LIBPE_FORCE_TEMPLATE_REDUCTION_XXX macro. And wala!

Copyright

Copyright (c) 2012-2013, Jiang Jinzhou. See LICENSE for details.

libpe's People

Contributors

r12f avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

libpe's Issues

内存问题

非常感谢libpe,为PE解析带来了极大的方便, 我这log发现DataLoaderDiskFile没有析构,带来了内存泄露,希望给予答复

希望可以有写入或者重组PE文件的功能

我比较了一下Libpe和Pelib,libpe解析的结构比pelib要更多更详细。不过两者都只有读取没有写入文件的功能。如果方便的话,希望libpe能加入这个特性,比如我希望直接在PeFile中AddSection,或者重新生成一个新的重定位表,最后使用make()或者build()可以直接重组结构将其写入硬盘中。不过似乎您的接口并非为此设计,不知难度大吗?

Best wishes 👍 :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.