Skip to content
forked from NSEcho/gdylib

Add new LC_LOAD_[WEAK_]DYLIB and LC_RPATH

License

Notifications You must be signed in to change notification settings

xnucrack/gdylib

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gdylib

Module providing adding following load commands:

  • LC_LOAD_DYLIB
  • LC_LOAD_WEAK_DYLIB
  • LC_RPATH

Adding loads can be accomplished with keeping the old signature or removal of it. Module will check whether there is enough space for the new load and return ErrNotEnoughSpace if there is not enough.

This module is heavily inspired/guided by insert_dylib, install_name_tool projects.

Usage

package main

import (
	"github.com/lateralusd/gdylib"
	"io"
	"os"
)

func main() {
	r, err := gdylib.Run(os.Args[1], os.Args[2],
		gdylib.WithLoadType(gdylib.WEAK),
		gdylib.WithRemoveCodeSig(true))
	if err != nil {
		panic(err)
	}

	nf, err := os.Create(os.Args[3])
	if err != nil {
		panic(err)
	}
	defer nf.Close()

	io.Copy(nf, r)
}
$ go run main.go a.out @executable_path/FridaGadget.dylib new_file
$ otool -l new_file | tail
 datasize 0
Load command 16
          cmd LC_LOAD_WEAK_DYLIB
      cmdsize 64
         name @executable_path/FridaGadget.dylib (offset 24)
   time stamp 0 Thu Jan  1 01:00:00 1970
      current version 0.0.0
compatibility version 0.0.0

About

Add new LC_LOAD_[WEAK_]DYLIB and LC_RPATH

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%