Jeśli kiedyś zastanawiałeś się jak by można było usprawnić debuggowanie, ten Pan wpadł na pomysł dodawania komunikatów głosowych w procesie debuggowania:
Strona projektu:
http://andrewbrobinson.com/audioassist/index.html
Jeśli kiedyś zastanawiałeś się jak by można było usprawnić debuggowanie, ten Pan wpadł na pomysł dodawania komunikatów głosowych w procesie debuggowania:
Strona projektu:
http://andrewbrobinson.com/audioassist/index.html
.netshrink to kompresor (tzw. exe-packer) aplikacji .NET-owych, wykorzystujący kompresję LZMA
.netshrink to także DLL binder pozwalający scalić aplikację oraz jej dodatkowe moduły DLL do jednego pliku EXE:
Ostatnie zmiany:
v2.3
v2.2
Strona domowa:
https://www.pelock.com/products/netshrink
Wersje demonstracyjną można ściągnąć z:
Setup:
https://www.pelock.com/download/netshrink.exe (713 kB)
Archiwum zip:
https://www.pelock.com/download/netshrink.zip (427 kB)
.netshrink to kompresor (tzw. exe-packer) aplikacji .NET-owych, wykorzystujący kompresję LZMA, DLL binder pozwalający scalić aplikację oraz jej dodatkowe moduły DLL do jednego pliku EXE, .netshrink pozwala także na ochronę aplikacji na hasło przed uruchomieniem.
W zaktualizowanej wersji poprawione zostało uruchamianie skompresowanych aplikacji ze ścieżek UNC (zasoby sieciowe) z linii komend i zachowywanie oryginalnej architektury CPU dla skompresowanych plików.
Strona domowa:
https://www.pelock.com/products/netshrink
Wersje demonstracyjną można ściągnąć z:
Setup:
https://www.pelock.com/download/netshrink.exe (701 kB)
Archiwum zip:
https://www.pelock.com/download/netshrink.exe (415 kB)
Właśnie ukazała się nowa wersja mojego małego narzędzia do kompresji aplikacji .NET.
.netshrink to kompresor (tzw. exe-packer) aplikacji .NET-owych, wykorzystujący kompresję LZMA.
W nowej wersji została dodana opcja dołączania bibliotek dynamicznych DLL do aplikacji, dzięki czemu można swoją aplikację i jej pomocnicze biblioteki skompresować do pojedynczego pliku wykonywalnego.

Zaktualizowana wersja pozwala również skompresowanym aplikacjom na wykrywanie popularnych narzędzi do łamania i rozpakowywania oprogramowania poprzez stałe monitorowanie systemu na ich obecność, w razie ich wykrycia, skompresowana aplikacja zostanie zamknięta.
.netshrink pozwala także na zaszyfrowanie aplikacji hasłem, bez poprawnego hasła nie można uruchomić skompresowanej aplikacji. Zabezpieczenie na hasło wykorzystuje weryfikację bazującą na funkcji skrótu SHA256 i szyfrowanie danych algorytmem AES / Rijndael z kluczem 256 bitowym bazującym na wartości hash z hasła.
Nowości obejmują także:
Strona domowa:
https://www.pelock.com/products/netshrink
Wersje demonstracyjną można ściągnąć z:
Setup:
https://www.pelock.com/download/netshrink.exe (692 kB)
Archiwum zip:
https://www.pelock.com/download/netshrink.exe (405 kB)
Czekałem na koniec świata, ale jakoś go nie było, tymczasem mała klasa w C# do patchowania plików z paroma przydatnymi opcjami jak np. patchowanie stringow Delphi.
using System;
////////////////////////////////////////////////////////////////////////////////
//
// Simple C# Patcher Class for Windows (Complex)
//
// You can patch:
//
// - byte arrays
// - single bytes
// - integers
// - strings
// - delphi strings
//
// Language : C#
// Author : Bartosz Wójcik
// Website : https://www.pelock.com
//
////////////////////////////////////////////////////////////////////////////////
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
namespace NetPatcher
{
class Patcher
{
public FileStream inputFile;
public Patcher()
{
}
~Patcher()
{
CloseFile();
}
public bool OpenFile(string filePath)
{
try
{
inputFile = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite);
return inputFile == null ? false : true;
}
catch (Exception e)
{
return false;
}
return false;
}
public void CloseFile()
{
if (inputFile != null)
{
inputFile.Close();
}
inputFile = null;
}
public long PatchArray(long fileOffset, byte[] patchBytes)
{
inputFile.Seek(fileOffset, SeekOrigin.Begin);
inputFile.Write(patchBytes, 0, patchBytes.Length);
return inputFile.Position;
}
public long PatchByte(long fileOffset, byte patchByte)
{
inputFile.Seek(fileOffset, SeekOrigin.Begin);
inputFile.WriteByte(patchByte);
return inputFile.Position;
}
public long PatchString(long fileOffset, string patchString)
{
System.Text.Encoding asciiEncoding = System.Text.Encoding.ASCII;
byte[] encodedPatchString = asciiEncoding.GetBytes(patchString);
return PatchArray(fileOffset, encodedPatchString);
}
public long PatchDelphiString(long fileOffset, string patchString)
{
System.Text.Encoding asciiEncoding = System.Text.Encoding.GetEncoding(1250);
byte[] encodedPatchString = asciiEncoding.GetBytes(patchString);
PatchByte(fileOffset, (byte)encodedPatchString.Length);
PatchArray(fileOffset + 1, encodedPatchString);
return inputFile.Position;
}
public long PatchInt32(long fileOffset, Int32 patchInt32)
{
byte[] encodedInt32 = BitConverter.GetBytes(patchInt32);
PatchArray(fileOffset, encodedInt32);
return inputFile.Position;
}
public long PatchFill(long fileOffset, long Length, byte patchByteFill)
{
while (Length-- != 0)
{
PatchByte(fileOffset++, patchByteFill);
}
return inputFile.Position;
}
}
}
Źródła dostępne także na https://github.com/PELock/Simple-DotNet-Patcher-Class