//CRC32
static DWORD crc32table[256];
static bool crc32Intalized;
DWORD crc32Hash(const void *data, DWORD size);
DWORD Crypt::crc32Hash(const void *data, DWORD size)
{
if(crc32Intalized == false)
{
register DWORD crc;
for(register DWORD i = 0; i < 256; i++)
{
crc = i;
for(register DWORD j = 8; j > 0; j--)
{
if(crc & 0x1)crc = (crc >> 1) ^ 0xEDB88320L;
else crc >>= 1;
}
crc32table[i] = crc;
}
crc32Intalized = true;
}
register DWORD cc = 0xFFFFFFFF;
for(register DWORD i = 0; i < size; i++)cc = (cc >> 8) ^ crc32table[(((LPBYTE)data)[i] ^ cc) & 0xFF];
return ~cc;
}
//MD5
#define MD5HASH_SIZE 16
bool _md5Hash(LPBYTE output, void *inputData, DWORD dataSize);
bool Crypt::_md5Hash(LPBYTE output, void *inputData, DWORD dataSize)
{
bool r = false;
HCRYPTPROV hashProv;
if(CWA(advapi32, CryptAcquireContextW)(&hashProv, NULL, NULL, PROV_RSA_FULL /*Èìåííî ýòî çíà÷åíèå, íå êàêîãî èíîãî.*/, CRYPT_VERIFYCONTEXT | CRYPT_SILENT) != FALSE)
{
HCRYPTHASH hashHandle;
if(CWA(advapi32, CryptCreateHash)(hashProv, CALG_MD5, 0, 0, &hashHandle) == TRUE)
{
DWORD hashLen = MD5HASH_SIZE;
if(CWA(advapi32, CryptHashData)(hashHandle, (LPBYTE)inputData, dataSize, 0) == TRUE && CWA(advapi32, CryptGetHashParam)(hashHandle, HP_HASHVAL, output, &hashLen, 0) == TRUE && hashLen == MD5HASH_SIZE)r = true;
CWA(advapi32, CryptDestroyHash)(hashHandle);
}
CWA(advapi32, CryptReleaseContext)(hashProv, 0);
}
return r;
}
Ett0rhake
hacking experiments
lundi 28 janvier 2013
CRC32 and MD5 hash c++
Base64 for c++
LPSTR _base64Encode(LPBYTE source, SIZE_T sourceSize, SIZE_T *destSize); LPBYTE _base64Decode(LPSTR source, SIZE_T sourceSize, SIZE_T *destSize);
LPSTR base64Encode(LPBYTE source, SIZE_T sourceSize, SIZE_T *destSize)
{
static const char cb64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
LPBYTE dest = (LPBYTE)Mem::alloc((sourceSize + 2) / 3 * 4 + 1);
if(dest != NULL)
{
LPBYTE p = dest;
BYTE cur[3];
while(sourceSize > 0)
{
DWORD len = 0;
for(DWORD i = 0; i < 3; i++)
{
if(sourceSize > 0)
{
sourceSize--;
len++;
cur[i] = source[i];
}
else cur[i] = 0;
}
source += 3;
p[0] = cb64[cur[0] >> 2];
p[1] = cb64[((cur[0] & 0x03) << 4) | ((cur[1] & 0xF0) >> 4)];
p[2] = (BYTE)(len > 1 ? cb64[((cur[1] & 0x0F) << 2) | ((cur[2] & 0xC0) >> 6) ] : '=');
p[3] = (BYTE)(len > 2 ? cb64[cur[2] & 0x3F] : '=');
p += 4;
}
*p = 0;
if(destSize)*destSize = (SIZE_T)(p - dest);
}
return (LPSTR)dest;
}
//////////////////////////
LPBYTE base64Decode(LPSTR source, SIZE_T sourceSize, SIZE_T *destSize)
{
static const char cd64[] = "|$$$}rstuvwxyz{$$$$$$$>?@ABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[\\]^_`abcdefghijklmnopq";
LPBYTE dest = (LPBYTE)Mem::alloc(sourceSize + sizeof(BYTE));
if(dest != NULL)
{
LPBYTE p = (LPBYTE)source;
LPBYTE e = p + sourceSize;
LPBYTE r = (LPBYTE)dest;
BYTE in[4], out[3], v;
int len, i;
while(p < e)
{
for(len = 0, i = 0; i < 4 && p < e; i++)
{
v = 0;
while(p < e && v == 0)
{
v = (BYTE)*(p++);
v = (BYTE)((v < 43 || v > 122) ? 0 : cd64[v - 43]);
if(v != 0)v = (BYTE)((v == '$') ? 0 : v - 61);
}
if(v != 0)
{
len++;
in[i] = (BYTE)(v - 1);
}
}
if(len)
{
out[0] = (BYTE)(in[0] << 2 | in[1] >> 4);
out[1] = (BYTE)(in[1] << 4 | in[2] >> 2);
out[2] = (BYTE)(((in[2] << 6) & 0xC0) | in[3]);
for(i = 0; i < len - 1; i++){*(r++) = out[i]; if(i==0)i=0;/*instrict*/}
}
}
*r = 0;
if(destSize)*destSize = (SIZE_T)(r - dest);
}
return dest;
}
jeudi 10 janvier 2013
Call you function dynamically in c++
#include//Function for loading DLL HMODULE Load_DLL(char* DLL){ HANDLE Proc; HMODULE hDLL; hDLL = LoadLibraryA(DLL); if(hDLL == NULL){ //Fail FreeLibrary(hDLL); } else{ //Sucess } FreeLibrary(hDLL); return hDLL ; } FARPROC Get_ProcA(char* DLL , char* FUNC){ HMODULE hDLL = Load_DLL(DLL); FARPROC Myproc = GetProcAddress(hDLL,FUNC); if (Myproc == NULL) FreeLibrary(hDLL); return Myproc; } //Define the function to load typedef int(__stdcall *msgbox)(HWND, LPCSTR, LPCSTR, UINT); int main() { //Call you function msgbox Me = msgbox(Get_ProcA("User32", "MessageBoxA")); //TestIt Me(0,"TEST","Success",0); return 0; }
jeudi 3 janvier 2013
RC4 in C++
/////////////////////////////////////////////////////////////////////////////////////////
////////////////////////// RC4 Encryption //////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
LPBYTE RC4(LPBYTE lpBuf, LPBYTE lpKey, DWORD dwBufLen, DWORD dwKeyLen)
{
int a, b = 0, s[256];
BYTE swap;
DWORD dwCount;
for(a = 0; a < 256; a++)
{
s[a] = a;
}
for(a = 0; a < 256; a++)
{
b = (b + s[a] + lpKey[a % dwKeyLen]) % 256;
swap = s[a];
s[a] = s[b];
s[b] = swap;
}
for(dwCount = 0; dwCount < dwBufLen; dwCount++)
{
a = (a + 1) % 256;
b = (b + s[a]) % 256;
swap = s[a];
s[a] = s[b];
s[b] = swap;
lpBuf[dwCount] ^= s[(s[a] + s[b]) % 256];
}
return lpBuf;
}
mardi 25 décembre 2012
C++ MsgBoxA winApi
#includeint WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow) { MessageBoxA(NULL, "Hello World!", "Ett0rhake", MB_OK); }
Best way to read ressources data in C#
public static byte[] Read(string typeRes, string nameRes)
{
IntPtr resH1 = FindResource(IntPtr.Zero, typeRes, nameRes);
IntPtr resH2 = LoadResource(IntPtr.Zero, resH1);
IntPtr resH3 = LockResource(resH2);
uint resSize = SizeofResource(IntPtr.Zero, resH1);
//copey resorce to byte array in our memory
byte[] y = new byte[resSize];
Marshal.Copy(resH3, y, 0, (int)resSize);
//convert byte array to string
//System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
//string settingtxt = encoding.GetString(y);
return y;
}
samedi 22 décembre 2012
Best way to write ressources data in C#
using System.Globalization;
using System.Runtime.InteropServices;
using System;
class ResManager
{
#region WINAPI
[DllImport("kernel32.dll", SetLastError = true)]
static extern IntPtr BeginUpdateResource(string pFileName,
[MarshalAs(UnmanagedType.Bool)]bool bDeleteExistingResources);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool UpdateResource(IntPtr hUpdate, string lpType, string lpName, ushort wLanguage,
IntPtr lpData, uint cbData);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool EndUpdateResource(IntPtr hUpdate, bool fDiscard);
#endregion
public enum ICResult
{
Success,
FailBegin,
FailUpdate,
FailEnd
}
public static ICResult Write(string exeFilePath, byte[] Data, string NameRes, string TypeRes)
{
// Load executable
IntPtr handleExe = BeginUpdateResource(exeFilePath, false);
if (handleExe == null)
return ICResult.FailBegin;
// Get language identifier
CultureInfo currentCulture = CultureInfo.CurrentCulture;
int pid = ((ushort)currentCulture.LCID) & 0x3ff;
int sid = ((ushort)currentCulture.LCID) >> 10;
ushort languageID = (ushort)((((ushort)pid) << 10) | ((ushort)sid));
// Get pointer to data
GCHandle iconHandle = GCHandle.Alloc(Data, GCHandleType.Pinned);
// Replace Data
if (UpdateResource(handleExe, NameRes, TypeRes, languageID, iconHandle.AddrOfPinnedObject(), (uint)Data.Length))
{
if (EndUpdateResource(handleExe, false))
return ICResult.Success;
else
return ICResult.FailEnd;
}
else
return ICResult.FailUpdate;
}
}
Inscription à :
Commentaires (Atom)