mirror of
https://github.com/indetectables-net/toolkit.git
synced 2025-05-08 03:26:30 +00:00
New project structure and tools
This commit is contained in:
parent
c9c4ea6b98
commit
8cbe73e4c9
@ -4,11 +4,12 @@
|
||||
|
||||
### Added
|
||||
|
||||
- Add SendTo+
|
||||
- Add Updater auto-config-tools exe
|
||||
- Add Updater Task Schedule example
|
||||
- Add HashMyFiles
|
||||
- Add Threadtear
|
||||
- Add Hollows Hunter
|
||||
- Add Hollows Hunter
|
||||
|
||||
### Changed
|
||||
|
||||
@ -19,6 +20,7 @@
|
||||
- Fix w32Dasm uncompress structure
|
||||
- Fix update via last commit regex
|
||||
- Delete NFO-Tools sub folder
|
||||
- Change project structure
|
||||
|
||||
### Removed
|
||||
|
||||
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
BIN
bin/loader/appicon.ico
Normal file
BIN
bin/loader/appicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.5 KiB |
BIN
bin/loader/loader.exe
Normal file
BIN
bin/loader/loader.exe
Normal file
Binary file not shown.
73
bin/loader/loader.nsi
Normal file
73
bin/loader/loader.nsi
Normal file
@ -0,0 +1,73 @@
|
||||
!include FileFunc.nsh
|
||||
!include LogicLib.nsh
|
||||
|
||||
var RAW_PARAMS
|
||||
var PACK_PARAM
|
||||
var EXE_PARAM
|
||||
var FOLDER_NAME
|
||||
var OUTPUT_PATH
|
||||
|
||||
; general options
|
||||
name "loader"
|
||||
Icon "appicon.ico"
|
||||
SilentInstall silent
|
||||
OutFile "loader.exe"
|
||||
RequestExecutionLevel user
|
||||
SetCompressor /SOLID lzma
|
||||
CRCCheck on
|
||||
|
||||
; exe info
|
||||
VIProductVersion "1.0.0.0"
|
||||
VIAddVersionKey /LANG=1033 "ProductName" "loader"
|
||||
VIAddVersionKey /LANG=1033 "FileDescription" "7z file loader"
|
||||
VIAddVersionKey /LANG=1033 "FileVersion" "1.0.0.0"
|
||||
VIAddVersionKey /LANG=1033 "LegalCopyright" "2021"
|
||||
|
||||
Function .onInit
|
||||
; read exe params
|
||||
${GetParameters} $RAW_PARAMS
|
||||
${GetOptions} $RAW_PARAMS "/PACK=" $PACK_PARAM
|
||||
${GetOptions} $RAW_PARAMS "/EXE=" $EXE_PARAM
|
||||
${GetOptions} $RAW_PARAMS "/OUTPUT=" $OUTPUT_PATH
|
||||
|
||||
; error control
|
||||
${If} $PACK_PARAM == ""
|
||||
MessageBox MB_ICONEXCLAMATION "Missing default params:$\r \
|
||||
/PACK=7z_path.7z$\r \
|
||||
/EXE=exe_to_run.exe$\r \
|
||||
/OUTPUT=overwrite_default_path"
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
; generate temp folder name
|
||||
; install first https://nsis.sourceforge.io/Crypto_plug-in
|
||||
${If} $OUTPUT_PATH == ""
|
||||
Crypto::HashData "SHA1" $PACK_PARAM
|
||||
Pop $FOLDER_NAME
|
||||
StrCpy $OUTPUT_PATH "$TEMP\loader-$FOLDER_NAME"
|
||||
${EndIf}
|
||||
FunctionEnd
|
||||
|
||||
; script
|
||||
Section ""
|
||||
; create dir
|
||||
SetOutPath "$OUTPUT_PATH"
|
||||
SetOverwrite on
|
||||
|
||||
; debug
|
||||
;MessageBox MB_OK "$PACK_PARAM"
|
||||
;MessageBox MB_OK "$OUTPUT_PATH\$EXE_PARAM"
|
||||
|
||||
; unpack
|
||||
; install first https://nsis.sourceforge.io/Nsis7z_plug-in
|
||||
Nsis7z::Extract "$PACK_PARAM"
|
||||
|
||||
${If} $EXE_PARAM != ""
|
||||
; exec...
|
||||
Execwait "$OUTPUT_PATH\$EXE_PARAM"
|
||||
|
||||
; cleanup
|
||||
SetOutPath "$TEMP"
|
||||
RMDir /r "$OUTPUT_PATH"
|
||||
${EndIf}
|
||||
SectionEnd
|
21
bin/sendto/LICENSE
Normal file
21
bin/sendto/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2017 lifenjoiner
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
16
bin/sendto/make-vc.bat
Normal file
16
bin/sendto/make-vc.bat
Normal file
@ -0,0 +1,16 @@
|
||||
@echo off
|
||||
setlocal ENABLEDELAYEDEXPANSION
|
||||
pushd %~dp0
|
||||
|
||||
set appname=sendto+
|
||||
set arch=
|
||||
for /f "usebackq delims=" %%i in (`"cl.exe 2>&1"`) do (
|
||||
if "!arch!"=="" (
|
||||
set arch=%%i
|
||||
set arch=!arch:~-2!
|
||||
)
|
||||
)
|
||||
|
||||
cl.exe /MD /Os /DUNICODE /D_UNICODE /Fe%appname%_x%arch%.exe %appname%.c Ole32.lib shell32.lib user32.lib Comdlg32.lib Shlwapi.lib gdi32.lib gdiplus.lib bufferoverflowU.lib
|
||||
|
||||
popd
|
52
bin/sendto/readme.md
Normal file
52
bin/sendto/readme.md
Normal file
@ -0,0 +1,52 @@
|
||||
# sendto+: Send what sent to me to my sendto
|
||||
|
||||
Windows XP 之后,右键菜单“发送到”不再具有以文件夹实现分组的功能了。sendto+ 程序就是为你重新实现这个功能的。甚至,它也可以当作启动器来用。
|
||||
|
||||
After Windows XP, there is NO grouping shortcuts in directories feature anymore for context menu 'sendto'. sendto+ is a tool insists to get it back. And more, it can be used as a launcher.
|
||||
|
||||
sendto+ 不修改系统文件和进程。它需要的只是多一次点击。对我来说还是挺好的 ;p
|
||||
|
||||
sendto+ doesn't modify any file or process of the system. It just need your one more click. Acceptable to me ;p
|
||||
|
||||
## 用法/Usage:
|
||||
|
||||
1. 在程序目录下,创建"sendto"文件夹,并组织你的快捷方式。
|
||||
|
||||
Create a 'sendto' directory in the same directory as sendto+ program, and then organize the the shortcuts with sub-directories.
|
||||
|
||||
Grouping shortcuts
|
||||
|
||||

