Giter Site home page Giter Site logo

xanalyzer's Introduction

Contributions Welcome Build Status GitHub release Github Releases Github All Releases GitHub stars license

xAnalyzer is a plugin for the x86/x64 x64dbg debugger by @mrexodia. This plugin is based on APIInfo Plugin by @mrfearless, although some improvements and additions have been made. xAnalyzer is capable of doing various types of analysis over the static code of the debugged application to give more extra information to the user. This plugin is going to make an extensive API functions call detections to add functions definitions, arguments and data types as well as any other complementary information, something close at what you get with OllyDbg analysis engine, in order to make it even more comprehensible to the user just before starting the debuggin task.

Table Of Contents

Features

Some of the main features and improvements include:

  • Extended function calls analysis (over 13,000 API’s definitions from almost 200 DLL’s)

  • Defined and generic functions, arguments, data types and additional debugging info recognition.

  • Automatic loops detection.

  • User maintained definition files

Before xAnalyzer

After xAnalyzer

Download

Download HERE the latest release of the binaries

Installation

  1. Download the latest version of x64dbg

  2. Extract apis_def.zip

  3. Copy xAnalyzer.dp32/xAnalyzer.dp64 and the apis_def folder to the respective plugin directories in x64dbg

  4. Look under the "Plugins" menu in the main x64dbg window or in the secondary menu in the Disasm window as well for an "xAnalyzer" entry

  • If, after following the above steps can't see the menu entry under the "Plugins" menu, head to the "Log" tab and check for any message from the plugin that could give you an error solution hint

Configuration

xAnalyzer has some options to choose from in order to personalize even more the experience with it, to use it just when you need it and the way you wan it. The plugin options are as follows:

  • Automatic Analysis: When this option is ON, the plugin is going to launch a full automatic analysis over the executable code every time it reaches the entry point when loading on the debugger. By using this option you get the more closer OllyDbg initial analysis behavior on x64dbg.

  • Extended Analysis: This option is going to force xAnalyzer to make an extended analysis over the entire code section of the debugged executable. WARNING!!! By enabling this option the analysis process may take much more time and resources to complete, also larges amount of RAM memory might be used by x64dbg depending on the size of the section and the amount of extra data added to the debugged executable static disassembly

  • Analyze Undefined Functions: By selecting this option xAnalyzer will use generic analysis and argument types for all of those API Calls/Functions that are not defined in the api definition files and also calls like:

CALL {REGISTER}
CALL {REGISTER + DISPLACEMENT}
CALL {DYNAMIC_POINTER}

Usage

xAnalyzer has some commands and menu options to choose from when working with an executable:

Analyze Selection

By making a selection of several instructions in the disassembly windows of x64dbg and selecting this menu, a fast analysis will be made over the selected lines. You can also use the command xanal selection for launching this option or even set your own hotkeys for it in the x64dbg gui.

Analyze Function

If you are in the middle of some function you could use this menu entry to analyze that entire function and only that function. Taking your single selected instruction as a reference xAnalyzer will process from there all the lines inside a block of code. You could also use the command xanal function for launching this type of analysis or even set your own hotkeys for it in the x64dbg gui.

Analyze Module

This command it's going to launch a full analysis over the entire module. This feature takes the Extended Analysis option into consideration for the depth of analysis to be used. You could use the command xanal module to execute it as well or even set your own hotkeys for it in the x64dbg gui.

Remove Analysis Menus

In these cases, all of these menus are going to make the opposite of what the previous commands did. In case you want to get rid of the analysis extra information in some parts of the code or in the entire executable if wished. You could also use the commands: xanalremove selection/function/module

API Definition Files

xAnalyzer has an expandable system of API definition files, these files are present in the folders "api_def" and "api_def/headers" which should contain all the files with a .ini structure and with the norm of:

  • "filename": This is the name of the module on which the API function is located in.

  • "filename.h": This is the header containing type data (flags and enums) related information

  • ".api" extension: Specifies that it is a definition file, no other extension will be recognized (kernel32.api, shell32.api, etc)

