Code Monkey home page Code Monkey logo

iatsolver's Introduction

IATSolver

Resolves the correct Import Address Table for copy modules

For specific reasons, reverse engineers and others may want to load an identical library/module into a process.

(Process.exe)
(Process2.exe) - Same file as Process.exe

Inject Process2.exe -> Process.exe

One reason for doing this may be to bypass memory integrity checks where:

Process.function_one:
push ebp -> (change to: jmp Process2.function_one)
mov ebp, esp
...code... w/ call dword ptr [xxxxxxxx]
mov esp, ebp
pop ebp
retn
Process2.function_one:
push ebp
mov ebp, esp
...code... w/ call dword ptr [xxxxxxxx]
mov esp, ebp
pop ebp
retn

This jump or "hook" jumps Process2.function_one which is an identical function; however, the injection of Process2 loads its own Import Address Table and doesn't resolve correctly, making calls direct to invalid or unmapped memory locations. This set of functions fixes that problem.

struct IMP_AT - Contains the size of the Import Address table and the base address of it

IMP_AT GetIAT(LPCSTR ModuleName) - Returns two elements of information about the Import Address Table in a struct of the module given, the size of the table and the base address of it.

DWORD CalculateVirtualPageCount(IMP_AT IAT) - Calculates the number of virtual memory pages (or regions) that the size in bytes the Import Address takes up.

void ResolveIAT(LPCSTR FirstModule, LPCSTR CopyModule) - Resolves/corrects the Import Address Table for the CopyModule.

iatsolver's People

Contributors

johnsonjason avatar

Watchers

 avatar

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.