Git Product home page Git Product logo

vipontools's Introduction

viponTools

Description

If you want to contribute or use my tools/libs, you are welcome!

Clone

git clone -c core.symlinks=true https://github.com/Vipon/viponTools

Setup environment

Windows

Scripts bellow will automatically download and install at least:

setup.bat

Need to add to PATH:

  • {INSTALL_DIR}\VC\Tools\Llvm\x64\bin
  • {INSTALL_DIR}\MSBuild\Current\Bin

Linux

./setup.sh

MacOS

./setup.sh

Configure, Build and Testing

GnuMake

Default for Linux: configure could be run without params.

./configure --gmake
cd output/
make -j
make test

Ninja

Alternative build system for all operation systems.

./configure --ninja
cd output/
ninja
ninja test

Visual studio

Default for Windows: configure could be run without params. Currently works only with "Visual studio 16 2019"

./configure --vs
cd output/
cmake --build .
ctest -C Debug

Default build is Debug. If you want to build Release with Visual Studo use the folowed code:

cmake --build . --config Release

XCode

Default for MacOsX: configure could be run without params.

./configure --xcode
cd output/
xcodebuild -scheme ALL_BUILD
xcodebuild -scheme RUN_TESTS

vipontools's People

Contributors

vipon avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

vipontools's Issues

setupEnv: add deps.txt for every instance.

Well known dependencies should be specified locally in directory with install.py scripts of instance.

It's allow users don't worry about this dependencies and concentrate on deps for their own project.

At the same time, if users need to add new deps to existed instance, they can do it via adding deps to main deps.txt or update instance specific deps.txt files. The first way should be preferable, because it's allow them to checkout setupEnv new versions without conflicts.

Complete PE relocation print

Need to finish coffGetRelAddr function.

Depends on Machine type and Relocation type need to get relocatable value (vaddr)

[OSX] Unknown bin format error on /bin/cp

Output

***@*** viponTools % sudo ./bin/binParser -h /bin/cp
ERROR: Cannot parse mach-o header
	/Users/runner/work/viponTools/viponTools/cTools/libs/binParse/machoParse/macho64Parse.c line 444

ERROR: Unknown bin format
	/Users/runner/work/viponTools/viponTools/cTools/tools/binParser/binParser.c line 96

Otool output:

***@*** viponTools % otool -h /bin/cp               
/bin/cp:
Mach header
      magic  cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
 0xfeedfacf 16777228          2  0x80           2    17       1544 0x00200085

Machine (system_profiler SPSoftwareDataType SPHardwareDataType):

Software:

    System Software Overview:

      System Version: macOS 13.3.1 (22E261)
      Kernel Version: Darwin 22.4.0
      Boot Volume: Macintosh HD
      Boot Mode: Normal
      Computer Name: ***
      User Name: ***
      Secure Virtual Memory: Enabled
      System Integrity Protection: Enabled
      Time since boot: 17 days, 3 hours, 4 minutes

Hardware:

    Hardware Overview:

      Model Name: MacBook Air
      Model Identifier: MacBookAir10,1
      Model Number: Z1250007MRU/A
      Chip: Apple M1
      Total Number of Cores: 8 (4 performance and 4 efficiency)
      Memory: 16 GB
      System Firmware Version: 8422.100.650
      OS Loader Version: 8422.100.650
      Serial Number (system): ***
      Hardware UUID: ***
      Provisioning UDID: ***
      Activation Lock Status: Enabled

setupEnv: add YAML support

Replace our own text format with YAML for setupEnv tool:

  • YAML is defacto some kind of industrial standard, so it's better than create new one.
  • Also YAML is simple enough and close to our text structure.

setupEnv: Port for macos

  • make setup.sh script for calling setupEnv tool.
  • make github actions for build, test and release project in different configurations.
  • Port ccache install for macos as part of setupEnv tool.
  • Port argp
  • Port capstone
  • Port keystone
  • cmake
  • ninja
  • remove old shell realization

Make binStaticMod

First functionality can be taken from install_name_tool

  • rename dynamic libs
  • change rpath
  • add rpath
  • remove rpath

Create binParser

binParse and args libs are successfully ported to all pfatforms. Time to create binParser tools.

  • make macho64Printer lib
  • create binParser tool

Create MOD_CODE

  • Macro MOD_CODE
  • Save information about modification point in code art compile time
  • Save information about hidden code at compile time
  • Init global mod_code pointer to a separate section with all information
  • MSVC workaround
  • Add MOD_CODE types: with_nops, without
  • Add modification with_nops
  • Add modification without.

setupEnv: add parameters for setup instances

Add parameters for setup instances:

  • version of instance (tools or library)
  • install directory

Installation scripts should have default version and install directory, and it can be changed:

  • Default version - the last known
  • Default directory depends on OS. For linux and MacOsX: ~/.local

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.