All these ini files contain important information for the plugin such as, the functions prototypes, argument types, etc. All of this information is used by xAnalyzer in order the set the extra information on the static code. A single entry in any of these files would be like:

File user32.api

[MessageBox]
1=HANDLE hWnd
2=LPCTSTR lpText
3=LPCTSTR lpCaption
4=[MessageBoxType] uType
ParamCount=4
Header=shell.h.api;
@=MessageBox

File shell.h.api

[MessageBoxType]
TypeDisplay=UINT
Base=UINT
Type=Flag
Const1=MB_ABORTRETRYIGNORE
Value1=0x00000002
Const2=MB_CANCELTRYCONTINUE
Value2=0x00000006
Const3=MB_HELP
Value3=0x00004000
Const4=MB_OK
Value4=0x00000000
Const5=MB_OKCANCEL
...

Any argument between brackets means that this is an specific data type (enum or binary flags) and that this will be defined in the proper .h header file specified in the key "Header".

As for the header file the scheme is pretty much the same just a couple of keys there, like "TypeDisplay". This specify the proper data type to display in the dbg comment, then it comes "Base", and it will point to the base data type used by the main entry, in case there´s a linked data type, this could be between brackets as well. "Type" key is the type of data structure this is and it can be "Flag" or "Enum". Finally all the variable names and values come along.

If you find that a certain API call definition is not being detected or not detected correctly by xAnalyzer it might mean that it's not present in the definition files or that it is defined incorrectly, so in this case an addition or modification could be made to include any missing function or arguments as long as the same structure is followed it may be 100% customizable.