|
||||
|
||||
2. 在系统的"sendto"文件夹,创建 sendto+ 的快捷方式。
|
||||
|
||||
Create a shortcut in the system sendto directory.
|
||||
|
||||

|
||||
|
||||
3. 用右键菜单时,发送到 sendto+,就会出现第1步中组织的菜单了。
|
||||
|
||||
When you want to use the sendto, send the selection to 'sendto+', then there will be the menu organized in groups of step 1.
|
||||
|
||||

|
||||

|
||||
|
||||
4. 在桌面或者快速启动栏创建快捷方式,运行后可以当作启动器。
|
||||
|
||||
Create a shortcut of sendto+ onto the desktop or quick launch bar, then it can be run as a launcher.
|
||||
|
||||

|
||||
|
||||
## 注意/Tips:
|
||||
- 64位系统需要用64位版本的程序。
|
||||
|
||||
64 bit OS needs 64 bit version to work correctly.
|
||||
|
||||
## 其它/Others
|
||||
Build: MSVC, run the bat file.
|
||||
|
||||
Download: [https://github.com/lifenjoiner/sendto-plus/releases](https://github.com/lifenjoiner/sendto-plus/releases)
|
||||
|
||||
Author: [https://github.com/lifenjoiner](https://github.com/lifenjoiner)
|
||||
|
||||
Licensing: See the license file.
|
475
bin/sendto/sendto+.c
Normal file
475
bin/sendto/sendto+.c
Normal file
@ -0,0 +1,475 @@
|
||||
/* cl.exe /MD /Os /DUNICODE /D_UNICODE sendto+.c Ole32.lib shell32.lib user32.lib Comdlg32.lib Shlwapi.lib
|
||||
tcc sendto+.c -DUNICODE -D_UNICODE -DMINGW_HAS_SECURE_API -DINITGUID -lshell32 -lole32 -lshlwapi -lComdlg32 -lgdi32 -lgdiplus
|
||||
|
||||
https://msdn.microsoft.com/en-us/library/cc144093.aspx
|
||||
https://msdn.microsoft.com/en-us/library/windows/desktop/bb776914.aspx
|
||||
https://msdn.microsoft.com/en-us/library/windows/desktop/bb776885.aspx
|
||||
GetCurrentDirectory()
|
||||
|
||||
64-bit
|
||||
Wow64EnableWow64FsRedirection() only for system32;
|
||||
lnk file with parameters need 64-bit version!
|
||||
*/
|
||||
|
||||
#define STRICT
|
||||
|
||||
#ifndef UNICODE
|
||||
#define T_MAX_PATH MAX_PATH
|
||||
#else
|
||||
#define T_MAX_PATH 32767
|
||||
#endif
|
||||
|
||||
#include <tchar.h>
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#include <windowsx.h>
|
||||
#include <shlobj.h>
|
||||
#include <shlwapi.h>
|
||||
#include <commdlg.h>
|
||||
|
||||
// tcc, any other compiler support wWinMain() and '__argc/__targv'
|
||||
// shlguid.h
|
||||
DEFINE_GUID(IID_IDropTarget, 0x00000122, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
|
||||
DEFINE_GUID(IID_IDataObject, 0x0000010e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
|
||||
|
||||
#define WINGDIPAPI __stdcall
|
||||
#define GDIPCONST const
|
||||
|
||||
typedef enum GpStatus {
|
||||
Ok = 0,
|
||||
GenericError = 1,
|
||||
InvalidParameter = 2,
|
||||
OutOfMemory = 3,
|
||||
ObjectBusy = 4,
|
||||
InsufficientBuffer = 5,
|
||||
NotImplemented = 6,
|
||||
Win32Error = 7,
|
||||
WrongState = 8,
|
||||
Aborted = 9,
|
||||
FileNotFound = 10,
|
||||
ValueOverflow = 11,
|
||||
AccessDenied = 12,
|
||||
UnknownImageFormat = 13,
|
||||
FontFamilyNotFound = 14,
|
||||
FontStyleNotFound = 15,
|
||||
NotTrueTypeFont = 16,
|
||||
UnsupportedGdiplusVersion = 17,
|
||||
GdiplusNotInitialized = 18,
|
||||
PropertyNotFound = 19,
|
||||
PropertyNotSupported = 20,
|
||||
ProfileNotFound = 21
|
||||
} GpStatus;
|
||||
|
||||
typedef DWORD ARGB;
|
||||
typedef void GpBitmap;
|
||||
typedef void *DebugEventProc;
|
||||
typedef GpStatus (WINGDIPAPI *NotificationHookProc)(ULONG_PTR *token);
|
||||
typedef VOID (WINGDIPAPI *NotificationUnhookProc)(ULONG_PTR token);
|
||||
|
||||
typedef struct GdiplusStartupInput {
|
||||
UINT32 GdiplusVersion;
|
||||
DebugEventProc DebugEventCallback;
|
||||
BOOL SuppressBackgroundThread;
|
||||
BOOL SuppressExternalCodecs;
|
||||
} GdiplusStartupInput;
|
||||
|
||||
typedef struct GdiplusStartupOutput {
|
||||
NotificationHookProc NotificationHook;
|
||||
NotificationUnhookProc NotificationUnhook;
|
||||
} GdiplusStartupOutput;
|
||||
|
||||
GpStatus WINGDIPAPI GdiplusStartup(ULONG_PTR *, GDIPCONST GdiplusStartupInput *, GdiplusStartupOutput *);
|
||||
VOID WINGDIPAPI GdiplusShutdown(ULONG_PTR);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromHICON(HICON hicon, GpBitmap **bitmap);
|
||||
GpStatus WINGDIPAPI GdipCreateHBITMAPFromBitmap(GpBitmap *bitmap, HBITMAP *hbmReturn, ARGB background);
|
||||
VOID WINGDIPAPI GdipFree(VOID *);
|
||||
|
||||
#define IDM_SENDTOFIRST 0
|
||||
|
||||
TCHAR *g_FOLDER_SENDTO;
|
||||
TCHAR **g_PSENDTO; /* Store the shourtcuts full path */
|
||||
UINT g_idm = IDM_SENDTOFIRST;
|
||||
|
||||
HBITMAP *g_hBmpImageA; /* MenuItemBitmap */
|
||||
|
||||
HINSTANCE g_hinst; /* My hinstance */
|
||||
HMENU g_hmenuSendTo; /* My SendTo popup */
|
||||
LPSHELLFOLDER g_psfDesktop; /* The desktop folder */
|
||||
|
||||
UINT g_FORKING = 0; /* compatible with UAC focus changes */
|
||||
|
||||
LPSHELLFOLDER PIDL2PSF(LPITEMIDLIST pidl)
|
||||
{
|
||||
LPSHELLFOLDER psf = NULL;
|
||||
|
||||
if (pidl) {
|
||||
g_psfDesktop->lpVtbl->BindToObject(g_psfDesktop, pidl, NULL, &IID_IShellFolder, (LPVOID *)&psf);
|
||||
}
|
||||
return psf;
|
||||
}
|
||||
|
||||
LPITEMIDLIST PidlFromPath(HWND hwnd, LPCTSTR pszPath)
|
||||
{
|
||||
LPITEMIDLIST pidl;
|
||||
ULONG ulEaten;
|
||||
DWORD dwAttributes;
|
||||
HRESULT hres;
|
||||
WCHAR *wszName;
|
||||
|
||||
wszName = calloc(T_MAX_PATH + 1, sizeof(WCHAR));
|
||||
#ifdef UNICODE
|
||||
if (wcslen(pszPath) >= T_MAX_PATH) {return NULL;}
|
||||
wcscpy(wszName, pszPath);
|
||||
#else
|
||||
if (!MultiByteToWideChar(CP_ACP, 0, pszPath, -1, wszName, T_MAX_PATH)) {
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
hres = g_psfDesktop->lpVtbl->ParseDisplayName(g_psfDesktop, hwnd, NULL, wszName, &ulEaten, &pidl, &dwAttributes);
|
||||
free(wszName);
|
||||
if (FAILED(hres)) {
|
||||
return NULL;
|
||||
}
|
||||
return pidl;
|
||||
}
|
||||
|
||||
LPSHELLFOLDER GetFolder(HWND hwnd, LPCTSTR pszPath)
|
||||
{
|
||||
LPITEMIDLIST pidl;
|
||||
|
||||
pidl = PidlFromPath(hwnd, pszPath);
|
||||
return PIDL2PSF(pidl);
|
||||
}
|
||||
|
||||
HRESULT GetUIObjectOfAbsPidls(HWND hwnd, LPITEMIDLIST *pidls, INT NumOfpidls, REFIID riid, LPVOID *ppvOut)
|
||||
{
|
||||
LPITEMIDLIST *pidlLasts;
|
||||
LPSHELLFOLDER psf;
|
||||
HRESULT hres;
|
||||
INT i;
|
||||
|
||||
*ppvOut = NULL;
|
||||
pidlLasts = malloc(sizeof(LPITEMIDLIST) * NumOfpidls);
|
||||
if (pidlLasts == NULL) return E_FAIL;
|
||||
|
||||
for (i = 0; i < NumOfpidls; i++) {
|
||||
hres = SHBindToParent(pidls[i], &IID_IShellFolder, (LPVOID *)&psf, (LPCITEMIDLIST *)&pidlLasts[i]);
|
||||
if (FAILED(hres)) goto Fail;
|
||||
if (i < NumOfpidls - 1) psf->lpVtbl->Release(psf);
|
||||
}
|
||||
hres = psf->lpVtbl->GetUIObjectOf(psf, hwnd, NumOfpidls, pidlLasts, riid, NULL, ppvOut);
|
||||
Fail:
|
||||
psf->lpVtbl->Release(psf);
|
||||
return hres;
|
||||
}
|
||||
|
||||
HRESULT GetUIObjectOfPaths(HWND hwnd, LPCTSTR *pszPaths, INT NumOfPaths, REFIID riid, LPVOID *ppvOut)
|
||||
{
|
||||
LPITEMIDLIST *pidls;
|
||||
HRESULT hres;
|
||||
INT i;
|
||||
|
||||
*ppvOut = NULL;
|
||||
pidls = malloc(sizeof(LPITEMIDLIST) * NumOfPaths);
|
||||
if (pidls == NULL) return E_FAIL;
|
||||
|
||||
for (i = 0; i < NumOfPaths; i++) {
|
||||
pidls[i] = PidlFromPath(hwnd, pszPaths[i]);
|
||||
if (pidls[i] == NULL) goto Fail;
|
||||
}
|
||||
hres = GetUIObjectOfAbsPidls(hwnd, pidls, NumOfPaths, riid, ppvOut);
|
||||
Fail:
|
||||
for (i = 0; i < NumOfPaths; i++) {
|
||||
CoTaskMemFree(pidls[i]);
|
||||
}
|
||||
free(pidls);
|
||||
return hres;
|
||||
}
|
||||
|
||||
void DoDrop(LPDATAOBJECT pdto, LPDROPTARGET pdt)
|
||||
{
|
||||
POINTL pt = { 0, 0 };
|
||||
DWORD dwEffect;
|
||||
HRESULT hres;
|
||||
|
||||
dwEffect = DROPEFFECT_COPY | DROPEFFECT_MOVE | DROPEFFECT_LINK;
|
||||
hres = pdt->lpVtbl->DragEnter(pdt, pdto, MK_LBUTTON, pt, &dwEffect);
|
||||
if (SUCCEEDED(hres) && dwEffect) {
|
||||
hres = pdt->lpVtbl->Drop(pdt, pdto, MK_LBUTTON, pt, &dwEffect);
|
||||
}
|
||||
else {
|
||||
hres = pdt->lpVtbl->DragLeave(pdt);
|
||||
}
|
||||
}
|
||||
|
||||
LPTSTR pidl_to_name(LPSHELLFOLDER psf, LPITEMIDLIST pidl, SHGDNF uFlags) {
|
||||
HRESULT hres;
|
||||
STRRET str;
|
||||
LPTSTR pszName = NULL;
|
||||
|
||||
hres = psf->lpVtbl->GetDisplayNameOf(psf, pidl, uFlags, &str);
|
||||
if (hres == S_OK) {
|
||||
hres = StrRetToStr(&str, pidl, &pszName);
|
||||
}
|
||||
return pszName;
|
||||
}
|
||||
|
||||
BOOL GethBitMapByPath(LPTSTR pszPath, HBITMAP *phbmp) {
|
||||
SHFILEINFO ShFI = {0};
|
||||
BOOL hasBmpImage = FALSE;
|
||||
|
||||
if (SUCCEEDED(SHGetFileInfo(pszPath, FILE_ATTRIBUTE_NORMAL, &ShFI, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES))) {
|
||||
GpBitmap *bitmap = NULL;
|
||||
if (GdipCreateBitmapFromHICON(ShFI.hIcon, &bitmap) == Ok) {
|
||||
hasBmpImage = !(GdipCreateHBITMAPFromBitmap(bitmap, phbmp, 0));
|
||||
GdipFree(bitmap);
|
||||
}
|
||||
DestroyIcon(ShFI.hIcon);
|
||||
}
|
||||
return hasBmpImage;
|
||||
}
|
||||
|
||||
void FolderToMenu(HWND hwnd, HMENU hmenu, LPCTSTR pszFolder)
|
||||
{
|
||||
LPSHELLFOLDER psf;
|
||||
HRESULT hres;
|
||||
STRRET str;
|
||||
|
||||
/* OS_WOW6432 */
|
||||
if ((PROC)(GetProcAddress(GetModuleHandle(_T("Shlwapi")), (LPCSTR)437))(30)) {
|
||||
AppendMenu(hmenu, MF_GRAYED | MF_DISABLED | MF_STRING, g_idm, TEXT("64-bit OS needs 64-bit version :p"));
|
||||
return;
|
||||
}
|
||||
|
||||
psf = GetFolder(hwnd, pszFolder);
|
||||
if (psf) {
|
||||
LPENUMIDLIST peidl;
|
||||
hres = psf->lpVtbl->EnumObjects(psf, hwnd, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS, &peidl);
|
||||
if (SUCCEEDED(hres)) {
|
||||
LPITEMIDLIST pidl;
|
||||
MENUITEMINFO mii;
|
||||
MENUINFO mi;
|
||||
BOOL hasBmpImage;
|
||||
while (peidl->lpVtbl->Next(peidl, 1, &pidl, NULL) == S_OK) {
|
||||
LPTSTR pszPath, pszName;
|
||||
//
|
||||
pszPath = pidl_to_name(psf, pidl, SHGDN_FORPARSING);
|
||||
pszName = pidl_to_name(psf, pidl, SHGDN_NORMAL);
|
||||
//
|
||||
// Path should be enough.
|
||||
CoTaskMemFree(pidl);
|
||||
if (pszPath == NULL || pszName == NULL) {continue;}
|
||||
//
|
||||
// Store the path to retrieve, as we check if it is a dir and launch it later.
|
||||
g_PSENDTO = (TCHAR **)realloc(g_PSENDTO, sizeof(TCHAR *) * (g_idm - IDM_SENDTOFIRST + 1));
|
||||
if (g_PSENDTO == NULL) {continue;}
|
||||
g_PSENDTO[g_idm] = _tcsdup(pszPath);
|
||||
//
|
||||
// Icon
|
||||
g_hBmpImageA = (HBITMAP *)realloc(g_hBmpImageA, sizeof(HBITMAP *) * (g_idm - IDM_SENDTOFIRST + 1));
|
||||
hasBmpImage = GethBitMapByPath(pszPath, &g_hBmpImageA[g_idm]);
|
||||
//
|
||||
if (PathIsDirectory(pszPath)) {
|
||||
HMENU hSubMenu = CreatePopupMenu();
|
||||
if (AppendMenu(hmenu, MF_ENABLED | MF_POPUP | MF_STRING, (UINT)hSubMenu, pszName)) {
|
||||
mi.cbSize = sizeof(mi);
|
||||
mi.fMask = MIM_HELPID;
|
||||
mi.dwContextHelpID = g_idm;
|
||||
SetMenuInfo(hSubMenu, &mi);
|
||||
g_idm++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (AppendMenu(hmenu, MF_ENABLED | MF_STRING, g_idm, pszName)) {
|
||||
mii.cbSize = sizeof(mii);
|
||||
mii.fMask = MIIM_DATA;
|
||||
if (hasBmpImage) {
|
||||
mii.fMask |= MIIM_BITMAP;
|
||||
mii.hbmpItem = g_hBmpImageA[g_idm];
|
||||
}
|
||||
SetMenuItemInfo(hmenu, g_idm, FALSE, &mii);
|
||||
g_idm++;
|
||||
}
|
||||
}
|
||||
//
|
||||
CoTaskMemFree(pszPath);
|
||||
CoTaskMemFree(pszName);
|
||||
}
|
||||
peidl->lpVtbl->Release(peidl);
|
||||
}
|
||||
psf->lpVtbl->Release(psf);
|
||||
}
|
||||
|
||||
if (g_idm == IDM_SENDTOFIRST) {
|
||||
AppendMenu(hmenu, MF_GRAYED | MF_DISABLED | MF_STRING, g_idm, TEXT("Send what sent to me to my sendto ^_^"));
|
||||
}
|
||||
}
|
||||
|
||||
void SendTo_OnInitMenuPopup(HWND hwnd, HMENU hmenu, UINT item, BOOL fSystemMenu)
|
||||
{
|
||||
if (GetMenuItemCount(hmenu) > 0) {return;}
|
||||
if (hmenu == g_hmenuSendTo) { /* :p only top level */
|
||||
FolderToMenu(hwnd, hmenu, g_FOLDER_SENDTO);
|
||||
}
|
||||
else {
|
||||
MENUINFO mi;
|
||||
mi.cbSize = sizeof(mi);
|
||||
mi.fMask = MIM_HELPID;
|
||||
if (GetMenuInfo(hmenu, &mi)) {
|
||||
FolderToMenu(hwnd, hmenu, g_PSENDTO[mi.dwContextHelpID]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SendTo_SendToItem(HWND hwnd, int idm)
|
||||
{
|
||||
HRESULT hres;
|
||||
|
||||
g_FORKING = 1;
|
||||
if (__argc == 1) {
|
||||
ShellExecute(NULL, NULL, g_PSENDTO[idm], NULL, NULL, SW_SHOWDEFAULT);
|
||||
}
|
||||
else {
|
||||
LPDATAOBJECT pdto;
|
||||
LPDROPTARGET pdt;
|
||||
hres = GetUIObjectOfPaths(hwnd, &g_PSENDTO[idm], 1, &IID_IDropTarget, (LPVOID *)&pdt);
|
||||
if (SUCCEEDED(hres)) {
|
||||
/* First convert all filenames to a data object. */
|
||||
hres = GetUIObjectOfPaths(hwnd, __targv + 1, __argc - 1, &IID_IDataObject, (LPVOID *)&pdto);
|
||||
if (SUCCEEDED(hres)) {
|
||||
/* Now drop the file on the drop target. */
|
||||
DoDrop(pdto, pdt);
|
||||
pdt->lpVtbl->Release(pdt);
|
||||
}
|
||||
}
|
||||
pdto->lpVtbl->Release(pdto);
|
||||
}
|
||||
// Exit as done!
|
||||
g_FORKING = 0;
|
||||
PostQuitMessage(0);
|
||||
}
|
||||
|
||||
void SendTo_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
|
||||
{
|
||||
SendTo_SendToItem(hwnd, id);
|
||||
}
|
||||
|
||||
BOOL SendTo_OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
|
||||
{
|
||||
g_hmenuSendTo = CreatePopupMenu();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* UAC focus changes!!! */
|
||||
void SendTo_OnKillFocus(HWND hwnd, HWND hwndOldFocus)
|
||||
{
|
||||
if (g_FORKING == 0) PostQuitMessage(0);
|
||||
}
|
||||
|
||||
LRESULT CALLBACK SendTo_WndProc(HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (uiMsg) {
|
||||
HANDLE_MSG(hwnd, WM_CREATE, SendTo_OnCreate);
|
||||
HANDLE_MSG(hwnd, WM_INITMENUPOPUP, SendTo_OnInitMenuPopup);
|
||||
HANDLE_MSG(hwnd, WM_COMMAND, SendTo_OnCommand);
|
||||
HANDLE_MSG(hwnd, WM_KILLFOCUS, SendTo_OnKillFocus);
|
||||
}
|
||||
|
||||
return DefWindowProc(hwnd, uiMsg, wParam, lParam);
|
||||
}
|
||||
|
||||
BOOL InitApp(void)
|
||||
{
|
||||
WNDCLASS wc;
|
||||
HRESULT hr;
|
||||
|
||||
wc.style = 0;
|
||||
wc.lpfnWndProc = SendTo_WndProc;
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = 0;
|
||||
wc.hInstance = g_hinst;
|
||||
wc.hIcon = NULL;
|
||||
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
|
||||
wc.lpszMenuName = NULL;
|
||||
wc.lpszClassName = TEXT("SendTo+");
|
||||
|
||||
RegisterClass(&wc);
|
||||
|
||||
hr = SHGetDesktopFolder(&g_psfDesktop);
|
||||
if (FAILED(hr)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
g_FOLDER_SENDTO = calloc(T_MAX_PATH + 1, sizeof(TCHAR));
|
||||
if (g_FOLDER_SENDTO == NULL) {return FALSE;}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TermApp(void)
|
||||
{
|
||||
int i, n;
|
||||
|
||||
if (g_psfDesktop) {
|
||||
g_psfDesktop->lpVtbl->Release(g_psfDesktop);
|
||||
g_psfDesktop = NULL;
|
||||
}
|
||||
n = g_idm - IDM_SENDTOFIRST;
|
||||
for (i = 0; i < n; i++) {
|
||||
free(g_PSENDTO[i]);
|
||||
DeleteObject(&g_hBmpImageA[i]);
|
||||
}
|
||||
free(g_PSENDTO);
|
||||
free(g_FOLDER_SENDTO);
|
||||
free((void **)g_hBmpImageA);
|
||||
}
|
||||
|
||||
int WINAPI _tWinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPTSTR lpCmdLine, int nCmdShow)
|
||||
{
|
||||
MSG msg;
|
||||
HWND hwnd;
|
||||
HRESULT hrInit;
|
||||
POINT pt = {0, 0};
|
||||
ULONG_PTR gdiplusToken;
|
||||
GdiplusStartupInput gdiplusStartupInput = {1, NULL, FALSE, TRUE}; // MUST!
|
||||
|
||||
g_hinst = hinst;
|
||||
|
||||
if (!InitApp()) return 1;
|
||||
if (GetFullPathName(TEXT("sendto"), T_MAX_PATH, g_FOLDER_SENDTO, NULL) == 0) {return 2;}
|
||||
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
|
||||
hrInit = CoInitialize(NULL);
|
||||
|
||||
hwnd = CreateWindow(
|
||||
TEXT("SendTo+"), /* Class Name */
|
||||
TEXT("lifenjoiner"), /* Title */
|
||||
WS_POPUP, /* Style */
|
||||
CW_USEDEFAULT, CW_USEDEFAULT, /* Position */
|
||||
0, 0, /* Size */
|
||||
NULL, /* Parent */
|
||||
NULL, /* No menu */
|
||||
hinst, /* Instance */
|
||||
0); /* No special parameters */
|
||||
|
||||
SetWindowLong(hwnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
|
||||
ShowWindow(hwnd, nCmdShow);
|
||||
|
||||
GetCursorPos(&pt);
|
||||
TrackPopupMenu(g_hmenuSendTo, TPM_LEFTALIGN, pt.x, pt.y, 0, hwnd, NULL);
|
||||
|
||||
while (GetMessage(&msg, NULL, 0, 0)) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
|
||||
TermApp();
|
||||
GdiplusShutdown(gdiplusToken);
|
||||
|
||||
if (SUCCEEDED(hrInit)) {
|
||||
CoUninitialize();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
BIN
bin/sendto/sendto_x64.exe
Normal file
BIN
bin/sendto/sendto_x64.exe
Normal file
Binary file not shown.
BIN
bin/sendto/sendto_x86.exe
Normal file
BIN
bin/sendto/sendto_x86.exe
Normal file
Binary file not shown.
BIN
bin/sendto/toolkit.ico
Normal file
BIN
bin/sendto/toolkit.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.3 KiB |
@ -1,12 +1,12 @@
|
||||
[DIE]
|
||||
folder = ..\Analysis\DIE
|
||||
folder = ..\..\toolkit\Analysis\DIE
|
||||
url = horsicq/DIE-engine
|
||||
from = github
|
||||
re_download = die_win32_portable_(?:\S+).zip
|
||||
local_version = 3.04
|
||||
|
||||
[ExeinfoPe]
|
||||
folder = ..\Analysis\ExeinfoPe
|
||||
folder = ..\..\toolkit\Analysis\ExeinfoPe
|
||||
url = https://github.com/ExeinfoASL/ASL
|
||||
update_url = https://github.com/ExeinfoASL/ASL/raw/master/exeinfope.zip
|
||||
from = web
|
||||
@ -14,35 +14,35 @@ local_version = 0.0.6.7
|
||||
re_version = Version : (.*?) -
|
||||
|
||||
[XELFViewer]
|
||||
folder = ..\Analysis\XELFViewer
|
||||
folder = ..\..\toolkit\Analysis\XELFViewer
|
||||
url = horsicq/XELFViewer
|
||||
from = github
|
||||
local_version = 0.04
|
||||
re_download = xelfviewer_win32_portable_(?:\S+).zip
|
||||
|
||||
[XPEViewer]
|
||||
folder = ..\Analysis\XPEViewer
|
||||
folder = ..\..\toolkit\Analysis\XPEViewer
|
||||
url = horsicq/XPEViewer
|
||||
from = github
|
||||
local_version = 0.02
|
||||
re_download = xpeviewer_win32_portable_(?:\S+).zip
|
||||
|
||||
[XAPKDetector]
|
||||
folder = ..\Analysis\XAPKDetector
|
||||
folder = ..\..\toolkit\Analysis\XAPKDetector
|
||||
url = horsicq/XAPKDetector
|
||||
from = github
|
||||
local_version = 0.02
|
||||
re_download = xapkdetector_win32_portable_(?:\S+).zip
|
||||
|
||||
[PE-Bear]
|
||||
folder = ..\Analysis\PE-Bear
|
||||
folder = ..\..\toolkit\Analysis\PE-Bear
|
||||
url = hasherezade/pe-bear-releases
|
||||
from = github
|
||||
local_version = 0.5.5.3
|
||||
re_download = PE-bear_(?:\S+)_x64_win_vs13.zip
|
||||
|
||||
[PEStudio]
|
||||
folder = ..\Analysis\PEStudio
|
||||
folder = ..\..\toolkit\Analysis\PEStudio
|
||||
url = https://www.winitor.com/download
|
||||
from = web
|
||||
local_version = 9.28
|
||||
@ -50,14 +50,14 @@ re_version = <h1>Download pestudio (.*?)</h1>
|
||||
update_url = https://www.winitor.com/tools/pestudio/current/pestudio.zip
|
||||
|
||||
[CAPA]
|
||||
folder = ..\Analysis\CAPA
|
||||
folder = ..\..\toolkit\Analysis\CAPA
|
||||
url = fireeye/capa
|
||||
from = github
|
||||
local_version = v3.1.0
|
||||
re_download = capa-(?:\S+)-windows.zip
|
||||
|
||||
[JADX]
|
||||
folder = ..\Decompilers\[ANDROID] JADX
|
||||
folder = ..\..\toolkit\Decompilers\[ANDROID] JADX
|
||||
url = skylot/jadx
|
||||
from = github
|
||||
local_version = v1.3.2
|
||||
@ -65,28 +65,28 @@ re_download = jadx-gui-(?:\S+)-with-jre-win.zip
|
||||
post_unpack = scripts\JADX.bat
|
||||
|
||||
[dnSpyEx]
|
||||
folder = ..\Decompilers\[DOTNET] dnSpyEx
|
||||
folder = ..\..\toolkit\Decompilers\[DOTNET] dnSpyEx
|
||||
url = dnSpyEx/dnSpy
|
||||
from = github
|
||||
local_version = v6.1.9
|
||||
re_download = dnSpy-net-win64.zip
|
||||
|
||||
[ILSpy]
|
||||
folder = ..\Decompilers\[DOTNET] ILSpy
|
||||
folder = ..\..\toolkit\Decompilers\[DOTNET] ILSpy
|
||||
url = icsharpcode/ILSpy
|
||||
from = github
|
||||
local_version = v7.2-preview4
|
||||
re_download = ILSpy_binaries_(?:\S+).zip
|
||||
|
||||
[JD-GUI]
|
||||
folder = ..\Decompilers\[JAVA] JD-GUI
|
||||
folder = ..\..\toolkit\Decompilers\[JAVA] JD-GUI
|
||||
url = java-decompiler/jd-gui
|
||||
from = github
|
||||
local_version = v1.6.6
|
||||
re_download = jd-gui-windows-(?:\S+).zip
|
||||
|
||||
[Recaf]
|
||||
folder = ..\Decompilers\[JAVA] Recaf
|
||||
folder = ..\..\toolkit\Decompilers\[JAVA] Recaf
|
||||
url = Col-E/Recaf
|
||||
from = github
|
||||
local_version = 2.21.12
|
||||
@ -94,7 +94,7 @@ re_download = recaf-(?:\S+)-jar-with-dependencies.jar
|
||||
post_unpack = scripts\Recaf.bat
|
||||
|
||||
[PyInstxtractor]
|
||||
folder = ..\Decompilers\[PYTHON] PyInstxtractor
|
||||
folder = ..\..\toolkit\Decompilers\[PYTHON] PyInstxtractor
|
||||
url = https://github.com/extremecoders-re/pyinstxtractor/commits/master
|
||||
from = web
|
||||
local_version = fcf93bfb452107c9b9178e28cace1267c4059156
|
||||
@ -102,7 +102,7 @@ re_version = \/commit\/(.*?)" aria-label="
|
||||
update_url = https://github.com/extremecoders-re/pyinstxtractor/archive/refs/heads/master.zip
|
||||
|
||||
[IDR]
|
||||
folder = ..\Decompilers\[DELPHI] IDR
|
||||
folder = ..\..\toolkit\Decompilers\[DELPHI] IDR
|
||||
url = https://github.com/crypto2011/IDR/commits/master
|
||||
from = web
|
||||
local_version = 09e9f35ce753a0f7d865e5ebced6150cf8ee4240
|
||||
@ -111,7 +111,7 @@ update_url = https://github.com/crypto2011/IDR/archive/refs/heads/master.zip
|
||||
post_unpack = scripts\IDR.bat
|
||||
|
||||
[x64dbg]
|
||||
folder = ..\Dissasembler\x64dbg
|
||||
folder = ..\..\toolkit\Dissasembler\x64dbg
|
||||
url = https://sourceforge.net/projects/x64dbg/files/
|
||||
update_url = https://sourceforge.net/projects/x64dbg/files/latest/download.zip
|
||||
from = web
|
||||
@ -120,14 +120,14 @@ re_version = snapshot_(.*?).zip
|
||||
post_unpack = scripts\x64dbg.bat
|
||||
|
||||
[Cutter]
|
||||
folder = ..\Dissasembler\Cutter
|
||||
folder = ..\..\toolkit\Dissasembler\Cutter
|
||||
url = rizinorg/cutter
|
||||
from = github
|
||||
local_version = v2.0.5
|
||||
re_download = cutter-(?:\S+)-x64.Windows.zip
|
||||
|
||||
[WinHex]
|
||||
folder = ..\HEX Editor\WinHex
|
||||
folder = ..\..\toolkit\HEX Editor\WinHex
|
||||
url = https://x-ways.net/winhex/
|
||||
from = web
|
||||
local_version = 20.4
|
||||
@ -135,7 +135,7 @@ re_version = <strong>WinHex (.*?)<br>
|
||||
update_url = http://www.x-ways.net/winhex.zip
|
||||
|
||||
[HxD]
|
||||
folder = ..\HEX Editor\HxD
|
||||
folder = ..\..\toolkit\HEX Editor\HxD
|
||||
url = https://mh-nexus.de/en/hxd/
|
||||
from = web
|
||||
local_version = 2.5.0.0 (February 11, 2021)
|
||||
@ -144,21 +144,21 @@ update_url = https://mh-nexus.de/downloads/HxDPortableSetup.zip
|
||||
post_unpack = scripts\HxD.bat
|
||||
|
||||
[REHex]
|
||||
folder = ..\HEX Editor\REHex
|
||||
folder = ..\..\toolkit\HEX Editor\REHex
|
||||
url = solemnwarning/rehex
|
||||
from = github
|
||||
local_version = 0.4.1
|
||||
re_download = rehex-(?:\S+)-win-x86_64.zip
|
||||
|
||||
[ImHex]
|
||||
folder = ..\HEX Editor\ImHex
|
||||
folder = ..\..\toolkit\HEX Editor\ImHex
|
||||
url = WerWolv/ImHex
|
||||
from = github
|
||||
local_version = v1.14.0
|
||||
re_download = Windows.Portable.ZIP.zip
|
||||
|
||||
[Autoruns]
|
||||
folder = ..\Monitor\Autoruns
|
||||
folder = ..\..\toolkit\Monitor\Autoruns
|
||||
url = https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns
|
||||
from = web
|
||||
local_version = 14.08
|
||||
@ -166,7 +166,7 @@ re_version = <h1 [^>]*>Autoruns for Windows v(.*?)</h1>
|
||||
re_download = "(.*?/Autoruns.zip)"
|
||||
|
||||
[CurrPorts]
|
||||
folder = ..\Monitor\CurrPorts
|
||||
folder = ..\..\toolkit\Monitor\CurrPorts
|
||||
url = https://www.nirsoft.net/utils/cports.html
|
||||
update_url = https://www.nirsoft.net/utils/cports.zip
|
||||
from = web
|
||||
@ -174,7 +174,7 @@ local_version = 2.65
|
||||
re_version = <td>CurrPorts v(.*?) - Monitoring Opened
|
||||
|
||||
[MultiMon]
|
||||
folder = ..\Monitor\MultiMon
|
||||
folder = ..\..\toolkit\Monitor\MultiMon
|
||||
url = https://www.resplendence.com/multimon_whatsnew
|
||||
update_url = https://www.resplendence.com/download/MultiMonHome.exe
|
||||
from = web
|
||||
@ -183,7 +183,7 @@ re_version = <hr>What's new in v (.*?)<hr>
|
||||
post_unpack = scripts\MultiMon.bat
|
||||
|
||||
[Portmon]
|
||||
folder = ..\Monitor\Portmon
|
||||
folder = ..\..\toolkit\Monitor\Portmon
|
||||
url = https://docs.microsoft.com/en-us/sysinternals/downloads/portmon
|
||||
update_url = https://download.sysinternals.com/files/PortMon.zip
|
||||
from = web
|
||||
@ -191,7 +191,7 @@ local_version = 3.03
|
||||
re_version = <h1 [^>]*>Portmon for Windows v(.*?)</h1>
|
||||
|
||||
[Process Explorer]
|
||||
folder = ..\Monitor\Process Explorer
|
||||
folder = ..\..\toolkit\Monitor\Process Explorer
|
||||
url = https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer
|
||||
update_url = https://download.sysinternals.com/files/ProcessExplorer.zip
|
||||
from = web
|
||||
@ -199,7 +199,7 @@ local_version = 16.43
|
||||
re_version = <h1 [^>]*>Process Explorer v(.*?)</h1>
|
||||
|
||||
[Process Hacker 3]
|
||||
folder = ..\Monitor\Process Hacker 3
|
||||
folder = ..\..\toolkit\Monitor\Process Hacker 3
|
||||
url = https://processhacker.sourceforge.io/nightly.php
|
||||
from = web
|
||||
local_version = 3.0.4554
|
||||
@ -207,7 +207,7 @@ re_version = Build: <span style="font-weight:bold">(.*?)</span>
|
||||
re_download = href="(.*?releases/download/(?:\S+)/processhacker-(?:\S+)-bin.zip)
|
||||
|
||||
[Procmon]
|
||||
folder = ..\Monitor\Procmon
|
||||
folder = ..\..\toolkit\Monitor\Procmon
|
||||
url = https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
|
||||
update_url = https://download.sysinternals.com/files/ProcessMonitor.zip
|
||||
from = web
|
||||
@ -215,7 +215,7 @@ local_version = 3.88
|
||||
re_version = <h1 [^>]*>Process Monitor v(.*?)</h1>
|
||||
|
||||
[TCPView]
|
||||
folder = ..\Monitor\TCPView
|
||||
folder = ..\..\toolkit\Monitor\TCPView
|
||||
url = https://docs.microsoft.com/en-us/sysinternals/downloads/tcpview
|
||||
update_url = https://download.sysinternals.com/files/TCPView.zip
|
||||
from = web
|
||||
@ -223,21 +223,21 @@ local_version = 4.17
|
||||
re_version = <h1 [^>]*>TCPView v(.*?)</h1>
|
||||
|
||||
[PE-sieve]
|
||||
folder = ..\Monitor\PE-sieve
|
||||
folder = ..\..\toolkit\Monitor\PE-sieve
|
||||
url = hasherezade/pe-sieve
|
||||
from = github
|
||||
local_version = v0.3.4
|
||||
re_download = pe-sieve64.zip
|
||||
|
||||
[HollowsHunter]
|
||||
folder = ..\Monitor\HollowsHunter
|
||||
folder = ..\..\toolkit\Monitor\HollowsHunter
|
||||
url = hasherezade/hollows_hunter
|
||||
from = github
|
||||
local_version = v0.3.4
|
||||
re_download = hollows_hunter64.zip
|
||||
|
||||
[Strings]
|
||||
folder = ..\Other\Strings
|
||||
folder = ..\..\toolkit\Other\Strings
|
||||
url = https://docs.microsoft.com/en-us/sysinternals/downloads/strings
|
||||
update_url = https://download.sysinternals.com/files/Strings.zip
|
||||
from = web
|
||||
@ -245,14 +245,14 @@ local_version = 2.54
|
||||
re_version = <h1 [^>]*>Strings v(.*?)</h1>
|
||||
|
||||
[XOpcodeCalc]
|
||||
folder = ..\Other\XOpcodeCalc
|
||||
folder = ..\..\toolkit\Other\XOpcodeCalc
|
||||
url = horsicq/XOpcodeCalc
|
||||
from = github
|
||||
local_version = 0.04
|
||||
re_download = xopcodecalc_win64_portable_(?:\S+).zip
|
||||
|
||||
[Resource Hacker]
|
||||
folder = ..\Other\Resource Hacker
|
||||
folder = ..\..\toolkit\Other\Resource Hacker
|
||||
url = http://www.angusj.com/resourcehacker/
|
||||
from = web
|
||||
local_version = 5.1.8 (360)
|
||||
@ -260,14 +260,14 @@ re_version = <strong>Version (.*?)</strong>
|
||||
update_url = http://www.angusj.com/resourcehacker/resource_hacker.zip
|
||||
|
||||
[FLOSS]
|
||||
folder = ..\Other\FLOSS
|
||||
folder = ..\..\toolkit\Other\FLOSS
|
||||
url = fireeye/flare-floss
|
||||
from = github
|
||||
local_version = v1.7.0
|
||||
re_download = floss-(?:\S+)-windows.zip
|
||||
|
||||
[ProcDOT]
|
||||
folder = ..\Other\ProcDOT
|
||||
folder = ..\..\toolkit\Other\ProcDOT
|
||||
url = https://www.procdot.com/downloadprocdotbinaries.htm
|
||||
update_url = https://www.procdot.com/
|
||||
update_file_pass = procdot
|
||||
@ -277,14 +277,14 @@ re_version = <span class="xr_tl xr_s4" [^>]*>Latest stable build: (.*?)</span>
|
||||
re_download = href="(.*?/procdot_(?:\S+)_windows.zip)
|
||||
|
||||
[ApkStudio]
|
||||
folder = ..\Other\ApkStudio
|
||||
folder = ..\..\toolkit\Other\ApkStudio
|
||||
url = vaibhavpandeyvpz/apkstudio
|
||||
from = github
|
||||
local_version = 5.2.4
|
||||
re_download = ApkStudio-(?:\S+)-x64.zip
|
||||
|
||||
[APKEasyTool]
|
||||
folder = ..\Other\APKEasyTool
|
||||
folder = ..\..\toolkit\Other\APKEasyTool
|
||||
url = https://forum.xda-developers.com/t/tool-windows-apk-easy-tool-v1-59-2-2021-04-03.3333960/
|
||||
update_url = https://evildog1.bitbucket.io/apkeasytool/APK Easy Tool portable.zip
|
||||
from = web
|
||||
@ -292,7 +292,7 @@ local_version = 1.59.2 (2021-04-03)
|
||||
re_version = APK Easy Tool v(.*?) \| XDA Forums
|
||||
|
||||
[AstroGrep]
|
||||
folder = ..\Other\AstroGrep
|
||||
folder = ..\..\toolkit\Other\AstroGrep
|
||||
url = https://sourceforge.net/projects/astrogrep/files/
|
||||
update_url = https://sourceforge.net/projects/astrogrep/files/latest/download.zip
|
||||
from = web
|
||||
@ -300,7 +300,7 @@ local_version = 4.4.7
|
||||
re_version = AstroGrep_v(.*?)_portable.zip
|
||||
|
||||
[Process-Dump]
|
||||
folder = ..\Other\Process-Dump
|
||||
folder = ..\..\toolkit\Other\Process-Dump
|
||||
url = http://split-code.com/processdump.html
|
||||
update_url = http://split-code.com/files/pd_latest.zip
|
||||
from = web
|
||||
@ -308,21 +308,21 @@ local_version = 2.1
|
||||
re_version = <span class="link">Download: pd.exe v(.*?) for Windows 32 and 64 bit</span>
|
||||
|
||||
[Scylla]
|
||||
folder = ..\Other\Scylla
|
||||
folder = ..\..\toolkit\Other\Scylla
|
||||
url = NtQuery/Scylla
|
||||
from = github
|
||||
local_version = v0.9.8
|
||||
re_download = Scylla_v(?:\S+).rar
|
||||
|
||||
[VirusTotalUploader]
|
||||
folder = ..\Other\VirusTotalUploader
|
||||
folder = ..\..\toolkit\Other\VirusTotalUploader
|
||||
url = SamuelTulach/VirusTotalUploader
|
||||
from = github
|
||||
local_version = 0.1.9
|
||||
re_download = portable_anycpu_signed.zip
|
||||
|
||||
[HashMyFiles]
|
||||
folder = ..\Other\HashMyFiles
|
||||
folder = ..\..\toolkit\Other\HashMyFiles
|
||||
url = https://www.nirsoft.net/utils/hash_my_files.html
|
||||
update_url = https://www.nirsoft.net/utils/hashmyfiles.zip
|
||||
from = web
|
||||
@ -330,7 +330,7 @@ local_version = 2.43
|
||||
re_version = <td>HashMyFiles v(.*?) - Calculate
|
||||
|
||||
[Threadtear]
|
||||
folder = ..\Other\Threadtear
|
||||
folder = ..\..\toolkit\Other\Threadtear
|
||||
url = GraxCode/threadtear
|
||||
from = github
|
||||
local_version = 3.0.1
|
||||
@ -338,7 +338,7 @@ re_download = threadtear-gui-(?:\S+)-all.jar
|
||||
post_unpack = scripts\Threadtear.bat
|
||||
|
||||
[Windows Kernel Explorer]
|
||||
folder = ..\Rootkits Detector\Windows Kernel Explorer
|
||||
folder = ..\..\toolkit\Rootkits Detector\Windows Kernel Explorer
|
||||
url = https://github.com/AxtMueller/Windows-Kernel-Explorer
|
||||
update_url = https://github.com/AxtMueller/Windows-Kernel-Explorer/raw/master/binaries/WKE64.exe
|
||||
from = web
|
||||
@ -346,7 +346,7 @@ local_version = 20211111
|
||||
re_version = >Current Version: (.*?)<
|
||||
|
||||
[SysInspector]
|
||||
folder = ..\Rootkits Detector\SysInspector
|
||||
folder = ..\..\toolkit\Rootkits Detector\SysInspector
|
||||
url = https://www.eset.com/ar/soporte/diagnostico-de-pc-gratuito/?type=13554&tx_esetdownloads_ajax[product]=46&tx_esetdownloads_ajax[beta]=0&tx_esetdownloads_ajax[page_id]=17328&tx_esetdownloads_ajax[plugin_id]=571902&tx_esetdownloads_ajax[product]=46&tx_esetdownloads_ajax[beta]=0&tx_esetdownloads_ajax[page_id]=17328&tx_esetdownloads_ajax[plugin_id]=571902
|
||||
update_url = https://download.eset.com/com/eset/tools/diagnosis/sysinspector/latest/sysinspector_nt64_esn.exe
|
||||
from = web
|
||||
@ -354,7 +354,7 @@ local_version = 1.4.2.0
|
||||
re_version = "full_version":"(.*?)"
|
||||
|
||||
[GMER]
|
||||
folder = ..\Rootkits Detector\GMER
|
||||
folder = ..\..\toolkit\Rootkits Detector\GMER
|
||||
url = http://www.gmer.net
|
||||
update_url = http://www2.gmer.net/gmer.zip
|
||||
from = web
|
||||
@ -362,7 +362,7 @@ local_version = 2.2.19882
|
||||
re_version = <STRONG>GMER (.*?)<\/STRONG>
|
||||
|
||||
[UniExtract]
|
||||
folder = ..\UnPacking\UniExtract
|
||||
folder = ..\..\toolkit\UnPacking\UniExtract
|
||||
url = https://github.com/Bioruebe/UniExtract2/releases/latest
|
||||
update_url = https://github.com
|
||||
from = web
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user