Git Product home page Git Product logo

mediaexplorer74 / apipeek Goto Github PK

View Code? Open in Web Editor NEW

This project forked from martinsuchan/apipeek

3.0 0.0 0.0 69.92 MB

Semi-mobile (W10M UWP + Console app set) system for creating and comparing API dumps, from different versions of Windows.

License: MIT License

C# 92.11% HTML 7.89%
api research reverse-engineering rnd uwp w10m windows10 windows10mobile project-astoria css reflection cli console-application

apipeek's Introduction

ApiPeek v1.0.0-alpha

About

The semi-mobile (UWP + Console app set) system for creating and comparing API dumps, from different versions of W10(M)...

Screenshots

A few words about the original ApiPeek

"

  • Purpose

"Library for creating and comparing API dumps, from different versions of Windows 10.
Sample API diff between Windows 10 1803 -> 1809.
Simplified API diff between Windows 10 1803 -> 1809 with only new types.
ApiPeek library can be used in Windows Phone 8.1+ and Windows 8.1+ projects.
ApiPeek.Compare tool is a simple Console tool in .NET 4.5.2.

  • The motivation

ApiPeek library was created in the Fall of 2014. My goal was to create a simple library for traversing all available OS API on the target device using Reflection and save the result as a group of simple JSON files, each representing one assembly, zipped together as a single ZIP file.

The second goal of this project was a tool for comparing two API dumps from two different OS versions. Initially I was able to create simple txt files with API diffs, later I upgraded the Comparer tool to generate sexy HTML tree diffs with collapsible sections.

"

Building the project

  • I used Visual Studio 2022 Preview (for) this cool reverse-engeneering tool.
  • SDK 19041 used; Min. Win. os build = 10240 (hello, "Project Astoria")

Creating API dumps

  • Just build the ApiPeek.App.UWP project, then deploy it into your mobile phone.

  • Run it on your windowsphone (i.e., Lumia 950 with os build 16212, or Lumia 640DS with "Astoria project")

  • Click the Start API Peek button and wait couple of seconds.
    File Save Picker shows up, select where you want to save the API dump = .zip file.

  • Send the result to your PC.

Comparing two API dumps

Currently the API compare process needs some manual steps.

It's necessary to unzip both API dumps inside the ApiPeek.Compare.App.Console project inside the api folder.

Don't forget to set the property Copy to Output Directory on extracted files to Always.

Then select the target folder names in the Program.cs like this and start the Console app:

string path1 = "win10.10586";
string path2 = "win10.14267";

The Console app runs for only few seconds and then it automatically saves the diff inside the bin/[Debug|Release]/html folder.

All API diffs I created so far are available here: https://github.com/martinsuchan/martinsuchan.github.io/tree/master/ApiPeek/Diffs
and can be browsed like this: https://martinsuchan.github.io/ApiPeek/Diffs/win10.14257.to.win10.14267.fulldiff.html

Known issues

First of all this tool was created as a weekend hackathon project and the code documentation is mostly non-existent, so please be warned before digging deeper how I done it :)
I plan to update the documentation some time in the future + also delete some no longer used pieces of code.

Currently the ApiPeek library does not collect all information about the available API Not supported features right now when traversing the API (non-exhaustive list):

  • overriden operators
  • constrains on generics
  • attributes on types
  • nested types

References

License

This project is licensed under the MIT License - see the LICENSE file for details

..

As is. No support. RnD only. DIY

.

MediaExplorer 2023

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.