Known issues and limitations

  • First undefined call with generic arguments in a function will not be processed, unless it's preceded by a jump, since there's no way to tell how many arguments to use without illegaly using the function prolog instructions. Only docummented calls will be processed at the begining of a function or an undefined function that has been presided by a jump.

  • Some "uncommon" functions have arguments among jumps, so according to the actual desgin of the plugin (no jumps among functions arguments) these calls won't be processed, since each time a jump is found the instructions in the stack are cleaned.

  • Nested calls will work correctly only when:

    1-) Inner call is defined
    2-) If inner undefined call takes no more arguments of the stack than the arguments needed by the outter call

  • It only detects loops inside functions (function boundaries Prologs/RETs). If a function contains a RET in the middle of its code it will be detected as a function end and the loops stack is cleared.

  • Analysis could fail if the executable being debugged has multiple dots in its name

  • Incorrect loop detection for a section with an non-conditional jump inside it (See #7)

  • Nested argument lines (xAnalyzer has support for nested arguments but x64dbg at the moment doesn't)

To-Do Long-Term

  • Add entropy analysis

  • Flow analysis scanning instead of linear (trace emulation)

  • Case-Switch detection

Version History

xAnalyzer 2.5.4
- Updated project to VS2017
- Fixed issues when processing argument instructions involving the stack pointer (x64 version).
- Fixed incorrect arguments order involving the stack pointer (x64 version).
- Fixed bug on undefined functions' arguments recognition that duplicated registers as different arguments (x64 version)
- Changed undefined call args recognition, it will only predict up to 4 undefined args by default (x86 version)
- Some code refactoring

xAnalyzer 2.5.3
-Detection of function names in newer versions of x64dbg fixed

xAnalyzer 2.5.2
-Used current selected disasm line for module analysis instead of cip
-Modified some typing in plugin entries
-Some code refactoring
-Modified command "xanal/xanalremove exe" to "xanal/xanalremove module"

xAnalyzer 2.5.1
-Fixed crash on mov instructions variations

xAnalyzer 2.5.0
-Removed [EBP+/-] instructions as possible function caller arguments
-Removed prefix "0x" of all function arguments values since hexadecimal is inferred
-Fixed arguments where pointer variables wouldn't show correctly as pointers but as base data type instead
-Added recognition of stack pointer usage (ESP) as possible argument for function calls (x86)
-Added use of accurate data type name in arguments instead of generic/base data type name
-Added function smart tracking feature (Smart prediction and recognition of indirect function calls like: CALL {REGISTER}, CALL {POINTER})
-Added name of function pointers as parameters (the entire function name, if detected, will be used instead of just the address)

xAnalyzer 2.4.3
- Added recognition of MOV instructions on x86
- Added recognition of functions with "Stub" suffix
- Fixed bug on "auto analysis" (added more EP check conditions)
- Clear Auto Comments/Auto Labels options checked now by default

xAnalyzer 2.4.2
- Fixed BoF when argument flags comment overpassed MAX_COMMENT_SIZE
- Fixed function name search bug when definition lies in a second .api file

xAnalyzer 2.4.1
- Added a new hotkeys scheme
- Added new options to control which previous analysis data should be erased. (This gives the possibility to work seamlessly with map loader plugins like SwissArmyKnife, etc).
- Added new commands (old ones have been deprecated)
xanal selection : Performs a selection analysis
xanal function : Performs a function analysis
xanal exe : Performs an entire executable analysis
xanalremove selection : Removes a previous selection analysis
xanalremove function : Removes a previous function analysis
xanalremove exe : Removes a previous entire executable analysis
xanal help : Brings up to the log window some help text
- Fixed automatic analysis not launching on startup (Closes #18 )
- Fixed various api definition files (Closes #17 )

xAnalyzer 2.4
- New and improved API definition files with a slightly modified scheme (13,000 API’s from almost 200 DLL’s)
- Symbols recognition system for each API definition argument used (1000+ enums data types and 800+ flags)
- Recognition of params data types (BOOL, NUMERIC, NON-NUMERIC)
- VB "DllFunctionCall" stubs detection
- Strings passed as arguments are cleaner now (debugger comments now have the address part stripped)
- Execution Summary added to log window
- Hotkeys feature removed (will be incorporated in future revisions) due some conflicting with x64dbg
- Various bugs fixed

xAnalyzer 2.3.1
- Fixed bug when launching "Analyze Selection" menu with a single line selected, what caused an abrupt dbg exception (thanks to @blaquee)
- Check if the definition files folder "apis_def" and definition files exist inside it before loading the plugin
- Changed hot keys to Ctrl+Shift+X for selection and Ctrl+X for functions

xAnalyzer 2.3
- Added option "Analyze undefined functions". (OFF by default, anything that's not in definition files is not analyzed)
- Added option "Automatic analysis" (OFF by default, make analysis on launch at EP of debugged executable)
- Added feature "Analyze Selection" (Makes a selected instructions analysis, it supports multiple selected calls)
- Added feature "Analyze Function" (Makes an automatic discovery and analysis of the current function from the selected address)
- Added feature "Remove Analysis" from Selection/Function/Executable
- Added command shortcuts
- Added new icons
- Added saving configuration to .ini file
- Added capitalization of hexadecimal argument values
- Restructured feature "Analyze Executable" (Makes a full analysis of the current executable)
- Restructured menus
- New about dialog now shows the version number to keep track of updates
- Some small bug fixes
- Fixed and merged some API definition files
- Speed and stability improvements

xAnalyzer 2.2
- Added analysis progress indicator
- Added new analysis depth mode
-Now automatic analysis is only executed if no backup database is present
- Bugs fixed

xAnalyzer 2.1
- Generic arguments for undefined functions and internal subs
- Smart function comments and arguments (only functions with arguments on stack are being processed). This allows xAnalyzer to give a cleaner sight of the code by just processing and commenting those functions with actual arguments
- Detection of indirect function calls with scheme CALL -> DYNAMIC_MEMORY -> API
- Detection of indirect function calls with scheme CALL -> REGISTER/REGISTER + DISPLACEMENT -> API
- Detection of indirect function calls with scheme CALL -> JMP -> JMP -> API
- Automatic loops detection
- Fixed minors bugs
- Code rearrangements

xAnalyzer 2.0
- Support for x64 bits
- Support API call arguments order changes in x64 bits
- Support PDB files extra info in API calls
- Support of direct/indirect API calls
- Support of static API functions calls to main module code
- Fixed several wrong API calls arguments order in definition files. More calls can now be detected and commented properly
- Some improvements and better written code
- Various bugs solved

xAnalyzer 1.2
- Updated the API's definition files
- Added support to vc6+ executables

xAnalyzer 1.1
- Fixed issue that didn't show API's info on VC++ executables due to not properly cleaning BASIC_INSTRUCTION_INFO structures before/after using them in a loop
- Added/Updated the API's definition files
- Bugs fixed

xAnalyzer 1.0
- Initial Release

Contributing Guidelines

Contributions of all kinds are welcome, not only as PR but also as bugs reporting, documentation, etc.

Please keep the following in mind:

  • Bug Reports: Make sure you're running the latest versions of the plugin and x64dbg, also make sure you have no other plugins loaded but xAnalyzer plugin. If the issue(s) still persist: please open a clearly documented issue with a clear title and as much information as possible in order to replicate the issue and give it solution.

Thanks for using xAnalyzer plugin...and Happy Reversing to All!

xanalyzer's People

Contributors

herz3h avatar justanotheranonymoususer avatar mattiwatti avatar mrexodia avatar thundercls 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  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  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  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  avatar

xanalyzer's Issues

x32dbg crash when analyzing module

Even after turning all extra options off, some applications cause x32dbg to crash when either doing xAnalyzer -> Analyze Module, or when enabling Automatic Analysis.
The status bar reaches [xAnalyzer]: Doing extended analysis...98%, after which x32dbg crashes without an error message.

The only information about the crash I can find is in the Event Viewer:
image

Example application causing the crash: https://crackinglessons.com/crackme-9/

xAnalyzer is not showing up under "Plugins"

Tryed using newest and older versions of x64.
Using dowloaded bin & compiled by myself. Sadly the plugin does not appear under the "Plugins" in x64!

Does anyone know how to fix?

Can't work on x64dbg

My x64dbg version is 2017-12-26-13-39, and the xAnalyzer is 2.4.3.

I get nothing output on the Disassambler Window after finishing the installation and then analyzing an exe file.

What's the problem? Do I miss some necessary step?

Info about API arguments when CIP is in API CALL

Hi, very good and useful project,

I have a new suggestion for the project.

Add a new window (or modify the actual args window) when CIP is in the API CALL.

When CIP is in API (or CIP is in a CALL API instruction), you know exactly the location of ARGS (Stack, registers etc). Then you can show this useful info in a friendly-way (like OllyDbg).

This feature can be very useful when the analysis make mistakes and you are debugging.

Something like this image (But we need other way because x64 call convention):

olly creatfile

Support for Extended ASCII Codes

Hi!

XAnalyzer is not updating the function parameters, even with automatic analysis on. If I modify a string, the debugger x32dbg, apparently, takes the previous code that is in the DB folder. All cleaning options are on. Is there a solution? Is it possible for XAnalyzer to recognize all ASCII table characters? For instance: recognizing strings like 0x82, 0xA0, etc. I'm using the latest version of x64dbg and xAnalyzer.

Thanks.

removed from comments

Hi !
Why use the analysis field reviews - DbgSetCommentAt ?
Very inconvenient to search and sort your notes.
There are also other types of data:
DbgSetAutoCommentAt
DbgSetAutoLabelAt
Otherwise, thanks, missed the structuring of call system functions...)))

Function not detected

I was just trying this on some gdi32 code and it doesn't detect e.g. BitBlt although it should:

unbenannt

The other functions are detected though. When manually analysing the section with the function the log shows 0 for all "defined/undefined functions detected"

Add dynamically resolved calls support

Hi, nice project!I was debugging a upxed exe and I found that sometimes the plugin was unable to parse and comment the Win32 api.

pic1

and I've tried all the options in the plugin and menu in the right click section, but in vain.

pic1

pic1

I am expecting something like that in olly:

pic1

Is that a feature unsupported ? Or I misconfigured something so it doesn't work. Any help would be appreciated.

Cannot remove old non-relevant analysis

If I analyze an image and it gets updated afterwards, I see leftovers which are impossible to remove. That's even though I use the "Clear Previous Data" (auto) setting.

image
image

Extended analysis on larger modules crashes the debugger and debuggee.

Doing an extended analysis with x32dbg on slightly larger modules crashes the debugger and debuggee for me. A message box with the error Could not allocate memory (minidump will be created) appears, followed by two more message boxes, which both show MiniDumpWriteDump failed. Error: 2147942408. After that, the debugger and debuggee silently close.

This was tested on a 9mb dynamic library and the crash occurred around 95% of the extended analysis. It works fine for smaller libraries loaded by the same executable, but also happened during the analysis of other executables/DLLs which are slightly larger.

I'm using the latest x32dbg snapshot on Windows 10. Here are my xAnalyzer settings:

[settings]
analysis_extended=true
analysis_undefunctions=true
analysis_auto=true
clear_usercomments=false
clear_userlabels=false
clear_autocomments=true
clear_autolabels=true
track_undef_functions=true

x64dbg Oct 2 2020 - plugin load error

screenshot

The procedure entry point TitanGetProcessInformation could not be located in the dynamic link library C:\Users\user\Desktop\bin\x96dbg\release\x64\plugins\xAnalyzer.dp64.

Automatic Analysis wont fire if database exists but is empty

If a database for a debuggee target exists already but is empty - say with the dbclear command (which leaves just the hash value in the database and no labels, comments, breakpoints etc approx file is 57 bytes in size) then when automatic analysis option is checked and debuggee target reaches entrypoint the auto analysis with instead fetch from the database (which is empty) and thus will not trigger the auto analysis.

If the database file is deleted then the auto analysis option will fire correctly as if it is a first time view of the debuggee target.

full exe analysis does not work properly on x64 bit dbg

Selecting to analyse specific function works well - everything is populated properly

However when selecting to "Analyze Executable" - it completes analysis and then shows a brief glimpse of the commented code, then just deletes it?? No function defining black bars either...

Only tested on x64 version not sure about the x32 one

Version

Please also display the current xAnalyzer version in the "About" message box.
Feel free to close if this is unnecessary.
Thanks for your work.

Change key bindings for forced analysis

May be it will be better to use Ctrl-X for function and Ctrl-Shift-X for selectiob analysis?

Shift pressing is more usual in hotkeys that are working with selection and function analysis is used more often so hotkey should be shorter.

Strings not showing like in Olly

Hello, tried first time your plugin (https://github.com/ThunderCls/xAnalyzer/releases/tag/2.5.2) with x64 (version released 02.2018).
And didnt got anything like olly shows, image linked:
https://snag.gy/kLEDOg.jpg

Anything I'm doing wrong? Was expecting to see the same like olly shows string: Text="You did it ! U r the man.."

XAnalyzer using these options for 32 app:

  • Automatic analysis=on
    +Extended analysis=on
    +Analise undefined functions=on
    +Function smart tracking=on

Extended Analysis creating way too many comments

Every called function found is added as a regular comment, so much so that (64-bit) x64dbg straight up crashes when trying to look at your comment list after analysing any average commercial-sized binary.

Why are they added as comments? I rely on comments for things I find during reversing, Seeing literally thousands of "sub_xxxxxxxx," or even Windows APIs, doesn't help me at all. If you wanted just known API calls, you can use the built-in Search For -> Intermodular Calls. If you wanted to know what calls something, you have xrefs. Currently xAnalyzer is really destructive if you run it on a pre-commented file as it floods your comment list. I'm curious what this feature was intended for though?

I think they should be added as Auto Comments rather than normal Comments as the arguments are, as they're hidden from your comment list. It's easily done by changing https://github.com/ThunderCls/xAnalyzer/blob/master/xAnalyzer/xanalyzer.cpp#L1213 to use DbgSetAutoCommentAt(). If the current behaviour is needed, can it be added as a config option, preferably disabled by default?

Also as a random extra, could we have a "custom_def" folder alongside "apis_def," because adding a bunch of APIs into that huge folder is a bit of a pain. You don't always know what's yours and can be hard to find what you've done later on, there's 202 files in there currently as-is. Maybe nest the OS APIs a level deeper or something. Would be nice to use a clean folder for your own custom stuff.

I only recently found xAnalyzer and it's amazing, keep up the great work!

DefWindowProc doesnt resolve correctly

The DefWindowProc defintion in the user32.api def files doesnt pick up this defintion, but just shows as Arg4, Arg3, Arg2, Arg1, DefWindowProcA instead.

Think i seen similar behaviour with couple other apis, cant recall which ones of the top of my head (maybe CallWindowProc) meant to mention this a while back but forgot to do so

Incorrectly parsing argument order

Thunder,
The argument order of the xAnalyzer output is incorrect where this assembly is concerned.

SNAG-0002

If you need more information or the binary, let me know.

Best,
Colin

Plugin error

I tried the latest release in two snapshots(26-Dec & 22-Dec). In both the snapshots, there was no menu entry for the plugin. The second snapshot(22 Dec) crashed for the first two times I executed it, after then it started but there was no menu entry for the plugin. Same for the context menu of the disassembler(for both snapshots).

This applies for both x32 & x64.

asdsa

Man!!! Can't wait to try your new release. :-)

Integrate xAnalyzer in x64dbg's CPUArgumentWidget

As discussed in #26


All argument-parsing by xAnalyzer is more like a prediction and kind of uncertain until the call is reached at execution-time. Therefore it would be nice to enhance xAnalyzer such that it manipulates the Argument Widget (between Stack and Register View):

1: [esp]    PVOID HeapHandle 00000020 
2: [esp+4]  ULONG Flags      00000020 
3: [esp+8]  PVOID HeapBase   00000000 
4: [esp+C]  00000024 <-- automatically removed or greyed out by xAnalyzer
5: [esp+10] 00000001 <-- automatically removed or greyed out by xAnalyzer

خطأ

لم ينجح التحليل اصلا xanalyzer installed but not work ! Last x64dbg last xanalyzer

it will crash in x32dbg, maybe you didn't test well before release.

问题签名:
问题事件名称: BEX
应用程序名: x32dbg.exe
应用程序版本: 0.0.2.5
应用程序时间戳: 584095c2
故障模块名称: xAnalyzer.dp32
故障模块版本: 0.0.0.0
故障模块时间戳: 583cf68d
异常偏移: 00006494
异常代码: c0000417
异常数据: 00000000
OS 版本: 6.1.7601.2.1.0.256.1
区域设置 ID: 2052
其他信息 1: 6fe6
其他信息 2: 6fe607cdfc3455c9c2a2b9fdb8b2fcac
其他信息 3: aa4e
其他信息 4: aa4e28b4d7c0a2f44c9b912fc3b2a0c3

联机阅读隐私声明:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0804

如果无法获取联机隐私声明,请脱机阅读我们的隐私声明:
C:\Windows\system32\zh-CN\erofflps.txt

Incorrect parameter detection

See the screenshot below. The arguments are detected for sub_1400091C0, even though the call of CoInitializeEx invalidates the registers.

image_137

Cant be installed on last version!!

D:\Cracking\x64\release\x64\plugins\apis_def\apis_def.zip - Line: 1
Check the malformed file/line and try again...exiting plugin initialization!

LOG

A crash report

Hi, and thanks for the great plugin!

I'd like to report a crash, which happens here on this line:
The GetInstructionSource function returns NULL for the command cmovns esp, esp, which eventually crashes the debugger.

dont know why,it didnt work on my PC

x64dbg version:snapshot_2018-04-05_00-33.zip
xAnalyzer version: 2.5.0
cant find it in the "Plugins" menu and in the secondary menu in the Disasm window

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.