From 425107b86e788dcf0c044b6aa1f83a2c8f20ee2f Mon Sep 17 00:00:00 2001 From: "mr.exodia" Date: Mon, 26 Aug 2013 01:23:50 +0200 Subject: [PATCH] - changed calling convention - added lib2a.bat (for MingW static library file) --- Release/TitanEngine.dll | Bin 668672 -> 629248 bytes Release/TitanEngine.exp | Bin 59755 -> 57343 bytes Release/TitanEngine.lib | Bin 104582 -> 98804 bytes Release/TitanEngine_x86.a | Bin 0 -> 311186 bytes Release/lib2a.bat | 5 + TitanEngine/LzmaDec.cpp | 1450 ++++++++++++----------- TitanEngine/TitanEngine.cbp | 1 + TitanEngine/TitanEngine.cpp | 955 +++++++-------- TitanEngine/TitanEngine.vcxproj | 4 + TitanEngine/TitanEngine.vcxproj.filters | 3 + TitanEngine/definitions.h | 818 ++++++------- TitanEngine/stdafx.h | 760 ++++++------ x64/Release/TitanEngine.dll | Bin 638464 -> 601088 bytes x64/Release/TitanEngine.exp | Bin 69539 -> 69104 bytes x64/Release/TitanEngine.lib | Bin 129000 -> 128046 bytes x64/Release/TitanEngine_x64.a | Bin 0 -> 311994 bytes x64/Release/lib2a.bat | 5 + 17 files changed, 2031 insertions(+), 1970 deletions(-) create mode 100644 Release/TitanEngine_x86.a create mode 100644 Release/lib2a.bat create mode 100644 x64/Release/TitanEngine_x64.a create mode 100644 x64/Release/lib2a.bat diff --git a/Release/TitanEngine.dll b/Release/TitanEngine.dll index 92dff00f4bef502d9a17fc41dcedaefc66435bd5..b9dce06572d3f488399ceaf69c922525e8e706c2 100644 GIT binary patch delta 178076 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≪Xg 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
B%K&`5=SF0L(rK+)) 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 delta 210265 zcmeFadt6mT_dkAS9}twwIS7Y4f{JqSF6RA$7xGdhpeL=Yv^0@Qt)R3tzyk&zPiZ@v z?n!F-l$wPpmKODxT4`EYkChemSZz8~R#s#_@qMqEz0U

$q>{^Hyk^jT4VA-7iH@o(<(%I#>Qp&D5t>|bI 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%0AlY#5BXt6dSy1L1a(s3ukNsc{j9!S~Poy1cNR6+G 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 delta 176419 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

Qd=ESHDV9jd}O~2 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 YqPCyi4VrgjypuvBfI+VV>x=UL04a>(IRF3v literal 69539 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 P$H$&V0E3?X1Va8FH{4^T diff --git a/x64/Release/TitanEngine.lib b/x64/Release/TitanEngine.lib index 439e3ccd0ee35f8a83f1a00c649fb4394692016a..2116e0902401fbb69ad2a886b54cefbeb38206f3 100644 GIT binary patch delta 18111 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 Mx#m^MCRmko^D7VI|TU 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

+^X&zrTLIUb4?#GqYyR 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ǞOX?xoCZ(FzR&wx#DpJrdcMf7s} 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 M9tt)(?K(;S2h6{|3jhEB literal 59755 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 diff --git a/Release/TitanEngine.lib b/Release/TitanEngine.lib index ce348a0431774d82317a490cf2af16d16ca1864e..83c063a1c7f702f3484b70c0d1c5b75892f962c6 100644 GIT binary patch literal 98804 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 literal 0 HcmV?d00001 diff --git a/Release/lib2a.bat b/Release/lib2a.bat new file mode 100644 index 0000000..556f7f2 --- /dev/null +++ b/Release/lib2a.bat @@ -0,0 +1,5 @@ +@echo off +set PATH=c:\MinGW64\bin +gendef TitanEngine.dll +dlltool --as-flags=--32 -m i386 -k --output-lib TitanEngine_x86.a --input-def TitanEngine.def +del TitanEngine.def \ No newline at end of file diff --git a/TitanEngine/LzmaDec.cpp b/TitanEngine/LzmaDec.cpp index fc56d84..5c53b41 100644 --- a/TitanEngine/LzmaDec.cpp +++ b/TitanEngine/LzmaDec.cpp @@ -116,8 +116,8 @@ StopCompilingDueBUG static const Byte kLiteralNextStates[kNumStates * 2] = { - 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5, - 7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10 + 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5, + 7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10 }; #define LZMA_DIC_MIN (1 << 12) @@ -137,880 +137,890 @@ Out: static int MY_FAST_CALL LzmaDec_DecodeReal(CLzmaDec *p, SizeT limit, const Byte *bufLimit) { - CLzmaProb *probs = p->probs; + CLzmaProb *probs = p->probs; - unsigned state = p->state; - UInt32 rep0 = p->reps[0], rep1 = p->reps[1], rep2 = p->reps[2], rep3 = p->reps[3]; - unsigned pbMask = ((unsigned)1 << (p->prop.pb)) - 1; - unsigned lpMask = ((unsigned)1 << (p->prop.lp)) - 1; - unsigned lc = p->prop.lc; + unsigned state = p->state; + UInt32 rep0 = p->reps[0], rep1 = p->reps[1], rep2 = p->reps[2], rep3 = p->reps[3]; + unsigned pbMask = ((unsigned)1 << (p->prop.pb)) - 1; + unsigned lpMask = ((unsigned)1 << (p->prop.lp)) - 1; + unsigned lc = p->prop.lc; - Byte *dic = p->dic; - SizeT dicBufSize = p->dicBufSize; - SizeT dicPos = p->dicPos; - - UInt32 processedPos = p->processedPos; - UInt32 checkDicSize = p->checkDicSize; - unsigned len = 0; + Byte *dic = p->dic; + SizeT dicBufSize = p->dicBufSize; + SizeT dicPos = p->dicPos; - const Byte *buf = p->buf; - UInt32 range = p->range; - UInt32 code = p->code; + UInt32 processedPos = p->processedPos; + UInt32 checkDicSize = p->checkDicSize; + unsigned len = 0; - do - { - CLzmaProb *prob; - UInt32 bound; - unsigned ttt; - unsigned posState = processedPos & pbMask; + const Byte *buf = p->buf; + UInt32 range = p->range; + UInt32 code = p->code; - prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; - IF_BIT_0(prob) + do { - unsigned symbol; - UPDATE_0(prob); - prob = probs + Literal; - if (checkDicSize != 0 || processedPos != 0) - prob += (LZMA_LIT_SIZE * (((processedPos & lpMask) << lc) + - (dic[(dicPos == 0 ? dicBufSize : dicPos) - 1] >> (8 - lc)))); + CLzmaProb *prob; + UInt32 bound; + unsigned ttt; + unsigned posState = processedPos & pbMask; - if (state < kNumLitStates) - { - symbol = 1; - do { GET_BIT(prob + symbol, symbol) } while (symbol < 0x100); - } - else - { - unsigned matchByte = p->dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; - unsigned offs = 0x100; - symbol = 1; - do - { - unsigned bit; - CLzmaProb *probLit; - matchByte <<= 1; - bit = (matchByte & offs); - probLit = prob + offs + bit + symbol; - GET_BIT2(probLit, symbol, offs &= ~bit, offs &= bit) - } - while (symbol < 0x100); - } - dic[dicPos++] = (Byte)symbol; - processedPos++; - - state = kLiteralNextStates[state]; - /* if (state < 4) state = 0; else if (state < 10) state -= 3; else state -= 6; */ - continue; - } - else - { - UPDATE_1(prob); - prob = probs + IsRep + state; - IF_BIT_0(prob) - { - UPDATE_0(prob); - state += kNumStates; - prob = probs + LenCoder; - } - else - { - UPDATE_1(prob); - if (checkDicSize == 0 && processedPos == 0) - return SZ_ERROR_DATA; - prob = probs + IsRepG0 + state; + prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; IF_BIT_0(prob) { - UPDATE_0(prob); - prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; - IF_BIT_0(prob) - { + unsigned symbol; UPDATE_0(prob); - dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; - dicPos++; - processedPos++; - state = state < kNumLitStates ? 9 : 11; - continue; - } - UPDATE_1(prob); - } - else - { - UInt32 distance; - UPDATE_1(prob); - prob = probs + IsRepG1 + state; - IF_BIT_0(prob) - { - UPDATE_0(prob); - distance = rep1; - } - else - { - UPDATE_1(prob); - prob = probs + IsRepG2 + state; - IF_BIT_0(prob) + prob = probs + Literal; + if (checkDicSize != 0 || processedPos != 0) + prob += (LZMA_LIT_SIZE * (((processedPos & lpMask) << lc) + + (dic[(dicPos == 0 ? dicBufSize : dicPos) - 1] >> (8 - lc)))); + + if (state < kNumLitStates) { - UPDATE_0(prob); - distance = rep2; + symbol = 1; + do + { + GET_BIT(prob + symbol, symbol) + } + while (symbol < 0x100); } else { - UPDATE_1(prob); - distance = rep3; - rep3 = rep2; + unsigned matchByte = p->dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; + unsigned offs = 0x100; + symbol = 1; + do + { + unsigned bit; + CLzmaProb *probLit; + matchByte <<= 1; + bit = (matchByte & offs); + probLit = prob + offs + bit + symbol; + GET_BIT2(probLit, symbol, offs &= ~bit, offs &= bit) + } + while (symbol < 0x100); } - rep2 = rep1; - } - rep1 = rep0; - rep0 = distance; - } - state = state < kNumLitStates ? 8 : 11; - prob = probs + RepLenCoder; - } - { - unsigned limit, offset; - CLzmaProb *probLen = prob + LenChoice; - IF_BIT_0(probLen) - { - UPDATE_0(probLen); - probLen = prob + LenLow + (posState << kLenNumLowBits); - offset = 0; - limit = (1 << kLenNumLowBits); + dic[dicPos++] = (Byte)symbol; + processedPos++; + + state = kLiteralNextStates[state]; + /* if (state < 4) state = 0; else if (state < 10) state -= 3; else state -= 6; */ + continue; } else { - UPDATE_1(probLen); - probLen = prob + LenChoice2; - IF_BIT_0(probLen) - { - UPDATE_0(probLen); - probLen = prob + LenMid + (posState << kLenNumMidBits); - offset = kLenNumLowSymbols; - limit = (1 << kLenNumMidBits); - } - else - { - UPDATE_1(probLen); - probLen = prob + LenHigh; - offset = kLenNumLowSymbols + kLenNumMidSymbols; - limit = (1 << kLenNumHighBits); - } - } - TREE_DECODE(probLen, limit, len); - len += offset; - } - - if (state >= kNumStates) - { - UInt32 distance; - prob = probs + PosSlot + - ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << kNumPosSlotBits); - TREE_6_DECODE(prob, distance); - if (distance >= kStartPosModelIndex) - { - unsigned posSlot = (unsigned)distance; - int numDirectBits = (int)(((distance >> 1) - 1)); - distance = (2 | (distance & 1)); - if (posSlot < kEndPosModelIndex) - { - distance <<= numDirectBits; - prob = probs + SpecPos + distance - posSlot - 1; + UPDATE_1(prob); + prob = probs + IsRep + state; + IF_BIT_0(prob) { - UInt32 mask = 1; - unsigned i = 1; - do - { - GET_BIT2(prob + i, i, ; , distance |= mask); - mask <<= 1; - } - while (--numDirectBits != 0); + UPDATE_0(prob); + state += kNumStates; + prob = probs + LenCoder; } - } - else - { - numDirectBits -= kNumAlignBits; - do + else { - NORMALIZE - range >>= 1; - - { - UInt32 t; - code -= range; - t = (0 - ((UInt32)code >> 31)); /* (UInt32)((Int32)code >> 31) */ - distance = (distance << 1) + (t + 1); - code += range & t; - } - /* - distance <<= 1; - if (code >= range) - { - code -= range; - distance |= 1; - } - */ + UPDATE_1(prob); + if (checkDicSize == 0 && processedPos == 0) + return SZ_ERROR_DATA; + prob = probs + IsRepG0 + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; + IF_BIT_0(prob) + { + UPDATE_0(prob); + dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; + dicPos++; + processedPos++; + state = state < kNumLitStates ? 9 : 11; + continue; + } + UPDATE_1(prob); + } + else + { + UInt32 distance; + UPDATE_1(prob); + prob = probs + IsRepG1 + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + distance = rep1; + } + else + { + UPDATE_1(prob); + prob = probs + IsRepG2 + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + distance = rep2; + } + else + { + UPDATE_1(prob); + distance = rep3; + rep3 = rep2; + } + rep2 = rep1; + } + rep1 = rep0; + rep0 = distance; + } + state = state < kNumLitStates ? 8 : 11; + prob = probs + RepLenCoder; } - while (--numDirectBits != 0); - prob = probs + Align; - distance <<= kNumAlignBits; { - unsigned i = 1; - GET_BIT2(prob + i, i, ; , distance |= 1); - GET_BIT2(prob + i, i, ; , distance |= 2); - GET_BIT2(prob + i, i, ; , distance |= 4); - GET_BIT2(prob + i, i, ; , distance |= 8); + unsigned limit, offset; + CLzmaProb *probLen = prob + LenChoice; + IF_BIT_0(probLen) + { + UPDATE_0(probLen); + probLen = prob + LenLow + (posState << kLenNumLowBits); + offset = 0; + limit = (1 << kLenNumLowBits); + } + else + { + UPDATE_1(probLen); + probLen = prob + LenChoice2; + IF_BIT_0(probLen) + { + UPDATE_0(probLen); + probLen = prob + LenMid + (posState << kLenNumMidBits); + offset = kLenNumLowSymbols; + limit = (1 << kLenNumMidBits); + } + else + { + UPDATE_1(probLen); + probLen = prob + LenHigh; + offset = kLenNumLowSymbols + kLenNumMidSymbols; + limit = (1 << kLenNumHighBits); + } + } + TREE_DECODE(probLen, limit, len); + len += offset; } - if (distance == (UInt32)0xFFFFFFFF) + + if (state >= kNumStates) { - len += kMatchSpecLenStart; - state -= kNumStates; - break; + UInt32 distance; + prob = probs + PosSlot + + ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << kNumPosSlotBits); + TREE_6_DECODE(prob, distance); + if (distance >= kStartPosModelIndex) + { + unsigned posSlot = (unsigned)distance; + int numDirectBits = (int)(((distance >> 1) - 1)); + distance = (2 | (distance & 1)); + if (posSlot < kEndPosModelIndex) + { + distance <<= numDirectBits; + prob = probs + SpecPos + distance - posSlot - 1; + { + UInt32 mask = 1; + unsigned i = 1; + do + { + GET_BIT2(prob + i, i, ; , distance |= mask); + mask <<= 1; + } + while (--numDirectBits != 0); + } + } + else + { + numDirectBits -= kNumAlignBits; + do + { + NORMALIZE + range >>= 1; + + { + UInt32 t; + code -= range; + t = (0 - ((UInt32)code >> 31)); /* (UInt32)((Int32)code >> 31) */ + distance = (distance << 1) + (t + 1); + code += range & t; + } + /* + distance <<= 1; + if (code >= range) + { + code -= range; + distance |= 1; + } + */ + } + while (--numDirectBits != 0); + prob = probs + Align; + distance <<= kNumAlignBits; + { + unsigned i = 1; + GET_BIT2(prob + i, i, ; , distance |= 1); + GET_BIT2(prob + i, i, ; , distance |= 2); + GET_BIT2(prob + i, i, ; , distance |= 4); + GET_BIT2(prob + i, i, ; , distance |= 8); + } + if (distance == (UInt32)0xFFFFFFFF) + { + len += kMatchSpecLenStart; + state -= kNumStates; + break; + } + } + } + rep3 = rep2; + rep2 = rep1; + rep1 = rep0; + rep0 = distance + 1; + if (checkDicSize == 0) + { + if (distance >= processedPos) + return SZ_ERROR_DATA; + } + else if (distance >= checkDicSize) + return SZ_ERROR_DATA; + state = (state < kNumStates + kNumLitStates) ? kNumLitStates : kNumLitStates + 3; + /* state = kLiteralNextStates[state]; */ } - } - } - rep3 = rep2; - rep2 = rep1; - rep1 = rep0; - rep0 = distance + 1; - if (checkDicSize == 0) - { - if (distance >= processedPos) - return SZ_ERROR_DATA; - } - else if (distance >= checkDicSize) - return SZ_ERROR_DATA; - state = (state < kNumStates + kNumLitStates) ? kNumLitStates : kNumLitStates + 3; - /* state = kLiteralNextStates[state]; */ - } - len += kMatchMinLen; + len += kMatchMinLen; - if (limit == dicPos) - return SZ_ERROR_DATA; - { - SizeT rem = limit - dicPos; - unsigned curLen = ((rem < len) ? (unsigned)rem : len); - SizeT pos = (dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0); + if (limit == dicPos) + return SZ_ERROR_DATA; + { + SizeT rem = limit - dicPos; + unsigned curLen = ((rem < len) ? (unsigned)rem : len); + SizeT pos = (dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0); - processedPos += curLen; + processedPos += curLen; - len -= curLen; - if (pos + curLen <= dicBufSize) - { - Byte *dest = dic + dicPos; - ptrdiff_t src = (ptrdiff_t)pos - (ptrdiff_t)dicPos; - const Byte *lim = dest + curLen; - dicPos += curLen; - do - *(dest) = (Byte)*(dest + src); - while (++dest != lim); + len -= curLen; + if (pos + curLen <= dicBufSize) + { + Byte *dest = dic + dicPos; + ptrdiff_t src = (ptrdiff_t)pos - (ptrdiff_t)dicPos; + const Byte *lim = dest + curLen; + dicPos += curLen; + do + *(dest) = (Byte)*(dest + src); + while (++dest != lim); + } + else + { + do + { + dic[dicPos++] = dic[pos]; + if (++pos == dicBufSize) + pos = 0; + } + while (--curLen != 0); + } + } } - else - { - do - { - dic[dicPos++] = dic[pos]; - if (++pos == dicBufSize) - pos = 0; - } - while (--curLen != 0); - } - } } - } - while (dicPos < limit && buf < bufLimit); - NORMALIZE; - p->buf = buf; - p->range = range; - p->code = code; - p->remainLen = len; - p->dicPos = dicPos; - p->processedPos = processedPos; - p->reps[0] = rep0; - p->reps[1] = rep1; - p->reps[2] = rep2; - p->reps[3] = rep3; - p->state = state; + while (dicPos < limit && buf < bufLimit); + NORMALIZE; + p->buf = buf; + p->range = range; + p->code = code; + p->remainLen = len; + p->dicPos = dicPos; + p->processedPos = processedPos; + p->reps[0] = rep0; + p->reps[1] = rep1; + p->reps[2] = rep2; + p->reps[3] = rep3; + p->state = state; - return SZ_OK; + return SZ_OK; } static void MY_FAST_CALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit) { - if (p->remainLen != 0 && p->remainLen < kMatchSpecLenStart) - { - Byte *dic = p->dic; - SizeT dicPos = p->dicPos; - SizeT dicBufSize = p->dicBufSize; - unsigned len = p->remainLen; - UInt32 rep0 = p->reps[0]; - if (limit - dicPos < len) - len = (unsigned)(limit - dicPos); - - if (p->checkDicSize == 0 && p->prop.dicSize - p->processedPos <= len) - p->checkDicSize = p->prop.dicSize; - - p->processedPos += len; - p->remainLen -= len; - while (len-- != 0) + if (p->remainLen != 0 && p->remainLen < kMatchSpecLenStart) { - dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; - dicPos++; + Byte *dic = p->dic; + SizeT dicPos = p->dicPos; + SizeT dicBufSize = p->dicBufSize; + unsigned len = p->remainLen; + UInt32 rep0 = p->reps[0]; + if (limit - dicPos < len) + len = (unsigned)(limit - dicPos); + + if (p->checkDicSize == 0 && p->prop.dicSize - p->processedPos <= len) + p->checkDicSize = p->prop.dicSize; + + p->processedPos += len; + p->remainLen -= len; + while (len-- != 0) + { + dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; + dicPos++; + } + p->dicPos = dicPos; } - p->dicPos = dicPos; - } } static int MY_FAST_CALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, const Byte *bufLimit) { - do - { - SizeT limit2 = limit; - if (p->checkDicSize == 0) + do { - UInt32 rem = p->prop.dicSize - p->processedPos; - if (limit - p->dicPos > rem) - limit2 = p->dicPos + rem; + SizeT limit2 = limit; + if (p->checkDicSize == 0) + { + UInt32 rem = p->prop.dicSize - p->processedPos; + if (limit - p->dicPos > rem) + limit2 = p->dicPos + rem; + } + RINOK(LzmaDec_DecodeReal(p, limit2, bufLimit)); + if (p->processedPos >= p->prop.dicSize) + p->checkDicSize = p->prop.dicSize; + LzmaDec_WriteRem(p, limit); } - RINOK(LzmaDec_DecodeReal(p, limit2, bufLimit)); - if (p->processedPos >= p->prop.dicSize) - p->checkDicSize = p->prop.dicSize; - LzmaDec_WriteRem(p, limit); - } - while (p->dicPos < limit && p->buf < bufLimit && p->remainLen < kMatchSpecLenStart); + while (p->dicPos < limit && p->buf < bufLimit && p->remainLen < kMatchSpecLenStart); - if (p->remainLen > kMatchSpecLenStart) - { - p->remainLen = kMatchSpecLenStart; - } - return 0; + if (p->remainLen > kMatchSpecLenStart) + { + p->remainLen = kMatchSpecLenStart; + } + return 0; } typedef enum { - DUMMY_ERROR, /* unexpected end of input stream */ - DUMMY_LIT, - DUMMY_MATCH, - DUMMY_REP + DUMMY_ERROR, /* unexpected end of input stream */ + DUMMY_LIT, + DUMMY_MATCH, + DUMMY_REP } ELzmaDummy; static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, SizeT inSize) { - UInt32 range = p->range; - UInt32 code = p->code; - const Byte *bufLimit = buf + inSize; - CLzmaProb *probs = p->probs; - unsigned state = p->state; - ELzmaDummy res; + UInt32 range = p->range; + UInt32 code = p->code; + const Byte *bufLimit = buf + inSize; + CLzmaProb *probs = p->probs; + unsigned state = p->state; + ELzmaDummy res; - { - CLzmaProb *prob; - UInt32 bound; - unsigned ttt; - unsigned posState = (p->processedPos) & ((1 << p->prop.pb) - 1); - - prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; - IF_BIT_0_CHECK(prob) { - UPDATE_0_CHECK + CLzmaProb *prob; + UInt32 bound; + unsigned ttt; + unsigned posState = (p->processedPos) & ((1 << p->prop.pb) - 1); - /* if (bufLimit - buf >= 7) return DUMMY_LIT; */ - - prob = probs + Literal; - if (p->checkDicSize != 0 || p->processedPos != 0) - prob += (LZMA_LIT_SIZE * - ((((p->processedPos) & ((1 << (p->prop.lp)) - 1)) << p->prop.lc) + - (p->dic[(p->dicPos == 0 ? p->dicBufSize : p->dicPos) - 1] >> (8 - p->prop.lc)))); - - if (state < kNumLitStates) - { - unsigned symbol = 1; - do { GET_BIT_CHECK(prob + symbol, symbol) } while (symbol < 0x100); - } - else - { - unsigned matchByte = p->dic[p->dicPos - p->reps[0] + - ((p->dicPos < p->reps[0]) ? p->dicBufSize : 0)]; - unsigned offs = 0x100; - unsigned symbol = 1; - do - { - unsigned bit; - CLzmaProb *probLit; - matchByte <<= 1; - bit = (matchByte & offs); - probLit = prob + offs + bit + symbol; - GET_BIT2_CHECK(probLit, symbol, offs &= ~bit, offs &= bit) - } - while (symbol < 0x100); - } - res = DUMMY_LIT; - } - else - { - unsigned len; - UPDATE_1_CHECK; - - prob = probs + IsRep + state; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK; - state = 0; - prob = probs + LenCoder; - res = DUMMY_MATCH; - } - else - { - UPDATE_1_CHECK; - res = DUMMY_REP; - prob = probs + IsRepG0 + state; + prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; IF_BIT_0_CHECK(prob) { - UPDATE_0_CHECK; - prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK; - NORMALIZE_CHECK; - return DUMMY_REP; - } - else - { - UPDATE_1_CHECK; - } - } - else - { - UPDATE_1_CHECK; - prob = probs + IsRepG1 + state; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK; - } - else - { - UPDATE_1_CHECK; - prob = probs + IsRepG2 + state; - IF_BIT_0_CHECK(prob) + UPDATE_0_CHECK + + /* if (bufLimit - buf >= 7) return DUMMY_LIT; */ + + prob = probs + Literal; + if (p->checkDicSize != 0 || p->processedPos != 0) + prob += (LZMA_LIT_SIZE * + ((((p->processedPos) & ((1 << (p->prop.lp)) - 1)) << p->prop.lc) + + (p->dic[(p->dicPos == 0 ? p->dicBufSize : p->dicPos) - 1] >> (8 - p->prop.lc)))); + + if (state < kNumLitStates) { - UPDATE_0_CHECK; + unsigned symbol = 1; + do + { + GET_BIT_CHECK(prob + symbol, symbol) + } + while (symbol < 0x100); } else { - UPDATE_1_CHECK; + unsigned matchByte = p->dic[p->dicPos - p->reps[0] + + ((p->dicPos < p->reps[0]) ? p->dicBufSize : 0)]; + unsigned offs = 0x100; + unsigned symbol = 1; + do + { + unsigned bit; + CLzmaProb *probLit; + matchByte <<= 1; + bit = (matchByte & offs); + probLit = prob + offs + bit + symbol; + GET_BIT2_CHECK(probLit, symbol, offs &= ~bit, offs &= bit) + } + while (symbol < 0x100); } - } - } - state = kNumStates; - prob = probs + RepLenCoder; - } - { - unsigned limit, offset; - CLzmaProb *probLen = prob + LenChoice; - IF_BIT_0_CHECK(probLen) - { - UPDATE_0_CHECK; - probLen = prob + LenLow + (posState << kLenNumLowBits); - offset = 0; - limit = 1 << kLenNumLowBits; + res = DUMMY_LIT; } else { - UPDATE_1_CHECK; - probLen = prob + LenChoice2; - IF_BIT_0_CHECK(probLen) - { - UPDATE_0_CHECK; - probLen = prob + LenMid + (posState << kLenNumMidBits); - offset = kLenNumLowSymbols; - limit = 1 << kLenNumMidBits; - } - else - { + unsigned len; UPDATE_1_CHECK; - probLen = prob + LenHigh; - offset = kLenNumLowSymbols + kLenNumMidSymbols; - limit = 1 << kLenNumHighBits; - } - } - TREE_DECODE_CHECK(probLen, limit, len); - len += offset; - } - if (state < 4) - { - unsigned posSlot; - prob = probs + PosSlot + - ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << - kNumPosSlotBits); - TREE_DECODE_CHECK(prob, 1 << kNumPosSlotBits, posSlot); - if (posSlot >= kStartPosModelIndex) - { - int numDirectBits = ((posSlot >> 1) - 1); - - /* if (bufLimit - buf >= 8) return DUMMY_MATCH; */ - - if (posSlot < kEndPosModelIndex) - { - prob = probs + SpecPos + ((2 | (posSlot & 1)) << numDirectBits) - posSlot - 1; - } - else - { - numDirectBits -= kNumAlignBits; - do + prob = probs + IsRep + state; + IF_BIT_0_CHECK(prob) { - NORMALIZE_CHECK - range >>= 1; - code -= range & (((code - range) >> 31) - 1); - /* if (code >= range) code -= range; */ + UPDATE_0_CHECK; + state = 0; + prob = probs + LenCoder; + res = DUMMY_MATCH; } - while (--numDirectBits != 0); - prob = probs + Align; - numDirectBits = kNumAlignBits; - } - { - unsigned i = 1; - do + else { - GET_BIT_CHECK(prob + i, i); + UPDATE_1_CHECK; + res = DUMMY_REP; + prob = probs + IsRepG0 + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + NORMALIZE_CHECK; + return DUMMY_REP; + } + else + { + UPDATE_1_CHECK; + } + } + else + { + UPDATE_1_CHECK; + prob = probs + IsRepG1 + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + } + else + { + UPDATE_1_CHECK; + prob = probs + IsRepG2 + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + } + else + { + UPDATE_1_CHECK; + } + } + } + state = kNumStates; + prob = probs + RepLenCoder; + } + { + unsigned limit, offset; + CLzmaProb *probLen = prob + LenChoice; + IF_BIT_0_CHECK(probLen) + { + UPDATE_0_CHECK; + probLen = prob + LenLow + (posState << kLenNumLowBits); + offset = 0; + limit = 1 << kLenNumLowBits; + } + else + { + UPDATE_1_CHECK; + probLen = prob + LenChoice2; + IF_BIT_0_CHECK(probLen) + { + UPDATE_0_CHECK; + probLen = prob + LenMid + (posState << kLenNumMidBits); + offset = kLenNumLowSymbols; + limit = 1 << kLenNumMidBits; + } + else + { + UPDATE_1_CHECK; + probLen = prob + LenHigh; + offset = kLenNumLowSymbols + kLenNumMidSymbols; + limit = 1 << kLenNumHighBits; + } + } + TREE_DECODE_CHECK(probLen, limit, len); + len += offset; + } + + if (state < 4) + { + unsigned posSlot; + prob = probs + PosSlot + + ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << + kNumPosSlotBits); + TREE_DECODE_CHECK(prob, 1 << kNumPosSlotBits, posSlot); + if (posSlot >= kStartPosModelIndex) + { + int numDirectBits = ((posSlot >> 1) - 1); + + /* if (bufLimit - buf >= 8) return DUMMY_MATCH; */ + + if (posSlot < kEndPosModelIndex) + { + prob = probs + SpecPos + ((2 | (posSlot & 1)) << numDirectBits) - posSlot - 1; + } + else + { + numDirectBits -= kNumAlignBits; + do + { + NORMALIZE_CHECK + range >>= 1; + code -= range & (((code - range) >> 31) - 1); + /* if (code >= range) code -= range; */ + } + while (--numDirectBits != 0); + prob = probs + Align; + numDirectBits = kNumAlignBits; + } + { + unsigned i = 1; + do + { + GET_BIT_CHECK(prob + i, i); + } + while (--numDirectBits != 0); + } + } } - while (--numDirectBits != 0); - } } - } } - } - NORMALIZE_CHECK; - return res; + NORMALIZE_CHECK; + return res; } static void LzmaDec_InitRc(CLzmaDec *p, const Byte *data) { - p->code = ((UInt32)data[1] << 24) | ((UInt32)data[2] << 16) | ((UInt32)data[3] << 8) | ((UInt32)data[4]); - p->range = 0xFFFFFFFF; - p->needFlush = 0; + p->code = ((UInt32)data[1] << 24) | ((UInt32)data[2] << 16) | ((UInt32)data[3] << 8) | ((UInt32)data[4]); + p->range = 0xFFFFFFFF; + p->needFlush = 0; } void LzmaDec_InitDicAndState(CLzmaDec *p, Bool initDic, Bool initState) { - p->needFlush = 1; - p->remainLen = 0; - p->tempBufSize = 0; + p->needFlush = 1; + p->remainLen = 0; + p->tempBufSize = 0; - if (initDic) - { - p->processedPos = 0; - p->checkDicSize = 0; - p->needInitState = 1; - } - if (initState) - p->needInitState = 1; + if (initDic) + { + p->processedPos = 0; + p->checkDicSize = 0; + p->needInitState = 1; + } + if (initState) + p->needInitState = 1; } void LzmaDec_Init(CLzmaDec *p) { - p->dicPos = 0; - LzmaDec_InitDicAndState(p, True, True); + p->dicPos = 0; + LzmaDec_InitDicAndState(p, True, True); } static void LzmaDec_InitStateReal(CLzmaDec *p) { - UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (p->prop.lc + p->prop.lp)); - UInt32 i; - CLzmaProb *probs = p->probs; - for (i = 0; i < numProbs; i++) - probs[i] = kBitModelTotal >> 1; - p->reps[0] = p->reps[1] = p->reps[2] = p->reps[3] = 1; - p->state = 0; - p->needInitState = 0; + UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (p->prop.lc + p->prop.lp)); + UInt32 i; + CLzmaProb *probs = p->probs; + for (i = 0; i < numProbs; i++) + probs[i] = kBitModelTotal >> 1; + p->reps[0] = p->reps[1] = p->reps[2] = p->reps[3] = 1; + p->state = 0; + p->needInitState = 0; } SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen, - ELzmaFinishMode finishMode, ELzmaStatus *status) + ELzmaFinishMode finishMode, ELzmaStatus *status) { - SizeT inSize = *srcLen; - (*srcLen) = 0; - LzmaDec_WriteRem(p, dicLimit); - - *status = LZMA_STATUS_NOT_SPECIFIED; + SizeT inSize = *srcLen; + (*srcLen) = 0; + LzmaDec_WriteRem(p, dicLimit); - while (p->remainLen != kMatchSpecLenStart) - { - int checkEndMarkNow; + *status = LZMA_STATUS_NOT_SPECIFIED; - if (p->needFlush != 0) - { - for (; inSize > 0 && p->tempBufSize < RC_INIT_SIZE; (*srcLen)++, inSize--) - p->tempBuf[p->tempBufSize++] = *src++; - if (p->tempBufSize < RC_INIT_SIZE) + while (p->remainLen != kMatchSpecLenStart) + { + int checkEndMarkNow; + + if (p->needFlush != 0) { - *status = LZMA_STATUS_NEEDS_MORE_INPUT; - return SZ_OK; + for (; inSize > 0 && p->tempBufSize < RC_INIT_SIZE; (*srcLen)++, inSize--) + p->tempBuf[p->tempBufSize++] = *src++; + if (p->tempBufSize < RC_INIT_SIZE) + { + *status = LZMA_STATUS_NEEDS_MORE_INPUT; + return SZ_OK; + } + if (p->tempBuf[0] != 0) + return SZ_ERROR_DATA; + + LzmaDec_InitRc(p, p->tempBuf); + p->tempBufSize = 0; } - if (p->tempBuf[0] != 0) - return SZ_ERROR_DATA; - LzmaDec_InitRc(p, p->tempBuf); - p->tempBufSize = 0; - } + checkEndMarkNow = 0; + if (p->dicPos >= dicLimit) + { + if (p->remainLen == 0 && p->code == 0) + { + *status = LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK; + return SZ_OK; + } + if (finishMode == LZMA_FINISH_ANY) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_OK; + } + if (p->remainLen != 0) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_ERROR_DATA; + } + checkEndMarkNow = 1; + } - checkEndMarkNow = 0; - if (p->dicPos >= dicLimit) - { - if (p->remainLen == 0 && p->code == 0) - { - *status = LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK; - return SZ_OK; - } - if (finishMode == LZMA_FINISH_ANY) - { - *status = LZMA_STATUS_NOT_FINISHED; - return SZ_OK; - } - if (p->remainLen != 0) - { - *status = LZMA_STATUS_NOT_FINISHED; - return SZ_ERROR_DATA; - } - checkEndMarkNow = 1; - } + if (p->needInitState) + LzmaDec_InitStateReal(p); - if (p->needInitState) - LzmaDec_InitStateReal(p); - - if (p->tempBufSize == 0) - { - SizeT processed; - const Byte *bufLimit; - if (inSize < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) + if (p->tempBufSize == 0) { - int dummyRes = LzmaDec_TryDummy(p, src, inSize); - if (dummyRes == DUMMY_ERROR) - { - memcpy(p->tempBuf, src, inSize); - p->tempBufSize = (unsigned)inSize; - (*srcLen) += inSize; - *status = LZMA_STATUS_NEEDS_MORE_INPUT; - return SZ_OK; - } - if (checkEndMarkNow && dummyRes != DUMMY_MATCH) - { - *status = LZMA_STATUS_NOT_FINISHED; - return SZ_ERROR_DATA; - } - bufLimit = src; + SizeT processed; + const Byte *bufLimit; + if (inSize < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) + { + int dummyRes = LzmaDec_TryDummy(p, src, inSize); + if (dummyRes == DUMMY_ERROR) + { + memcpy(p->tempBuf, src, inSize); + p->tempBufSize = (unsigned)inSize; + (*srcLen) += inSize; + *status = LZMA_STATUS_NEEDS_MORE_INPUT; + return SZ_OK; + } + if (checkEndMarkNow && dummyRes != DUMMY_MATCH) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_ERROR_DATA; + } + bufLimit = src; + } + else + bufLimit = src + inSize - LZMA_REQUIRED_INPUT_MAX; + p->buf = src; + if (LzmaDec_DecodeReal2(p, dicLimit, bufLimit) != 0) + return SZ_ERROR_DATA; + processed = (SizeT)(p->buf - src); + (*srcLen) += processed; + src += processed; + inSize -= processed; } else - bufLimit = src + inSize - LZMA_REQUIRED_INPUT_MAX; - p->buf = src; - if (LzmaDec_DecodeReal2(p, dicLimit, bufLimit) != 0) - return SZ_ERROR_DATA; - processed = (SizeT)(p->buf - src); - (*srcLen) += processed; - src += processed; - inSize -= processed; - } - else - { - unsigned rem = p->tempBufSize, lookAhead = 0; - while (rem < LZMA_REQUIRED_INPUT_MAX && lookAhead < inSize) - p->tempBuf[rem++] = src[lookAhead++]; - p->tempBufSize = rem; - if (rem < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) { - int dummyRes = LzmaDec_TryDummy(p, p->tempBuf, rem); - if (dummyRes == DUMMY_ERROR) - { + unsigned rem = p->tempBufSize, lookAhead = 0; + while (rem < LZMA_REQUIRED_INPUT_MAX && lookAhead < inSize) + p->tempBuf[rem++] = src[lookAhead++]; + p->tempBufSize = rem; + if (rem < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) + { + int dummyRes = LzmaDec_TryDummy(p, p->tempBuf, rem); + if (dummyRes == DUMMY_ERROR) + { + (*srcLen) += lookAhead; + *status = LZMA_STATUS_NEEDS_MORE_INPUT; + return SZ_OK; + } + if (checkEndMarkNow && dummyRes != DUMMY_MATCH) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_ERROR_DATA; + } + } + p->buf = p->tempBuf; + if (LzmaDec_DecodeReal2(p, dicLimit, p->buf) != 0) + return SZ_ERROR_DATA; + lookAhead -= (rem - (unsigned)(p->buf - p->tempBuf)); (*srcLen) += lookAhead; - *status = LZMA_STATUS_NEEDS_MORE_INPUT; - return SZ_OK; - } - if (checkEndMarkNow && dummyRes != DUMMY_MATCH) - { - *status = LZMA_STATUS_NOT_FINISHED; - return SZ_ERROR_DATA; - } + src += lookAhead; + inSize -= lookAhead; + p->tempBufSize = 0; } - p->buf = p->tempBuf; - if (LzmaDec_DecodeReal2(p, dicLimit, p->buf) != 0) - return SZ_ERROR_DATA; - lookAhead -= (rem - (unsigned)(p->buf - p->tempBuf)); - (*srcLen) += lookAhead; - src += lookAhead; - inSize -= lookAhead; - p->tempBufSize = 0; - } - } - if (p->code == 0) - *status = LZMA_STATUS_FINISHED_WITH_MARK; - return (p->code == 0) ? SZ_OK : SZ_ERROR_DATA; + } + if (p->code == 0) + *status = LZMA_STATUS_FINISHED_WITH_MARK; + return (p->code == 0) ? SZ_OK : SZ_ERROR_DATA; } SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status) { - SizeT outSize = *destLen; - SizeT inSize = *srcLen; - *srcLen = *destLen = 0; - for (;;) - { - SizeT inSizeCur = inSize, outSizeCur, dicPos; - ELzmaFinishMode curFinishMode; - SRes res; - if (p->dicPos == p->dicBufSize) - p->dicPos = 0; - dicPos = p->dicPos; - if (outSize > p->dicBufSize - dicPos) + SizeT outSize = *destLen; + SizeT inSize = *srcLen; + *srcLen = *destLen = 0; + for (;;) { - outSizeCur = p->dicBufSize; - curFinishMode = LZMA_FINISH_ANY; - } - else - { - outSizeCur = dicPos + outSize; - curFinishMode = finishMode; - } + SizeT inSizeCur = inSize, outSizeCur, dicPos; + ELzmaFinishMode curFinishMode; + SRes res; + if (p->dicPos == p->dicBufSize) + p->dicPos = 0; + dicPos = p->dicPos; + if (outSize > p->dicBufSize - dicPos) + { + outSizeCur = p->dicBufSize; + curFinishMode = LZMA_FINISH_ANY; + } + else + { + outSizeCur = dicPos + outSize; + curFinishMode = finishMode; + } - res = LzmaDec_DecodeToDic(p, outSizeCur, src, &inSizeCur, curFinishMode, status); - src += inSizeCur; - inSize -= inSizeCur; - *srcLen += inSizeCur; - outSizeCur = p->dicPos - dicPos; - memcpy(dest, p->dic + dicPos, outSizeCur); - dest += outSizeCur; - outSize -= outSizeCur; - *destLen += outSizeCur; - if (res != 0) - return res; - if (outSizeCur == 0 || outSize == 0) - return SZ_OK; - } + res = LzmaDec_DecodeToDic(p, outSizeCur, src, &inSizeCur, curFinishMode, status); + src += inSizeCur; + inSize -= inSizeCur; + *srcLen += inSizeCur; + outSizeCur = p->dicPos - dicPos; + memcpy(dest, p->dic + dicPos, outSizeCur); + dest += outSizeCur; + outSize -= outSizeCur; + *destLen += outSizeCur; + if (res != 0) + return res; + if (outSizeCur == 0 || outSize == 0) + return SZ_OK; + } } void LzmaDec_FreeProbs(CLzmaDec *p, ISzAlloc *alloc) { - alloc->Free(alloc, p->probs); - p->probs = 0; + alloc->Free(alloc, p->probs); + p->probs = 0; } static void LzmaDec_FreeDict(CLzmaDec *p, ISzAlloc *alloc) { - alloc->Free(alloc, p->dic); - p->dic = 0; + alloc->Free(alloc, p->dic); + p->dic = 0; } void LzmaDec_Free(CLzmaDec *p, ISzAlloc *alloc) { - LzmaDec_FreeProbs(p, alloc); - LzmaDec_FreeDict(p, alloc); + LzmaDec_FreeProbs(p, alloc); + LzmaDec_FreeDict(p, alloc); } SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size) { - UInt32 dicSize; - Byte d; - - if (size < LZMA_PROPS_SIZE) - return SZ_ERROR_UNSUPPORTED; - else - dicSize = data[1] | ((UInt32)data[2] << 8) | ((UInt32)data[3] << 16) | ((UInt32)data[4] << 24); - - if (dicSize < LZMA_DIC_MIN) - dicSize = LZMA_DIC_MIN; - p->dicSize = dicSize; + UInt32 dicSize; + Byte d; - d = data[0]; - if (d >= (9 * 5 * 5)) - return SZ_ERROR_UNSUPPORTED; + if (size < LZMA_PROPS_SIZE) + return SZ_ERROR_UNSUPPORTED; + else + dicSize = data[1] | ((UInt32)data[2] << 8) | ((UInt32)data[3] << 16) | ((UInt32)data[4] << 24); - p->lc = d % 9; - d /= 9; - p->pb = d / 5; - p->lp = d % 5; + if (dicSize < LZMA_DIC_MIN) + dicSize = LZMA_DIC_MIN; + p->dicSize = dicSize; - return SZ_OK; + d = data[0]; + if (d >= (9 * 5 * 5)) + return SZ_ERROR_UNSUPPORTED; + + p->lc = d % 9; + d /= 9; + p->pb = d / 5; + p->lp = d % 5; + + return SZ_OK; } static SRes LzmaDec_AllocateProbs2(CLzmaDec *p, const CLzmaProps *propNew, ISzAlloc *alloc) { - UInt32 numProbs = LzmaProps_GetNumProbs(propNew); - if (p->probs == 0 || numProbs != p->numProbs) - { - LzmaDec_FreeProbs(p, alloc); - p->probs = (CLzmaProb *)alloc->Alloc(alloc, numProbs * sizeof(CLzmaProb)); - p->numProbs = numProbs; - if (p->probs == 0) - return SZ_ERROR_MEM; - } - return SZ_OK; + UInt32 numProbs = LzmaProps_GetNumProbs(propNew); + if (p->probs == 0 || numProbs != p->numProbs) + { + LzmaDec_FreeProbs(p, alloc); + p->probs = (CLzmaProb *)alloc->Alloc(alloc, numProbs * sizeof(CLzmaProb)); + p->numProbs = numProbs; + if (p->probs == 0) + return SZ_ERROR_MEM; + } + return SZ_OK; } SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc) { - CLzmaProps propNew; - RINOK(LzmaProps_Decode(&propNew, props, propsSize)); - RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); - p->prop = propNew; - return SZ_OK; + CLzmaProps propNew; + RINOK(LzmaProps_Decode(&propNew, props, propsSize)); + RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); + p->prop = propNew; + return SZ_OK; } SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc) { - CLzmaProps propNew; - SizeT dicBufSize; - RINOK(LzmaProps_Decode(&propNew, props, propsSize)); - RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); - dicBufSize = propNew.dicSize; - if (p->dic == 0 || dicBufSize != p->dicBufSize) - { - LzmaDec_FreeDict(p, alloc); - p->dic = (Byte *)alloc->Alloc(alloc, dicBufSize); - if (p->dic == 0) + CLzmaProps propNew; + SizeT dicBufSize; + RINOK(LzmaProps_Decode(&propNew, props, propsSize)); + RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); + dicBufSize = propNew.dicSize; + if (p->dic == 0 || dicBufSize != p->dicBufSize) { - LzmaDec_FreeProbs(p, alloc); - return SZ_ERROR_MEM; + LzmaDec_FreeDict(p, alloc); + p->dic = (Byte *)alloc->Alloc(alloc, dicBufSize); + if (p->dic == 0) + { + LzmaDec_FreeProbs(p, alloc); + return SZ_ERROR_MEM; + } } - } - p->dicBufSize = dicBufSize; - p->prop = propNew; - return SZ_OK; + p->dicBufSize = dicBufSize; + p->prop = propNew; + return SZ_OK; } SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, - const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, - ELzmaStatus *status, ISzAlloc *alloc) + const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, + ELzmaStatus *status, ISzAlloc *alloc) { - CLzmaDec p; - SRes res; - SizeT inSize = *srcLen; - SizeT outSize = *destLen; - *srcLen = *destLen = 0; - if (inSize < RC_INIT_SIZE) - return SZ_ERROR_INPUT_EOF; + CLzmaDec p; + SRes res; + SizeT inSize = *srcLen; + SizeT outSize = *destLen; + *srcLen = *destLen = 0; + if (inSize < RC_INIT_SIZE) + return SZ_ERROR_INPUT_EOF; - LzmaDec_Construct(&p); - res = LzmaDec_AllocateProbs(&p, propData, propSize, alloc); - if (res != 0) + LzmaDec_Construct(&p); + res = LzmaDec_AllocateProbs(&p, propData, propSize, alloc); + if (res != 0) + return res; + p.dic = dest; + p.dicBufSize = outSize; + + LzmaDec_Init(&p); + + *srcLen = inSize; + res = LzmaDec_DecodeToDic(&p, outSize, src, srcLen, finishMode, status); + + if (res == SZ_OK && *status == LZMA_STATUS_NEEDS_MORE_INPUT) + res = SZ_ERROR_INPUT_EOF; + + (*destLen) = p.dicPos; + LzmaDec_FreeProbs(&p, alloc); return res; - p.dic = dest; - p.dicBufSize = outSize; - - LzmaDec_Init(&p); - - *srcLen = inSize; - res = LzmaDec_DecodeToDic(&p, outSize, src, srcLen, finishMode, status); - - if (res == SZ_OK && *status == LZMA_STATUS_NEEDS_MORE_INPUT) - res = SZ_ERROR_INPUT_EOF; - - (*destLen) = p.dicPos; - LzmaDec_FreeProbs(&p, alloc); - return res; } -void* LzmaAllocMem(void *p, size_t size){ - return(VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE)); +void* LzmaAllocMem(void *p, size_t size) +{ + return(VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE)); } -void LzmaFreeMem(void *p, void *address){ - VirtualFree(address, NULL, MEM_RELEASE); -} \ No newline at end of file +void LzmaFreeMem(void *p, void *address) +{ + VirtualFree(address, NULL, MEM_RELEASE); +} diff --git a/TitanEngine/TitanEngine.cbp b/TitanEngine/TitanEngine.cbp index 4df1413..d18e885 100644 --- a/TitanEngine/TitanEngine.cbp +++ b/TitanEngine/TitanEngine.cbp @@ -58,6 +58,7 @@ + diff --git a/TitanEngine/TitanEngine.cpp b/TitanEngine/TitanEngine.cpp index 13ce19c..cdf970b 100644 --- a/TitanEngine/TitanEngine.cpp +++ b/TitanEngine/TitanEngine.cpp @@ -364,7 +364,7 @@ void EngineGlobalTestFunction() void EngineExecutePluginReleaseCallBack() { - typedef void(__stdcall *fPluginReleaseExec)(); + typedef void(*fPluginReleaseExec)(); fPluginReleaseExec myPluginReleaseExec; for(unsigned int i = 0; i < Plugin.size(); i++) @@ -386,7 +386,7 @@ void EngineExecutePluginReleaseCallBack() void EngineExecutePluginResetCallBack() { - typedef void(__stdcall *fPluginResetExec)(); + typedef void(*fPluginResetExec)(); fPluginResetExec myPluginResetExec; for(unsigned int i = 0; i < Plugin.size(); i++) @@ -408,7 +408,7 @@ void EngineExecutePluginResetCallBack() void EngineExecutePluginDebugCallBack(LPDEBUG_EVENT debugEvent, int CallReason) { - typedef void(__stdcall *fPluginDebugExec)(LPDEBUG_EVENT debugEvent, int CallReason); + typedef void(*fPluginDebugExec)(LPDEBUG_EVENT debugEvent, int CallReason); fPluginDebugExec myPluginDebugExec; for(unsigned int i = 0; i < Plugin.size(); i++) @@ -2541,7 +2541,7 @@ void EngineCrc32PartialCRC(unsigned long *ulCRC, const unsigned char *sData, uns } } // TitanEngine.Dumper.functions: -__declspec(dllexport) bool __stdcall DumpProcess(HANDLE hProcess, LPVOID ImageBase, char* szDumpFileName, ULONG_PTR EntryPoint) +__declspec(dllexport) bool DumpProcess(HANDLE hProcess, LPVOID ImageBase, char* szDumpFileName, ULONG_PTR EntryPoint) { wchar_t uniDumpFileName[MAX_PATH] = {}; @@ -2556,7 +2556,7 @@ __declspec(dllexport) bool __stdcall DumpProcess(HANDLE hProcess, LPVOID ImageBa return(false); } } -__declspec(dllexport) bool __stdcall DumpProcessW(HANDLE hProcess, LPVOID ImageBase, wchar_t* szDumpFileName, ULONG_PTR EntryPoint) +__declspec(dllexport) bool DumpProcessW(HANDLE hProcess, LPVOID ImageBase, wchar_t* szDumpFileName, ULONG_PTR EntryPoint) { int i = 0; @@ -2867,7 +2867,7 @@ __declspec(dllexport) bool __stdcall DumpProcessW(HANDLE hProcess, LPVOID ImageB } return(false); } -__declspec(dllexport) bool __stdcall DumpProcessEx(DWORD ProcessId, LPVOID ImageBase, char* szDumpFileName, ULONG_PTR EntryPoint) +__declspec(dllexport) bool DumpProcessEx(DWORD ProcessId, LPVOID ImageBase, char* szDumpFileName, ULONG_PTR EntryPoint) { wchar_t uniDumpFileName[MAX_PATH] = {}; @@ -2882,7 +2882,7 @@ __declspec(dllexport) bool __stdcall DumpProcessEx(DWORD ProcessId, LPVOID Image return(false); } } -__declspec(dllexport) bool __stdcall DumpProcessExW(DWORD ProcessId, LPVOID ImageBase, wchar_t* szDumpFileName, ULONG_PTR EntryPoint) +__declspec(dllexport) bool DumpProcessExW(DWORD ProcessId, LPVOID ImageBase, wchar_t* szDumpFileName, ULONG_PTR EntryPoint) { HANDLE hProcess = 0; @@ -2907,7 +2907,7 @@ __declspec(dllexport) bool __stdcall DumpProcessExW(DWORD ProcessId, LPVOID Imag return(false); } } -__declspec(dllexport) bool __stdcall DumpMemory(HANDLE hProcess, LPVOID MemoryStart, ULONG_PTR MemorySize, char* szDumpFileName) +__declspec(dllexport) bool DumpMemory(HANDLE hProcess, LPVOID MemoryStart, ULONG_PTR MemorySize, char* szDumpFileName) { wchar_t uniDumpFileName[MAX_PATH] = {}; @@ -2922,7 +2922,7 @@ __declspec(dllexport) bool __stdcall DumpMemory(HANDLE hProcess, LPVOID MemorySt return(false); } } -__declspec(dllexport) bool __stdcall DumpMemoryW(HANDLE hProcess, LPVOID MemoryStart, ULONG_PTR MemorySize, wchar_t* szDumpFileName) +__declspec(dllexport) bool DumpMemoryW(HANDLE hProcess, LPVOID MemoryStart, ULONG_PTR MemorySize, wchar_t* szDumpFileName) { ULONG_PTR ueNumberOfBytesRead = 0; @@ -2981,7 +2981,7 @@ __declspec(dllexport) bool __stdcall DumpMemoryW(HANDLE hProcess, LPVOID MemoryS } return(true); } -__declspec(dllexport) bool __stdcall DumpMemoryEx(DWORD ProcessId, LPVOID MemoryStart, ULONG_PTR MemorySize, char* szDumpFileName) +__declspec(dllexport) bool DumpMemoryEx(DWORD ProcessId, LPVOID MemoryStart, ULONG_PTR MemorySize, char* szDumpFileName) { wchar_t uniDumpFileName[MAX_PATH] = {}; @@ -2996,7 +2996,7 @@ __declspec(dllexport) bool __stdcall DumpMemoryEx(DWORD ProcessId, LPVOID Memory return(false); } } -__declspec(dllexport) bool __stdcall DumpMemoryExW(DWORD ProcessId, LPVOID MemoryStart, ULONG_PTR MemorySize, wchar_t* szDumpFileName) +__declspec(dllexport) bool DumpMemoryExW(DWORD ProcessId, LPVOID MemoryStart, ULONG_PTR MemorySize, wchar_t* szDumpFileName) { HANDLE hProcess = 0; @@ -3021,7 +3021,7 @@ __declspec(dllexport) bool __stdcall DumpMemoryExW(DWORD ProcessId, LPVOID Memor return(false); } } -__declspec(dllexport) bool __stdcall DumpRegions(HANDLE hProcess, char* szDumpFolder, bool DumpAboveImageBaseOnly) +__declspec(dllexport) bool DumpRegions(HANDLE hProcess, char* szDumpFolder, bool DumpAboveImageBaseOnly) { wchar_t uniDumpFolder[MAX_PATH] = {}; @@ -3036,7 +3036,7 @@ __declspec(dllexport) bool __stdcall DumpRegions(HANDLE hProcess, char* szDumpFo return(false); } } -__declspec(dllexport) bool __stdcall DumpRegionsW(HANDLE hProcess, wchar_t* szDumpFolder, bool DumpAboveImageBaseOnly) +__declspec(dllexport) bool DumpRegionsW(HANDLE hProcess, wchar_t* szDumpFolder, bool DumpAboveImageBaseOnly) { int i; @@ -3088,7 +3088,7 @@ __declspec(dllexport) bool __stdcall DumpRegionsW(HANDLE hProcess, wchar_t* szDu } return(false); } -__declspec(dllexport) bool __stdcall DumpRegionsEx(DWORD ProcessId, char* szDumpFolder, bool DumpAboveImageBaseOnly) +__declspec(dllexport) bool DumpRegionsEx(DWORD ProcessId, char* szDumpFolder, bool DumpAboveImageBaseOnly) { wchar_t uniDumpFolder[MAX_PATH] = {}; @@ -3103,7 +3103,7 @@ __declspec(dllexport) bool __stdcall DumpRegionsEx(DWORD ProcessId, char* szDump return(false); } } -__declspec(dllexport) bool __stdcall DumpRegionsExW(DWORD ProcessId, wchar_t* szDumpFolder, bool DumpAboveImageBaseOnly) +__declspec(dllexport) bool DumpRegionsExW(DWORD ProcessId, wchar_t* szDumpFolder, bool DumpAboveImageBaseOnly) { HANDLE hProcess = 0; @@ -3128,7 +3128,7 @@ __declspec(dllexport) bool __stdcall DumpRegionsExW(DWORD ProcessId, wchar_t* sz return(false); } } -__declspec(dllexport) bool __stdcall DumpModule(HANDLE hProcess, LPVOID ModuleBase, char* szDumpFileName) +__declspec(dllexport) bool DumpModule(HANDLE hProcess, LPVOID ModuleBase, char* szDumpFileName) { wchar_t uniDumpFileName[MAX_PATH] = {}; @@ -3143,7 +3143,7 @@ __declspec(dllexport) bool __stdcall DumpModule(HANDLE hProcess, LPVOID ModuleBa return(false); } } -__declspec(dllexport) bool __stdcall DumpModuleW(HANDLE hProcess, LPVOID ModuleBase, wchar_t* szDumpFileName) +__declspec(dllexport) bool DumpModuleW(HANDLE hProcess, LPVOID ModuleBase, wchar_t* szDumpFileName) { int i; @@ -3164,7 +3164,7 @@ __declspec(dllexport) bool __stdcall DumpModuleW(HANDLE hProcess, LPVOID ModuleB } return(false); } -__declspec(dllexport) bool __stdcall DumpModuleEx(DWORD ProcessId, LPVOID ModuleBase, char* szDumpFileName) +__declspec(dllexport) bool DumpModuleEx(DWORD ProcessId, LPVOID ModuleBase, char* szDumpFileName) { wchar_t uniDumpFileName[MAX_PATH] = {}; @@ -3179,7 +3179,7 @@ __declspec(dllexport) bool __stdcall DumpModuleEx(DWORD ProcessId, LPVOID Module return(false); } } -__declspec(dllexport) bool __stdcall DumpModuleExW(DWORD ProcessId, LPVOID ModuleBase, wchar_t* szDumpFileName) +__declspec(dllexport) bool DumpModuleExW(DWORD ProcessId, LPVOID ModuleBase, wchar_t* szDumpFileName) { HANDLE hProcess = 0; @@ -3204,7 +3204,7 @@ __declspec(dllexport) bool __stdcall DumpModuleExW(DWORD ProcessId, LPVOID Modul return(false); } } -__declspec(dllexport) bool __stdcall PastePEHeader(HANDLE hProcess, LPVOID ImageBase, char* szDebuggedFileName) +__declspec(dllexport) bool PastePEHeader(HANDLE hProcess, LPVOID ImageBase, char* szDebuggedFileName) { wchar_t uniDebuggedFileName[MAX_PATH] = {}; @@ -3219,7 +3219,7 @@ __declspec(dllexport) bool __stdcall PastePEHeader(HANDLE hProcess, LPVOID Image return(false); } } -__declspec(dllexport) bool __stdcall PastePEHeaderW(HANDLE hProcess, LPVOID ImageBase, wchar_t* szDebuggedFileName) +__declspec(dllexport) bool PastePEHeaderW(HANDLE hProcess, LPVOID ImageBase, wchar_t* szDebuggedFileName) { PIMAGE_DOS_HEADER DOSHeader; @@ -3367,7 +3367,7 @@ __declspec(dllexport) bool __stdcall PastePEHeaderW(HANDLE hProcess, LPVOID Imag } return(false); } -__declspec(dllexport) bool __stdcall ExtractSection(char* szFileName, char* szDumpFileName, DWORD SectionNumber) +__declspec(dllexport) bool ExtractSection(char* szFileName, char* szDumpFileName, DWORD SectionNumber) { wchar_t uniFileName[MAX_PATH] = {}; @@ -3384,7 +3384,7 @@ __declspec(dllexport) bool __stdcall ExtractSection(char* szFileName, char* szDu return(false); } } -__declspec(dllexport) bool __stdcall ExtractSectionW(wchar_t* szFileName, wchar_t* szDumpFileName, DWORD SectionNumber) +__declspec(dllexport) bool ExtractSectionW(wchar_t* szFileName, wchar_t* szDumpFileName, DWORD SectionNumber) { PIMAGE_DOS_HEADER DOSHeader; @@ -3490,7 +3490,7 @@ __declspec(dllexport) bool __stdcall ExtractSectionW(wchar_t* szFileName, wchar_ } return(false); } -__declspec(dllexport) bool __stdcall ResortFileSections(char* szFileName) +__declspec(dllexport) bool ResortFileSections(char* szFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -3505,7 +3505,7 @@ __declspec(dllexport) bool __stdcall ResortFileSections(char* szFileName) return(false); } } -__declspec(dllexport) bool __stdcall ResortFileSectionsW(wchar_t* szFileName) +__declspec(dllexport) bool ResortFileSectionsW(wchar_t* szFileName) { int i = 0; @@ -3709,7 +3709,7 @@ __declspec(dllexport) bool __stdcall ResortFileSectionsW(wchar_t* szFileName) RemoveGarbageItem(szBackupItem, true); return(false); } -__declspec(dllexport) bool __stdcall FindOverlay(char* szFileName, LPDWORD OverlayStart, LPDWORD OverlaySize) +__declspec(dllexport) bool FindOverlay(char* szFileName, LPDWORD OverlayStart, LPDWORD OverlaySize) { wchar_t uniFileName[MAX_PATH] = {}; @@ -3724,7 +3724,7 @@ __declspec(dllexport) bool __stdcall FindOverlay(char* szFileName, LPDWORD Overl return(false); } } -__declspec(dllexport) bool __stdcall FindOverlayW(wchar_t* szFileName, LPDWORD OverlayStart, LPDWORD OverlaySize) +__declspec(dllexport) bool FindOverlayW(wchar_t* szFileName, LPDWORD OverlayStart, LPDWORD OverlaySize) { PIMAGE_DOS_HEADER DOSHeader; @@ -3849,7 +3849,7 @@ __declspec(dllexport) bool __stdcall FindOverlayW(wchar_t* szFileName, LPDWORD O } return(false); } -__declspec(dllexport) bool __stdcall ExtractOverlay(char* szFileName, char* szExtactedFileName) +__declspec(dllexport) bool ExtractOverlay(char* szFileName, char* szExtactedFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -3866,7 +3866,7 @@ __declspec(dllexport) bool __stdcall ExtractOverlay(char* szFileName, char* szEx return(false); } } -__declspec(dllexport) bool __stdcall ExtractOverlayW(wchar_t* szFileName, wchar_t* szExtactedFileName) +__declspec(dllexport) bool ExtractOverlayW(wchar_t* szFileName, wchar_t* szExtactedFileName) { HANDLE hFile = 0; @@ -3923,7 +3923,7 @@ __declspec(dllexport) bool __stdcall ExtractOverlayW(wchar_t* szFileName, wchar_ VirtualFree(ueReadBuffer, NULL, MEM_RELEASE); return(false); } -__declspec(dllexport) bool __stdcall AddOverlay(char* szFileName, char* szOverlayFileName) +__declspec(dllexport) bool AddOverlay(char* szFileName, char* szOverlayFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -3940,7 +3940,7 @@ __declspec(dllexport) bool __stdcall AddOverlay(char* szFileName, char* szOverla return(false); } } -__declspec(dllexport) bool __stdcall AddOverlayW(wchar_t* szFileName, wchar_t* szOverlayFileName) +__declspec(dllexport) bool AddOverlayW(wchar_t* szFileName, wchar_t* szOverlayFileName) { HANDLE hFile = 0; @@ -3989,7 +3989,7 @@ __declspec(dllexport) bool __stdcall AddOverlayW(wchar_t* szFileName, wchar_t* s } return(false); } -__declspec(dllexport) bool __stdcall CopyOverlay(char* szInFileName, char* szOutFileName) +__declspec(dllexport) bool CopyOverlay(char* szInFileName, char* szOutFileName) { wchar_t uniInFileName[MAX_PATH] = {}; @@ -4006,7 +4006,7 @@ __declspec(dllexport) bool __stdcall CopyOverlay(char* szInFileName, char* szOut return(false); } } -__declspec(dllexport) bool __stdcall CopyOverlayW(wchar_t* szInFileName, wchar_t* szOutFileName) +__declspec(dllexport) bool CopyOverlayW(wchar_t* szInFileName, wchar_t* szOutFileName) { wchar_t szTempName[MAX_PATH] = {}; @@ -4026,7 +4026,7 @@ __declspec(dllexport) bool __stdcall CopyOverlayW(wchar_t* szInFileName, wchar_t } return(false); } -__declspec(dllexport) bool __stdcall RemoveOverlay(char* szFileName) +__declspec(dllexport) bool RemoveOverlay(char* szFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -4041,7 +4041,7 @@ __declspec(dllexport) bool __stdcall RemoveOverlay(char* szFileName) return(false); } } -__declspec(dllexport) bool __stdcall RemoveOverlayW(wchar_t* szFileName) +__declspec(dllexport) bool RemoveOverlayW(wchar_t* szFileName) { HANDLE FileHandle; @@ -4062,7 +4062,7 @@ __declspec(dllexport) bool __stdcall RemoveOverlayW(wchar_t* szFileName) } return(false); } -__declspec(dllexport) bool __stdcall MakeAllSectionsRWE(char* szFileName) +__declspec(dllexport) bool MakeAllSectionsRWE(char* szFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -4077,7 +4077,7 @@ __declspec(dllexport) bool __stdcall MakeAllSectionsRWE(char* szFileName) return(false); } } -__declspec(dllexport) bool __stdcall MakeAllSectionsRWEW(wchar_t* szFileName) +__declspec(dllexport) bool MakeAllSectionsRWEW(wchar_t* szFileName) { wchar_t szBackupFile[MAX_PATH] = {}; @@ -4216,7 +4216,7 @@ __declspec(dllexport) bool __stdcall MakeAllSectionsRWEW(wchar_t* szFileName) RemoveGarbageItem(szBackupItem, true); return(false); } -__declspec(dllexport) long __stdcall AddNewSectionEx(char* szFileName, char* szSectionName, DWORD SectionSize, DWORD SectionAttributes, LPVOID SectionContent, DWORD ContentSize) +__declspec(dllexport) long AddNewSectionEx(char* szFileName, char* szSectionName, DWORD SectionSize, DWORD SectionAttributes, LPVOID SectionContent, DWORD ContentSize) { wchar_t uniFileName[MAX_PATH] = {}; @@ -4231,7 +4231,7 @@ __declspec(dllexport) long __stdcall AddNewSectionEx(char* szFileName, char* szS return(NULL); } } -__declspec(dllexport) long __stdcall AddNewSectionExW(wchar_t* szFileName, char* szSectionName, DWORD SectionSize, DWORD SectionAttributes, LPVOID SectionContent, DWORD ContentSize) +__declspec(dllexport) long AddNewSectionExW(wchar_t* szFileName, char* szSectionName, DWORD SectionSize, DWORD SectionAttributes, LPVOID SectionContent, DWORD ContentSize) { bool OverlayHasBeenRemoved = false; @@ -4589,15 +4589,15 @@ __declspec(dllexport) long __stdcall AddNewSectionExW(wchar_t* szFileName, char* RemoveGarbageItem(szBackupItem, true); return(0); } -__declspec(dllexport) long __stdcall AddNewSection(char* szFileName, char* szSectionName, DWORD SectionSize) +__declspec(dllexport) long AddNewSection(char* szFileName, char* szSectionName, DWORD SectionSize) { return(AddNewSectionEx(szFileName, szSectionName, SectionSize, NULL, NULL, NULL)); } -__declspec(dllexport) long __stdcall AddNewSectionW(wchar_t* szFileName, char* szSectionName, DWORD SectionSize) +__declspec(dllexport) long AddNewSectionW(wchar_t* szFileName, char* szSectionName, DWORD SectionSize) { return(AddNewSectionExW(szFileName, szSectionName, SectionSize, NULL, NULL, NULL)); } -__declspec(dllexport) bool __stdcall ResizeLastSection(char* szFileName, DWORD NumberOfExpandBytes, bool AlignResizeData) +__declspec(dllexport) bool ResizeLastSection(char* szFileName, DWORD NumberOfExpandBytes, bool AlignResizeData) { wchar_t uniFileName[MAX_PATH] = {}; @@ -4612,7 +4612,7 @@ __declspec(dllexport) bool __stdcall ResizeLastSection(char* szFileName, DWORD N return(false); } } -__declspec(dllexport) bool __stdcall ResizeLastSectionW(wchar_t* szFileName, DWORD NumberOfExpandBytes, bool AlignResizeData) +__declspec(dllexport) bool ResizeLastSectionW(wchar_t* szFileName, DWORD NumberOfExpandBytes, bool AlignResizeData) { wchar_t szBackupFile[MAX_PATH] = {}; @@ -4816,23 +4816,23 @@ __declspec(dllexport) bool __stdcall ResizeLastSectionW(wchar_t* szFileName, DWO RemoveGarbageItem(szBackupItem, true); return(false); } -__declspec(dllexport) void __stdcall SetSharedOverlay(char* szFileName) +__declspec(dllexport) void SetSharedOverlay(char* szFileName) { szSharedOverlay = szFileName; } -__declspec(dllexport) void __stdcall SetSharedOverlayW(wchar_t* szFileName) +__declspec(dllexport) void SetSharedOverlayW(wchar_t* szFileName) { szSharedOverlayW = szFileName; } -__declspec(dllexport) char* __stdcall GetSharedOverlay() +__declspec(dllexport) char* GetSharedOverlay() { return(szSharedOverlay); } -__declspec(dllexport) wchar_t* __stdcall GetSharedOverlayW() +__declspec(dllexport) wchar_t* GetSharedOverlayW() { return(szSharedOverlayW); } -__declspec(dllexport) bool __stdcall DeleteLastSection(char* szFileName) +__declspec(dllexport) bool DeleteLastSection(char* szFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -4847,7 +4847,7 @@ __declspec(dllexport) bool __stdcall DeleteLastSection(char* szFileName) return(false); } } -__declspec(dllexport) bool __stdcall DeleteLastSectionW(wchar_t* szFileName) +__declspec(dllexport) bool DeleteLastSectionW(wchar_t* szFileName) { wchar_t szBackupFile[MAX_PATH] = {}; @@ -5000,7 +5000,7 @@ __declspec(dllexport) bool __stdcall DeleteLastSectionW(wchar_t* szFileName) RemoveGarbageItem(szBackupItem, true); return(false); } -__declspec(dllexport) bool __stdcall DeleteLastSectionEx(char* szFileName, DWORD NumberOfSections) +__declspec(dllexport) bool DeleteLastSectionEx(char* szFileName, DWORD NumberOfSections) { while(NumberOfSections > 0) @@ -5010,7 +5010,7 @@ __declspec(dllexport) bool __stdcall DeleteLastSectionEx(char* szFileName, DWORD } return(true); } -__declspec(dllexport) bool __stdcall DeleteLastSectionExW(wchar_t* szFileName, DWORD NumberOfSections) +__declspec(dllexport) bool DeleteLastSectionExW(wchar_t* szFileName, DWORD NumberOfSections) { while(NumberOfSections > 0) @@ -5020,7 +5020,7 @@ __declspec(dllexport) bool __stdcall DeleteLastSectionExW(wchar_t* szFileName, D } return(true); } -__declspec(dllexport) long long __stdcall GetPE32DataFromMappedFile(ULONG_PTR FileMapVA, DWORD WhichSection, DWORD WhichData) +__declspec(dllexport) long long GetPE32DataFromMappedFile(ULONG_PTR FileMapVA, DWORD WhichSection, DWORD WhichData) { PIMAGE_DOS_HEADER DOSHeader; @@ -5337,7 +5337,7 @@ __declspec(dllexport) long long __stdcall GetPE32DataFromMappedFile(ULONG_PTR Fi } return(0); } -__declspec(dllexport) long long __stdcall GetPE32Data(char* szFileName, DWORD WhichSection, DWORD WhichData) +__declspec(dllexport) long long GetPE32Data(char* szFileName, DWORD WhichSection, DWORD WhichData) { HANDLE FileHandle; @@ -5357,7 +5357,7 @@ __declspec(dllexport) long long __stdcall GetPE32Data(char* szFileName, DWORD Wh return(0); } } -__declspec(dllexport) long long __stdcall GetPE32DataW(wchar_t* szFileName, DWORD WhichSection, DWORD WhichData) +__declspec(dllexport) long long GetPE32DataW(wchar_t* szFileName, DWORD WhichSection, DWORD WhichData) { HANDLE FileHandle; @@ -5377,7 +5377,7 @@ __declspec(dllexport) long long __stdcall GetPE32DataW(wchar_t* szFileName, DWOR return(0); } } -__declspec(dllexport) bool __stdcall GetPE32DataFromMappedFileEx(ULONG_PTR FileMapVA, LPVOID DataStorage) +__declspec(dllexport) bool GetPE32DataFromMappedFileEx(ULONG_PTR FileMapVA, LPVOID DataStorage) { PIMAGE_DOS_HEADER DOSHeader; @@ -5470,7 +5470,7 @@ __declspec(dllexport) bool __stdcall GetPE32DataFromMappedFileEx(ULONG_PTR FileM } return(false); } -__declspec(dllexport) bool __stdcall GetPE32DataEx(char* szFileName, LPVOID DataStorage) +__declspec(dllexport) bool GetPE32DataEx(char* szFileName, LPVOID DataStorage) { HANDLE FileHandle; @@ -5497,7 +5497,7 @@ __declspec(dllexport) bool __stdcall GetPE32DataEx(char* szFileName, LPVOID Data return(false); } } -__declspec(dllexport) bool __stdcall GetPE32DataExW(wchar_t* szFileName, LPVOID DataStorage) +__declspec(dllexport) bool GetPE32DataExW(wchar_t* szFileName, LPVOID DataStorage) { HANDLE FileHandle; @@ -5524,7 +5524,7 @@ __declspec(dllexport) bool __stdcall GetPE32DataExW(wchar_t* szFileName, LPVOID return(false); } } -__declspec(dllexport) bool __stdcall SetPE32DataForMappedFile(ULONG_PTR FileMapVA, DWORD WhichSection, DWORD WhichData, ULONG_PTR NewDataValue) +__declspec(dllexport) bool SetPE32DataForMappedFile(ULONG_PTR FileMapVA, DWORD WhichSection, DWORD WhichData, ULONG_PTR NewDataValue) { PIMAGE_DOS_HEADER DOSHeader; @@ -5911,7 +5911,7 @@ __declspec(dllexport) bool __stdcall SetPE32DataForMappedFile(ULONG_PTR FileMapV } return(false); } -__declspec(dllexport) bool __stdcall SetPE32Data(char* szFileName, DWORD WhichSection, DWORD WhichData, ULONG_PTR NewDataValue) +__declspec(dllexport) bool SetPE32Data(char* szFileName, DWORD WhichSection, DWORD WhichData, ULONG_PTR NewDataValue) { HANDLE FileHandle; @@ -5938,7 +5938,7 @@ __declspec(dllexport) bool __stdcall SetPE32Data(char* szFileName, DWORD WhichSe return(false); } } -__declspec(dllexport) bool __stdcall SetPE32DataW(wchar_t* szFileName, DWORD WhichSection, DWORD WhichData, ULONG_PTR NewDataValue) +__declspec(dllexport) bool SetPE32DataW(wchar_t* szFileName, DWORD WhichSection, DWORD WhichData, ULONG_PTR NewDataValue) { HANDLE FileHandle; @@ -5965,7 +5965,7 @@ __declspec(dllexport) bool __stdcall SetPE32DataW(wchar_t* szFileName, DWORD Whi return(false); } } -__declspec(dllexport) bool __stdcall SetPE32DataForMappedFileEx(ULONG_PTR FileMapVA, LPVOID DataStorage) +__declspec(dllexport) bool SetPE32DataForMappedFileEx(ULONG_PTR FileMapVA, LPVOID DataStorage) { PIMAGE_DOS_HEADER DOSHeader; @@ -6072,7 +6072,7 @@ __declspec(dllexport) bool __stdcall SetPE32DataForMappedFileEx(ULONG_PTR FileMa } return(false); } -__declspec(dllexport) bool __stdcall SetPE32DataEx(char* szFileName, LPVOID DataStorage) +__declspec(dllexport) bool SetPE32DataEx(char* szFileName, LPVOID DataStorage) { HANDLE FileHandle; @@ -6100,7 +6100,7 @@ __declspec(dllexport) bool __stdcall SetPE32DataEx(char* szFileName, LPVOID Data } } -__declspec(dllexport) bool __stdcall SetPE32DataExW(wchar_t* szFileName, LPVOID DataStorage) +__declspec(dllexport) bool SetPE32DataExW(wchar_t* szFileName, LPVOID DataStorage) { HANDLE FileHandle; @@ -6128,7 +6128,7 @@ __declspec(dllexport) bool __stdcall SetPE32DataExW(wchar_t* szFileName, LPVOID } } -__declspec(dllexport) long __stdcall GetPE32SectionNumberFromVA(ULONG_PTR FileMapVA, ULONG_PTR AddressToConvert) +__declspec(dllexport) long GetPE32SectionNumberFromVA(ULONG_PTR FileMapVA, ULONG_PTR AddressToConvert) { PIMAGE_DOS_HEADER DOSHeader; @@ -6213,7 +6213,7 @@ __declspec(dllexport) long __stdcall GetPE32SectionNumberFromVA(ULONG_PTR FileMa } return(-2); } -__declspec(dllexport) long long __stdcall ConvertVAtoFileOffset(ULONG_PTR FileMapVA, ULONG_PTR AddressToConvert, bool ReturnType) +__declspec(dllexport) long long ConvertVAtoFileOffset(ULONG_PTR FileMapVA, ULONG_PTR AddressToConvert, bool ReturnType) { PIMAGE_DOS_HEADER DOSHeader; @@ -6334,7 +6334,7 @@ __declspec(dllexport) long long __stdcall ConvertVAtoFileOffset(ULONG_PTR FileMa } return(0); } -__declspec(dllexport) long long __stdcall ConvertVAtoFileOffsetEx(ULONG_PTR FileMapVA, DWORD FileSize, ULONG_PTR ImageBase, ULONG_PTR AddressToConvert, bool AddressIsRVA, bool ReturnType) +__declspec(dllexport) long long ConvertVAtoFileOffsetEx(ULONG_PTR FileMapVA, DWORD FileSize, ULONG_PTR ImageBase, ULONG_PTR AddressToConvert, bool AddressIsRVA, bool ReturnType) { PIMAGE_DOS_HEADER DOSHeader; @@ -6517,7 +6517,7 @@ __declspec(dllexport) long long __stdcall ConvertVAtoFileOffsetEx(ULONG_PTR File } return(0); } -__declspec(dllexport) long long __stdcall ConvertFileOffsetToVA(ULONG_PTR FileMapVA, ULONG_PTR AddressToConvert, bool ReturnType) +__declspec(dllexport) long long ConvertFileOffsetToVA(ULONG_PTR FileMapVA, ULONG_PTR AddressToConvert, bool ReturnType) { PIMAGE_DOS_HEADER DOSHeader; @@ -6632,7 +6632,7 @@ __declspec(dllexport) long long __stdcall ConvertFileOffsetToVA(ULONG_PTR FileMa } return(0); } -__declspec(dllexport) long long __stdcall ConvertFileOffsetToVAEx(ULONG_PTR FileMapVA, DWORD FileSize, ULONG_PTR ImageBase, ULONG_PTR AddressToConvert, bool ReturnType) +__declspec(dllexport) long long ConvertFileOffsetToVAEx(ULONG_PTR FileMapVA, DWORD FileSize, ULONG_PTR ImageBase, ULONG_PTR AddressToConvert, bool ReturnType) { ULONG_PTR ConvertedAddress = NULL; @@ -6699,7 +6699,7 @@ void SetOverallFileStatus(PFILE_STATUS_INFO myFileInfo, BYTE FiledStatus, bool F } } // TitanEngine.Realigner.functions: -__declspec(dllexport) bool __stdcall FixHeaderCheckSum(char* szFileName) +__declspec(dllexport) bool FixHeaderCheckSum(char* szFileName) { DWORD HeaderSum = NULL; @@ -6715,7 +6715,7 @@ __declspec(dllexport) bool __stdcall FixHeaderCheckSum(char* szFileName) return(false); } } -__declspec(dllexport) bool __stdcall FixHeaderCheckSumW(wchar_t* szFileName) +__declspec(dllexport) bool FixHeaderCheckSumW(wchar_t* szFileName) { DWORD HeaderSum = NULL; @@ -6731,7 +6731,7 @@ __declspec(dllexport) bool __stdcall FixHeaderCheckSumW(wchar_t* szFileName) return(false); } } -__declspec(dllexport) long __stdcall RealignPE(ULONG_PTR FileMapVA, DWORD FileSize, DWORD RealingMode) +__declspec(dllexport) long RealignPE(ULONG_PTR FileMapVA, DWORD FileSize, DWORD RealingMode) { PIMAGE_DOS_HEADER DOSHeader; @@ -6903,7 +6903,7 @@ __declspec(dllexport) long __stdcall RealignPE(ULONG_PTR FileMapVA, DWORD FileSi } return(-1); } -__declspec(dllexport) long __stdcall RealignPEEx(char* szFileName, DWORD RealingFileSize, DWORD ForcedFileAlignment) +__declspec(dllexport) long RealignPEEx(char* szFileName, DWORD RealingFileSize, DWORD ForcedFileAlignment) { wchar_t uniFileName[MAX_PATH] = {}; @@ -6918,7 +6918,7 @@ __declspec(dllexport) long __stdcall RealignPEEx(char* szFileName, DWORD Realing return(-1); } } -__declspec(dllexport) long __stdcall RealignPEExW(wchar_t* szFileName, DWORD RealingFileSize, DWORD ForcedFileAlignment) +__declspec(dllexport) long RealignPEExW(wchar_t* szFileName, DWORD RealingFileSize, DWORD ForcedFileAlignment) { wchar_t szBackupFile[MAX_PATH] = {}; @@ -7166,7 +7166,7 @@ __declspec(dllexport) long __stdcall RealignPEExW(wchar_t* szFileName, DWORD Rea RemoveGarbageItem(szBackupItem, true); return(-1); } -__declspec(dllexport) bool __stdcall WipeSection(char* szFileName, int WipeSectionNumber, bool RemovePhysically) +__declspec(dllexport) bool WipeSection(char* szFileName, int WipeSectionNumber, bool RemovePhysically) { wchar_t uniFileName[MAX_PATH] = {}; @@ -7181,7 +7181,7 @@ __declspec(dllexport) bool __stdcall WipeSection(char* szFileName, int WipeSecti return(false); } } -__declspec(dllexport) bool __stdcall WipeSectionW(wchar_t* szFileName, int WipeSectionNumber, bool RemovePhysically) +__declspec(dllexport) bool WipeSectionW(wchar_t* szFileName, int WipeSectionNumber, bool RemovePhysically) { wchar_t szBackupFile[MAX_PATH] = {}; @@ -7415,7 +7415,7 @@ __declspec(dllexport) bool __stdcall WipeSectionW(wchar_t* szFileName, int WipeS RemoveGarbageItem(szBackupItem, true); return(false); } -__declspec(dllexport) bool __stdcall IsPE32FileValidEx(char* szFileName, DWORD CheckDepth, LPVOID FileStatusInfo) +__declspec(dllexport) bool IsPE32FileValidEx(char* szFileName, DWORD CheckDepth, LPVOID FileStatusInfo) { wchar_t uniFileName[MAX_PATH] = {}; @@ -7430,7 +7430,7 @@ __declspec(dllexport) bool __stdcall IsPE32FileValidEx(char* szFileName, DWORD C return(false); } } -__declspec(dllexport) bool __stdcall IsPE32FileValidExW(wchar_t* szFileName, DWORD CheckDepth, LPVOID FileStatusInfo) +__declspec(dllexport) bool IsPE32FileValidExW(wchar_t* szFileName, DWORD CheckDepth, LPVOID FileStatusInfo) { unsigned int i; @@ -8995,7 +8995,7 @@ __declspec(dllexport) bool __stdcall IsPE32FileValidExW(wchar_t* szFileName, DWO } return(false); } -__declspec(dllexport) bool __stdcall FixBrokenPE32FileEx(char* szFileName, LPVOID FileStatusInfo, LPVOID FileFixInfo) +__declspec(dllexport) bool FixBrokenPE32FileEx(char* szFileName, LPVOID FileStatusInfo, LPVOID FileFixInfo) { wchar_t uniFileName[MAX_PATH] = {}; @@ -9010,7 +9010,7 @@ __declspec(dllexport) bool __stdcall FixBrokenPE32FileEx(char* szFileName, LPVOI return(false); } } -__declspec(dllexport) bool __stdcall FixBrokenPE32FileExW(wchar_t* szFileName, LPVOID FileStatusInfo, LPVOID FileFixInfo) +__declspec(dllexport) bool FixBrokenPE32FileExW(wchar_t* szFileName, LPVOID FileStatusInfo, LPVOID FileFixInfo) { DWORD ReadData = NULL; @@ -10416,7 +10416,7 @@ __declspec(dllexport) bool __stdcall FixBrokenPE32FileExW(wchar_t* szFileName, L } return(false); } -__declspec(dllexport) bool __stdcall IsFileDLL(char* szFileName, ULONG_PTR FileMapVA) +__declspec(dllexport) bool IsFileDLL(char* szFileName, ULONG_PTR FileMapVA) { if(szFileName != NULL) @@ -10435,7 +10435,7 @@ __declspec(dllexport) bool __stdcall IsFileDLL(char* szFileName, ULONG_PTR FileM } return(false); } -__declspec(dllexport) bool __stdcall IsFileDLLW(wchar_t* szFileName, ULONG_PTR FileMapVA) +__declspec(dllexport) bool IsFileDLLW(wchar_t* szFileName, ULONG_PTR FileMapVA) { if(szFileName != NULL) @@ -10538,13 +10538,13 @@ bool ChangeHideDebuggerState(HANDLE hProcess, DWORD PatchAPILevel, bool Hide) return(false); } // TitanEngine.Hider.functions: -__declspec(dllexport) void* __stdcall GetPEBLocation(HANDLE hProcess) +__declspec(dllexport) void* GetPEBLocation(HANDLE hProcess) { ULONG RequiredLen = NULL; PPROCESS_BASIC_INFORMATION myProcessBasicInformation = (PPROCESS_BASIC_INFORMATION)VirtualAlloc(NULL, 0x1000, MEM_COMMIT, PAGE_READWRITE); #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwQueryInformationProcess)(HANDLE ProcessHandle, PROCESSINFOCLASS ProcessInformationClass, PVOID ProcessInformation, ULONG ProcessInformationLength, PULONG ReturnLength); + typedef NTSTATUS(*fZwQueryInformationProcess)(HANDLE ProcessHandle, PROCESSINFOCLASS ProcessInformationClass, PVOID ProcessInformation, ULONG ProcessInformationLength, PULONG ReturnLength); #else typedef NTSTATUS(__fastcall *fZwQueryInformationProcess)(HANDLE ProcessHandle, PROCESSINFOCLASS ProcessInformationClass, PVOID ProcessInformation, ULONG ProcessInformationLength, PULONG ReturnLength); #endif @@ -10567,16 +10567,16 @@ __declspec(dllexport) void* __stdcall GetPEBLocation(HANDLE hProcess) } return(NULL); } -__declspec(dllexport) bool __stdcall HideDebugger(HANDLE hProcess, DWORD PatchAPILevel) +__declspec(dllexport) bool HideDebugger(HANDLE hProcess, DWORD PatchAPILevel) { return(ChangeHideDebuggerState(hProcess, PatchAPILevel, true)); } -__declspec(dllexport) bool __stdcall UnHideDebugger(HANDLE hProcess, DWORD PatchAPILevel) +__declspec(dllexport) bool UnHideDebugger(HANDLE hProcess, DWORD PatchAPILevel) { return(ChangeHideDebuggerState(hProcess, PatchAPILevel, false)); } // TitanEngine.Relocater.functions: -__declspec(dllexport) void __stdcall RelocaterCleanup() +__declspec(dllexport) void RelocaterCleanup() { if(RelocationData != NULL) @@ -10589,7 +10589,7 @@ __declspec(dllexport) void __stdcall RelocaterCleanup() RelocationNewImageBase = NULL; } } -__declspec(dllexport) void __stdcall RelocaterInit(DWORD MemorySize, ULONG_PTR OldImageBase, ULONG_PTR NewImageBase) +__declspec(dllexport) void RelocaterInit(DWORD MemorySize, ULONG_PTR OldImageBase, ULONG_PTR NewImageBase) { if(RelocationData != NULL) @@ -10603,7 +10603,7 @@ __declspec(dllexport) void __stdcall RelocaterInit(DWORD MemorySize, ULONG_PTR O RelocationOldImageBase = OldImageBase; RelocationNewImageBase = NewImageBase; } -__declspec(dllexport) void __stdcall RelocaterAddNewRelocation(HANDLE hProcess, ULONG_PTR RelocateAddress, DWORD RelocateState) +__declspec(dllexport) void RelocaterAddNewRelocation(HANDLE hProcess, ULONG_PTR RelocateAddress, DWORD RelocateState) { MEMORY_BASIC_INFORMATION MemInfo; @@ -10655,11 +10655,11 @@ __declspec(dllexport) void __stdcall RelocaterAddNewRelocation(HANDLE hProcess, RtlMoveMemory(RelocationWritePosition, &CopyDummy, 2); RelocationWritePosition = (LPVOID)((ULONG_PTR)RelocationWritePosition + 2); } -__declspec(dllexport) long __stdcall RelocaterEstimatedSize() +__declspec(dllexport) long RelocaterEstimatedSize() { return((DWORD)((ULONG_PTR)RelocationWritePosition - (ULONG_PTR)RelocationData + 8)); } -__declspec(dllexport) bool __stdcall RelocaterExportRelocation(ULONG_PTR StorePlace, DWORD StorePlaceRVA, ULONG_PTR FileMapVA) +__declspec(dllexport) bool RelocaterExportRelocation(ULONG_PTR StorePlace, DWORD StorePlaceRVA, ULONG_PTR FileMapVA) { PIMAGE_DOS_HEADER DOSHeader; @@ -10737,7 +10737,7 @@ __declspec(dllexport) bool __stdcall RelocaterExportRelocation(ULONG_PTR StorePl RelocationData = NULL; return(false); } -__declspec(dllexport) bool __stdcall RelocaterExportRelocationEx(char* szFileName, char* szSectionName) +__declspec(dllexport) bool RelocaterExportRelocationEx(char* szFileName, char* szSectionName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -10752,7 +10752,7 @@ __declspec(dllexport) bool __stdcall RelocaterExportRelocationEx(char* szFileNam return(false); } } -__declspec(dllexport) bool __stdcall RelocaterExportRelocationExW(wchar_t* szFileName, char* szSectionName) +__declspec(dllexport) bool RelocaterExportRelocationExW(wchar_t* szFileName, char* szSectionName) { HANDLE FileHandle; @@ -10790,7 +10790,7 @@ __declspec(dllexport) bool __stdcall RelocaterExportRelocationExW(wchar_t* szFil return(false); } } -__declspec(dllexport) bool __stdcall RelocaterGrabRelocationTable(HANDLE hProcess, ULONG_PTR MemoryStart, DWORD MemorySize) +__declspec(dllexport) bool RelocaterGrabRelocationTable(HANDLE hProcess, ULONG_PTR MemoryStart, DWORD MemorySize) { MEMORY_BASIC_INFORMATION MemInfo; @@ -10811,7 +10811,7 @@ __declspec(dllexport) bool __stdcall RelocaterGrabRelocationTable(HANDLE hProces } return(false); } -__declspec(dllexport) bool __stdcall RelocaterGrabRelocationTableEx(HANDLE hProcess, ULONG_PTR MemoryStart, ULONG_PTR MemorySize, DWORD NtSizeOfImage) +__declspec(dllexport) bool RelocaterGrabRelocationTableEx(HANDLE hProcess, ULONG_PTR MemoryStart, ULONG_PTR MemorySize, DWORD NtSizeOfImage) { MEMORY_BASIC_INFORMATION MemInfo; @@ -10857,15 +10857,15 @@ __declspec(dllexport) bool __stdcall RelocaterGrabRelocationTableEx(HANDLE hProc return(false); } -__declspec(dllexport) bool __stdcall RelocaterMakeSnapshot(HANDLE hProcess, char* szSaveFileName, LPVOID MemoryStart, ULONG_PTR MemorySize) +__declspec(dllexport) bool RelocaterMakeSnapshot(HANDLE hProcess, char* szSaveFileName, LPVOID MemoryStart, ULONG_PTR MemorySize) { return(DumpMemory(hProcess, MemoryStart, MemorySize, szSaveFileName)); } -__declspec(dllexport) bool __stdcall RelocaterMakeSnapshotW(HANDLE hProcess, wchar_t* szSaveFileName, LPVOID MemoryStart, ULONG_PTR MemorySize) +__declspec(dllexport) bool RelocaterMakeSnapshotW(HANDLE hProcess, wchar_t* szSaveFileName, LPVOID MemoryStart, ULONG_PTR MemorySize) { return(DumpMemoryW(hProcess, MemoryStart, MemorySize, szSaveFileName)); } -__declspec(dllexport) bool __stdcall RelocaterCompareTwoSnapshots(HANDLE hProcess, ULONG_PTR LoadedImageBase, ULONG_PTR NtSizeOfImage, char* szDumpFile1, char* szDumpFile2, ULONG_PTR MemStart) +__declspec(dllexport) bool RelocaterCompareTwoSnapshots(HANDLE hProcess, ULONG_PTR LoadedImageBase, ULONG_PTR NtSizeOfImage, char* szDumpFile1, char* szDumpFile2, ULONG_PTR MemStart) { wchar_t uniDumpFile1[MAX_PATH] = {}; @@ -10882,7 +10882,7 @@ __declspec(dllexport) bool __stdcall RelocaterCompareTwoSnapshots(HANDLE hProces return(false); } } -__declspec(dllexport) bool __stdcall RelocaterCompareTwoSnapshotsW(HANDLE hProcess, ULONG_PTR LoadedImageBase, ULONG_PTR NtSizeOfImage, wchar_t* szDumpFile1, wchar_t* szDumpFile2, ULONG_PTR MemStart) +__declspec(dllexport) bool RelocaterCompareTwoSnapshotsW(HANDLE hProcess, ULONG_PTR LoadedImageBase, ULONG_PTR NtSizeOfImage, wchar_t* szDumpFile1, wchar_t* szDumpFile2, ULONG_PTR MemStart) { int i = NULL; @@ -10995,7 +10995,7 @@ __declspec(dllexport) bool __stdcall RelocaterCompareTwoSnapshotsW(HANDLE hProce } return(false); } -__declspec(dllexport) bool __stdcall RelocaterChangeFileBase(char* szFileName, ULONG_PTR NewImageBase) +__declspec(dllexport) bool RelocaterChangeFileBase(char* szFileName, ULONG_PTR NewImageBase) { wchar_t uniFileName[MAX_PATH] = {}; @@ -11010,7 +11010,7 @@ __declspec(dllexport) bool __stdcall RelocaterChangeFileBase(char* szFileName, U return(false); } } -__declspec(dllexport) bool __stdcall RelocaterChangeFileBaseW(wchar_t* szFileName, ULONG_PTR NewImageBase) +__declspec(dllexport) bool RelocaterChangeFileBaseW(wchar_t* szFileName, ULONG_PTR NewImageBase) { DWORD RelocSize; @@ -11169,7 +11169,7 @@ __declspec(dllexport) bool __stdcall RelocaterChangeFileBaseW(wchar_t* szFileNam RemoveGarbageItem(szBackupItem, true); return(false); } -__declspec(dllexport) bool __stdcall RelocaterRelocateMemoryBlock(ULONG_PTR FileMapVA, ULONG_PTR MemoryLocation, void* RelocateMemory, DWORD RelocateMemorySize, ULONG_PTR CurrentLoadedBase, ULONG_PTR RelocateBase) +__declspec(dllexport) bool RelocaterRelocateMemoryBlock(ULONG_PTR FileMapVA, ULONG_PTR MemoryLocation, void* RelocateMemory, DWORD RelocateMemorySize, ULONG_PTR CurrentLoadedBase, ULONG_PTR RelocateBase) { BOOL FileIs64; @@ -11275,7 +11275,7 @@ __declspec(dllexport) bool __stdcall RelocaterRelocateMemoryBlock(ULONG_PTR File } return(false); } -__declspec(dllexport) bool __stdcall RelocaterWipeRelocationTable(char* szFileName) +__declspec(dllexport) bool RelocaterWipeRelocationTable(char* szFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -11290,7 +11290,7 @@ __declspec(dllexport) bool __stdcall RelocaterWipeRelocationTable(char* szFileNa return(false); } } -__declspec(dllexport) bool __stdcall RelocaterWipeRelocationTableW(wchar_t* szFileName) +__declspec(dllexport) bool RelocaterWipeRelocationTableW(wchar_t* szFileName) { PIMAGE_DOS_HEADER DOSHeader; @@ -11351,15 +11351,15 @@ __declspec(dllexport) bool __stdcall RelocaterWipeRelocationTableW(wchar_t* szFi return(false); } // TitanEngine.Resourcer.functions: -__declspec(dllexport) long long __stdcall ResourcerLoadFileForResourceUse(char* szFileName) +__declspec(dllexport) long long ResourcerLoadFileForResourceUse(char* szFileName) { return((ULONG_PTR)EngineSimulateNtLoader(szFileName)); } -__declspec(dllexport) long long __stdcall ResourcerLoadFileForResourceUseW(wchar_t* szFileName) +__declspec(dllexport) long long ResourcerLoadFileForResourceUseW(wchar_t* szFileName) { return((ULONG_PTR)EngineSimulateNtLoaderW(szFileName)); } -__declspec(dllexport) bool __stdcall ResourcerFreeLoadedFile(LPVOID LoadedFileBase) +__declspec(dllexport) bool ResourcerFreeLoadedFile(LPVOID LoadedFileBase) { if(VirtualFree(LoadedFileBase, NULL, MEM_RELEASE)) { @@ -11370,7 +11370,7 @@ __declspec(dllexport) bool __stdcall ResourcerFreeLoadedFile(LPVOID LoadedFileBa return(false); } } -__declspec(dllexport) bool __stdcall ResourcerExtractResourceFromFileEx(ULONG_PTR FileMapVA, char* szResourceType, char* szResourceName, char* szExtractedFileName) +__declspec(dllexport) bool ResourcerExtractResourceFromFileEx(ULONG_PTR FileMapVA, char* szResourceType, char* szResourceName, char* szExtractedFileName) { HRSRC hResource; @@ -11406,7 +11406,7 @@ __declspec(dllexport) bool __stdcall ResourcerExtractResourceFromFileEx(ULONG_PT } return(false); } -__declspec(dllexport) bool __stdcall ResourcerExtractResourceFromFile(char* szFileName, char* szResourceType, char* szResourceName, char* szExtractedFileName) +__declspec(dllexport) bool ResourcerExtractResourceFromFile(char* szFileName, char* szResourceType, char* szResourceName, char* szExtractedFileName) { HANDLE FileHandle; @@ -11426,7 +11426,7 @@ __declspec(dllexport) bool __stdcall ResourcerExtractResourceFromFile(char* szFi } return(false); } -__declspec(dllexport) bool __stdcall ResourcerExtractResourceFromFileW(wchar_t* szFileName, char* szResourceType, char* szResourceName, char* szExtractedFileName) +__declspec(dllexport) bool ResourcerExtractResourceFromFileW(wchar_t* szFileName, char* szResourceType, char* szResourceName, char* szExtractedFileName) { HANDLE FileHandle; @@ -11446,7 +11446,7 @@ __declspec(dllexport) bool __stdcall ResourcerExtractResourceFromFileW(wchar_t* } return(false); } -__declspec(dllexport) bool __stdcall ResourcerFindResource(char* szFileName, char* szResourceType, DWORD ResourceType, char* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, PULONG_PTR pResourceData, LPDWORD pResourceSize) +__declspec(dllexport) bool ResourcerFindResource(char* szFileName, char* szResourceType, DWORD ResourceType, char* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, PULONG_PTR pResourceData, LPDWORD pResourceSize) { wchar_t uniFileName[MAX_PATH] = {}; @@ -11481,7 +11481,7 @@ __declspec(dllexport) bool __stdcall ResourcerFindResource(char* szFileName, cha return(false); } } -__declspec(dllexport) bool __stdcall ResourcerFindResourceW(wchar_t* szFileName, wchar_t* szResourceType, DWORD ResourceType, wchar_t* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, PULONG_PTR pResourceData, LPDWORD pResourceSize) +__declspec(dllexport) bool ResourcerFindResourceW(wchar_t* szFileName, wchar_t* szResourceType, DWORD ResourceType, wchar_t* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, PULONG_PTR pResourceData, LPDWORD pResourceSize) { bool ReturnValue; @@ -11505,7 +11505,7 @@ __declspec(dllexport) bool __stdcall ResourcerFindResourceW(wchar_t* szFileName, } return(false); } -__declspec(dllexport) bool __stdcall ResourcerFindResourceEx(ULONG_PTR FileMapVA, DWORD FileSize, wchar_t* szResourceType, DWORD ResourceType, wchar_t* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, PULONG_PTR pResourceData, LPDWORD pResourceSize) +__declspec(dllexport) bool ResourcerFindResourceEx(ULONG_PTR FileMapVA, DWORD FileSize, wchar_t* szResourceType, DWORD ResourceType, wchar_t* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, PULONG_PTR pResourceData, LPDWORD pResourceSize) { int i,j,n; @@ -11587,7 +11587,7 @@ __declspec(dllexport) bool __stdcall ResourcerFindResourceEx(ULONG_PTR FileMapVA } return(false); } -__declspec(dllexport) void __stdcall ResourcerEnumerateResource(char* szFileName, void* CallBack) +__declspec(dllexport) void ResourcerEnumerateResource(char* szFileName, void* CallBack) { wchar_t uniFileName[MAX_PATH] = {}; @@ -11598,7 +11598,7 @@ __declspec(dllexport) void __stdcall ResourcerEnumerateResource(char* szFileName ResourcerEnumerateResourceW(uniFileName, CallBack); } } -__declspec(dllexport) void __stdcall ResourcerEnumerateResourceW(wchar_t* szFileName, void* CallBack) +__declspec(dllexport) void ResourcerEnumerateResourceW(wchar_t* szFileName, void* CallBack) { ULONG_PTR FileMapVA; @@ -11612,7 +11612,7 @@ __declspec(dllexport) void __stdcall ResourcerEnumerateResourceW(wchar_t* szFile UnMapFileEx(FileHandle, FileSize, FileMap, FileMapVA); } } -__declspec(dllexport) void __stdcall ResourcerEnumerateResourceEx(ULONG_PTR FileMapVA, DWORD FileSize, void* CallBack) +__declspec(dllexport) void ResourcerEnumerateResourceEx(ULONG_PTR FileMapVA, DWORD FileSize, void* CallBack) { int i,j,n; @@ -11626,7 +11626,7 @@ __declspec(dllexport) void __stdcall ResourcerEnumerateResourceEx(ULONG_PTR File PIMAGE_RESOURCE_DIRECTORY PESubResourcePtr2; PIMAGE_RESOURCE_DIRECTORY_ENTRY PEResourceDir2; PIMAGE_RESOURCE_DATA_ENTRY PEResourceItem; - typedef bool(__stdcall *fResourceEnumerator)(wchar_t* szResourceType, DWORD ResourceType, wchar_t* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, DWORD ResourceData, DWORD ResourceSize); + typedef bool(*fResourceEnumerator)(wchar_t* szResourceType, DWORD ResourceType, wchar_t* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, DWORD ResourceData, DWORD ResourceSize); fResourceEnumerator myResourceEnumerator = (fResourceEnumerator)CallBack; __try @@ -11693,7 +11693,7 @@ __declspec(dllexport) void __stdcall ResourcerEnumerateResourceEx(ULONG_PTR File } } // TitanEngine.Threader.functions: -__declspec(dllexport) bool __stdcall ThreaderImportRunningThreadData(DWORD ProcessId) +__declspec(dllexport) bool ThreaderImportRunningThreadData(DWORD ProcessId) { HANDLE hSnapShot; @@ -11734,7 +11734,7 @@ __declspec(dllexport) bool __stdcall ThreaderImportRunningThreadData(DWORD Proce } return(false); } -__declspec(dllexport) void* __stdcall ThreaderGetThreadInfo(HANDLE hThread, DWORD ThreadId) +__declspec(dllexport) void* ThreaderGetThreadInfo(HANDLE hThread, DWORD ThreadId) { PTHREAD_ITEM_DATA hListThreadPtr = (PTHREAD_ITEM_DATA)hListThread; @@ -11766,11 +11766,11 @@ __declspec(dllexport) void* __stdcall ThreaderGetThreadInfo(HANDLE hThread, DWOR } return(NULL); } -__declspec(dllexport) void __stdcall ThreaderEnumThreadInfo(void* EnumCallBack) +__declspec(dllexport) void ThreaderEnumThreadInfo(void* EnumCallBack) { PTHREAD_ITEM_DATA hListThreadPtr = (PTHREAD_ITEM_DATA)hListThread; - typedef void(__stdcall *fEnumCallBack)(LPVOID fThreadDetail); + typedef void(*fEnumCallBack)(LPVOID fThreadDetail); fEnumCallBack myEnumCallBack = (fEnumCallBack)EnumCallBack; if(hListThreadPtr != NULL) @@ -11792,7 +11792,7 @@ __declspec(dllexport) void __stdcall ThreaderEnumThreadInfo(void* EnumCallBack) } } } -__declspec(dllexport) bool __stdcall ThreaderPauseThread(HANDLE hThread) +__declspec(dllexport) bool ThreaderPauseThread(HANDLE hThread) { PTHREAD_ITEM_DATA hListThreadPtr = (PTHREAD_ITEM_DATA)hListThread; @@ -11824,7 +11824,7 @@ __declspec(dllexport) bool __stdcall ThreaderPauseThread(HANDLE hThread) } return(false); } -__declspec(dllexport) bool __stdcall ThreaderResumeThread(HANDLE hThread) +__declspec(dllexport) bool ThreaderResumeThread(HANDLE hThread) { PTHREAD_ITEM_DATA hListThreadPtr = (PTHREAD_ITEM_DATA)hListThread; @@ -11856,7 +11856,7 @@ __declspec(dllexport) bool __stdcall ThreaderResumeThread(HANDLE hThread) } return(false); } -__declspec(dllexport) bool __stdcall ThreaderTerminateThread(HANDLE hThread, DWORD ThreadExitCode) +__declspec(dllexport) bool ThreaderTerminateThread(HANDLE hThread, DWORD ThreadExitCode) { PTHREAD_ITEM_DATA hListThreadPtr = (PTHREAD_ITEM_DATA)hListThread; @@ -11892,7 +11892,7 @@ __declspec(dllexport) bool __stdcall ThreaderTerminateThread(HANDLE hThread, DWO } return(false); } -__declspec(dllexport) bool __stdcall ThreaderPauseAllThreads(bool LeaveMainRunning) +__declspec(dllexport) bool ThreaderPauseAllThreads(bool LeaveMainRunning) { PTHREAD_ITEM_DATA hListThreadPtr = (PTHREAD_ITEM_DATA)hListThread; @@ -11918,7 +11918,7 @@ __declspec(dllexport) bool __stdcall ThreaderPauseAllThreads(bool LeaveMainRunni } return(false); } -__declspec(dllexport) bool __stdcall ThreaderResumeAllThreads(bool LeaveMainPaused) +__declspec(dllexport) bool ThreaderResumeAllThreads(bool LeaveMainPaused) { PTHREAD_ITEM_DATA hListThreadPtr = (PTHREAD_ITEM_DATA)hListThread; @@ -11944,15 +11944,15 @@ __declspec(dllexport) bool __stdcall ThreaderResumeAllThreads(bool LeaveMainPaus } return(false); } -__declspec(dllexport) bool __stdcall ThreaderPauseProcess() +__declspec(dllexport) bool ThreaderPauseProcess() { return(ThreaderPauseAllThreads(false)); } -__declspec(dllexport) bool __stdcall ThreaderResumeProcess() +__declspec(dllexport) bool ThreaderResumeProcess() { return(ThreaderResumeAllThreads(false)); } -__declspec(dllexport) long long __stdcall ThreaderCreateRemoteThread(ULONG_PTR ThreadStartAddress, bool AutoCloseTheHandle, LPVOID ThreadPassParameter, LPDWORD ThreadId) +__declspec(dllexport) long long ThreaderCreateRemoteThread(ULONG_PTR ThreadStartAddress, bool AutoCloseTheHandle, LPVOID ThreadPassParameter, LPDWORD ThreadId) { HANDLE myThread; @@ -11972,7 +11972,7 @@ __declspec(dllexport) long long __stdcall ThreaderCreateRemoteThread(ULONG_PTR T } return(NULL); } -__declspec(dllexport) bool __stdcall ThreaderInjectAndExecuteCode(LPVOID InjectCode, DWORD StartDelta, DWORD InjectSize) +__declspec(dllexport) bool ThreaderInjectAndExecuteCode(LPVOID InjectCode, DWORD StartDelta, DWORD InjectSize) { LPVOID ThreadBase = 0; @@ -11993,7 +11993,7 @@ __declspec(dllexport) bool __stdcall ThreaderInjectAndExecuteCode(LPVOID InjectC } return(false); } -__declspec(dllexport) long long __stdcall ThreaderCreateRemoteThreadEx(HANDLE hProcess, ULONG_PTR ThreadStartAddress, bool AutoCloseTheHandle, LPVOID ThreadPassParameter, LPDWORD ThreadId) +__declspec(dllexport) long long ThreaderCreateRemoteThreadEx(HANDLE hProcess, ULONG_PTR ThreadStartAddress, bool AutoCloseTheHandle, LPVOID ThreadPassParameter, LPDWORD ThreadId) { HANDLE myThread; @@ -12013,7 +12013,7 @@ __declspec(dllexport) long long __stdcall ThreaderCreateRemoteThreadEx(HANDLE hP } return(NULL); } -__declspec(dllexport) bool __stdcall ThreaderInjectAndExecuteCodeEx(HANDLE hProcess, LPVOID InjectCode, DWORD StartDelta, DWORD InjectSize) +__declspec(dllexport) bool ThreaderInjectAndExecuteCodeEx(HANDLE hProcess, LPVOID InjectCode, DWORD StartDelta, DWORD InjectSize) { LPVOID ThreadBase = 0; @@ -12034,11 +12034,11 @@ __declspec(dllexport) bool __stdcall ThreaderInjectAndExecuteCodeEx(HANDLE hProc } return(false); } -__declspec(dllexport) void __stdcall ThreaderSetCallBackForNextExitThreadEvent(LPVOID exitThreadCallBack) +__declspec(dllexport) void ThreaderSetCallBackForNextExitThreadEvent(LPVOID exitThreadCallBack) { engineExitThreadOneShootCallBack = exitThreadCallBack; } -__declspec(dllexport) bool __stdcall ThreaderIsThreadStillRunning(HANDLE hThread) +__declspec(dllexport) bool ThreaderIsThreadStillRunning(HANDLE hThread) { CONTEXT myDBGContext; @@ -12054,7 +12054,7 @@ __declspec(dllexport) bool __stdcall ThreaderIsThreadStillRunning(HANDLE hThread return(false); } } -__declspec(dllexport) bool __stdcall ThreaderIsThreadActive(HANDLE hThread) +__declspec(dllexport) bool ThreaderIsThreadActive(HANDLE hThread) { if(SuspendThread(hThread) < 0) @@ -12064,7 +12064,7 @@ __declspec(dllexport) bool __stdcall ThreaderIsThreadActive(HANDLE hThread) } return(false); } -__declspec(dllexport) bool __stdcall ThreaderIsAnyThreadActive() +__declspec(dllexport) bool ThreaderIsAnyThreadActive() { PTHREAD_ITEM_DATA hListThreadPtr = (PTHREAD_ITEM_DATA)hListThread; @@ -12085,7 +12085,7 @@ __declspec(dllexport) bool __stdcall ThreaderIsAnyThreadActive() } return(false); } -__declspec(dllexport) bool __stdcall ThreaderExecuteOnlyInjectedThreads() +__declspec(dllexport) bool ThreaderExecuteOnlyInjectedThreads() { if(ThreaderPauseProcess()) @@ -12095,7 +12095,7 @@ __declspec(dllexport) bool __stdcall ThreaderExecuteOnlyInjectedThreads() } return(false); } -__declspec(dllexport) long long __stdcall ThreaderGetOpenHandleForThread(DWORD ThreadId) +__declspec(dllexport) long long ThreaderGetOpenHandleForThread(DWORD ThreadId) { PTHREAD_ITEM_DATA hListThreadPtr = (PTHREAD_ITEM_DATA)hListThread; @@ -12113,11 +12113,11 @@ __declspec(dllexport) long long __stdcall ThreaderGetOpenHandleForThread(DWORD T } return(NULL); } -__declspec(dllexport) void* __stdcall ThreaderGetThreadData() +__declspec(dllexport) void* ThreaderGetThreadData() { return(hListThread); } -__declspec(dllexport) bool __stdcall ThreaderIsExceptionInMainThread() +__declspec(dllexport) bool ThreaderIsExceptionInMainThread() { LPDEBUG_EVENT myDBGEvent; @@ -12159,7 +12159,7 @@ void DebuggerReset() } } // TitanEngine.Debugger.functions: -__declspec(dllexport) void* __stdcall StaticDisassembleEx(ULONG_PTR DisassmStart, LPVOID DisassmAddress) +__declspec(dllexport) void* StaticDisassembleEx(ULONG_PTR DisassmStart, LPVOID DisassmAddress) { _DecodeResult DecodingResult; _DecodedInst engineDecodedInstructions[MAX_DECODE_INSTRUCTIONS]; @@ -12203,11 +12203,11 @@ __declspec(dllexport) void* __stdcall StaticDisassembleEx(ULONG_PTR DisassmStart return(NULL); } } -__declspec(dllexport) void* __stdcall StaticDisassemble(LPVOID DisassmAddress) +__declspec(dllexport) void* StaticDisassemble(LPVOID DisassmAddress) { return(StaticDisassembleEx((ULONG_PTR)DisassmAddress, DisassmAddress)); } -__declspec(dllexport) void* __stdcall DisassembleEx(HANDLE hProcess, LPVOID DisassmAddress, bool ReturnInstructionType) +__declspec(dllexport) void* DisassembleEx(HANDLE hProcess, LPVOID DisassmAddress, bool ReturnInstructionType) { _DecodeResult DecodingResult; @@ -12285,11 +12285,11 @@ __declspec(dllexport) void* __stdcall DisassembleEx(HANDLE hProcess, LPVOID Disa return(NULL); } } -__declspec(dllexport) void* __stdcall Disassemble(LPVOID DisassmAddress) +__declspec(dllexport) void* Disassemble(LPVOID DisassmAddress) { return(DisassembleEx(dbgProcessInformation.hProcess, DisassmAddress, false)); } -__declspec(dllexport) long __stdcall StaticLengthDisassemble(LPVOID DisassmAddress) +__declspec(dllexport) long StaticLengthDisassemble(LPVOID DisassmAddress) { _DecodeResult DecodingResult; @@ -12327,7 +12327,7 @@ __declspec(dllexport) long __stdcall StaticLengthDisassemble(LPVOID DisassmAddre return(NULL); } } -__declspec(dllexport) long __stdcall LengthDisassembleEx(HANDLE hProcess, LPVOID DisassmAddress) +__declspec(dllexport) long LengthDisassembleEx(HANDLE hProcess, LPVOID DisassmAddress) { _DecodeResult DecodingResult; @@ -12384,11 +12384,11 @@ __declspec(dllexport) long __stdcall LengthDisassembleEx(HANDLE hProcess, LPVOID return(-1); } } -__declspec(dllexport) long __stdcall LengthDisassemble(LPVOID DisassmAddress) +__declspec(dllexport) long LengthDisassemble(LPVOID DisassmAddress) { return(LengthDisassembleEx(dbgProcessInformation.hProcess, DisassmAddress)); } -__declspec(dllexport) void* __stdcall InitDebug(char* szFileName, char* szCommandLine, char* szCurrentFolder) +__declspec(dllexport) void* InitDebug(char* szFileName, char* szCommandLine, char* szCurrentFolder) { wchar_t* PtrUniFileName = NULL; @@ -12422,7 +12422,7 @@ __declspec(dllexport) void* __stdcall InitDebug(char* szFileName, char* szComman return(false); } } -__declspec(dllexport) void* __stdcall InitDebugW(wchar_t* szFileName, wchar_t* szCommandLine, wchar_t* szCurrentFolder) +__declspec(dllexport) void* InitDebugW(wchar_t* szFileName, wchar_t* szCommandLine, wchar_t* szCurrentFolder) { wchar_t szCreateWithCmdLine[1024]; @@ -12467,17 +12467,17 @@ __declspec(dllexport) void* __stdcall InitDebugW(wchar_t* szFileName, wchar_t* s } } } -__declspec(dllexport) void* __stdcall InitDebugEx(char* szFileName, char* szCommandLine, char* szCurrentFolder, LPVOID EntryCallBack) +__declspec(dllexport) void* InitDebugEx(char* szFileName, char* szCommandLine, char* szCurrentFolder, LPVOID EntryCallBack) { DebugExeFileEntryPointCallBack = EntryCallBack; return(InitDebug(szFileName, szCommandLine, szCurrentFolder)); } -__declspec(dllexport) void* __stdcall InitDebugExW(wchar_t* szFileName, wchar_t* szCommandLine, wchar_t* szCurrentFolder, LPVOID EntryCallBack) +__declspec(dllexport) void* InitDebugExW(wchar_t* szFileName, wchar_t* szCommandLine, wchar_t* szCurrentFolder, LPVOID EntryCallBack) { DebugExeFileEntryPointCallBack = EntryCallBack; return(InitDebugW(szFileName, szCommandLine, szCurrentFolder)); } -__declspec(dllexport) void* __stdcall InitDLLDebug(char* szFileName, bool ReserveModuleBase, char* szCommandLine, char* szCurrentFolder, LPVOID EntryCallBack) +__declspec(dllexport) void* InitDLLDebug(char* szFileName, bool ReserveModuleBase, char* szCommandLine, char* szCurrentFolder, LPVOID EntryCallBack) { wchar_t* PtrUniFileName = NULL; @@ -12511,7 +12511,7 @@ __declspec(dllexport) void* __stdcall InitDLLDebug(char* szFileName, bool Reserv return(false); } } -__declspec(dllexport) void* __stdcall InitDLLDebugW(wchar_t* szFileName, bool ReserveModuleBase, wchar_t* szCommandLine, wchar_t* szCurrentFolder, LPVOID EntryCallBack) +__declspec(dllexport) void* InitDLLDebugW(wchar_t* szFileName, bool ReserveModuleBase, wchar_t* szCommandLine, wchar_t* szCurrentFolder, LPVOID EntryCallBack) { int i = NULL; @@ -12591,7 +12591,7 @@ __declspec(dllexport) void* __stdcall InitDLLDebugW(wchar_t* szFileName, bool Re } return(NULL); } -__declspec(dllexport) bool __stdcall StopDebug() +__declspec(dllexport) bool StopDebug() { if(dbgProcessInformation.hProcess != NULL) { @@ -12604,11 +12604,11 @@ __declspec(dllexport) bool __stdcall StopDebug() return(false); } } -__declspec(dllexport) void __stdcall SetBPXOptions(long DefaultBreakPointType) +__declspec(dllexport) void SetBPXOptions(long DefaultBreakPointType) { engineDefaultBreakPointType = DefaultBreakPointType; } -__declspec(dllexport) bool __stdcall IsBPXEnabled(ULONG_PTR bpxAddress) +__declspec(dllexport) bool IsBPXEnabled(ULONG_PTR bpxAddress) { int i; @@ -12654,7 +12654,7 @@ __declspec(dllexport) bool __stdcall IsBPXEnabled(ULONG_PTR bpxAddress) } return(false); } -__declspec(dllexport) bool __stdcall EnableBPX(ULONG_PTR bpxAddress) +__declspec(dllexport) bool EnableBPX(ULONG_PTR bpxAddress) { int i; @@ -12715,7 +12715,7 @@ __declspec(dllexport) bool __stdcall EnableBPX(ULONG_PTR bpxAddress) } return(false); } -__declspec(dllexport) bool __stdcall DisableBPX(ULONG_PTR bpxAddress) +__declspec(dllexport) bool DisableBPX(ULONG_PTR bpxAddress) { int i; @@ -12754,7 +12754,7 @@ __declspec(dllexport) bool __stdcall DisableBPX(ULONG_PTR bpxAddress) } return(false); } -__declspec(dllexport) bool __stdcall SetBPX(ULONG_PTR bpxAddress, DWORD bpxType, LPVOID bpxCallBack) +__declspec(dllexport) bool SetBPX(ULONG_PTR bpxAddress, DWORD bpxType, LPVOID bpxCallBack) { int i = 0; @@ -12884,7 +12884,7 @@ __declspec(dllexport) bool __stdcall SetBPX(ULONG_PTR bpxAddress, DWORD bpxType, return(false); } } -__declspec(dllexport) bool __stdcall SetBPXEx(ULONG_PTR bpxAddress, DWORD bpxType, DWORD NumberOfExecution, DWORD CmpRegister, DWORD CmpCondition, ULONG_PTR CmpValue, LPVOID bpxCallBack, LPVOID bpxCompareCallBack, LPVOID bpxRemoveCallBack) +__declspec(dllexport) bool SetBPXEx(ULONG_PTR bpxAddress, DWORD bpxType, DWORD NumberOfExecution, DWORD CmpRegister, DWORD CmpCondition, ULONG_PTR CmpValue, LPVOID bpxCallBack, LPVOID bpxCompareCallBack, LPVOID bpxRemoveCallBack) { int i = 0; @@ -13019,11 +13019,11 @@ __declspec(dllexport) bool __stdcall SetBPXEx(ULONG_PTR bpxAddress, DWORD bpxTyp return(false); } } -__declspec(dllexport) bool __stdcall DeleteBPX(ULONG_PTR bpxAddress) +__declspec(dllexport) bool DeleteBPX(ULONG_PTR bpxAddress) { int i; - typedef void(__stdcall *fCustomBreakPoint)(void* myBreakPointAddress); + typedef void(*fCustomBreakPoint)(void* myBreakPointAddress); fCustomBreakPoint myCustomBreakPoint; MEMORY_BASIC_INFORMATION MemInfo; ULONG_PTR NumberOfBytesReadWritten = 0; @@ -13095,11 +13095,11 @@ __declspec(dllexport) bool __stdcall DeleteBPX(ULONG_PTR bpxAddress) return(false); } } -__declspec(dllexport) bool __stdcall SafeDeleteBPX(ULONG_PTR bpxAddress) +__declspec(dllexport) bool SafeDeleteBPX(ULONG_PTR bpxAddress) { return(DeleteBPX(bpxAddress)); } -__declspec(dllexport) bool __stdcall SetAPIBreakPoint(char* szDLLName, char* szAPIName, DWORD bpxType, DWORD bpxPlace, LPVOID bpxCallBack) +__declspec(dllexport) bool SetAPIBreakPoint(char* szDLLName, char* szAPIName, DWORD bpxType, DWORD bpxPlace, LPVOID bpxCallBack) { BYTE ReadByte = NULL; @@ -13260,7 +13260,7 @@ __declspec(dllexport) bool __stdcall SetAPIBreakPoint(char* szDLLName, char* szA } return(false); } -__declspec(dllexport) bool __stdcall DeleteAPIBreakPoint(char* szDLLName, char* szAPIName, DWORD bpxPlace) +__declspec(dllexport) bool DeleteAPIBreakPoint(char* szDLLName, char* szAPIName, DWORD bpxPlace) { BYTE ReadByte = NULL; @@ -13421,11 +13421,11 @@ __declspec(dllexport) bool __stdcall DeleteAPIBreakPoint(char* szDLLName, char* } return(false); } -__declspec(dllexport) bool __stdcall SafeDeleteAPIBreakPoint(char* szDLLName, char* szAPIName, DWORD bpxPlace) +__declspec(dllexport) bool SafeDeleteAPIBreakPoint(char* szDLLName, char* szAPIName, DWORD bpxPlace) { return(DeleteAPIBreakPoint(szDLLName, szAPIName, bpxPlace)); } -__declspec(dllexport) bool __stdcall SetMemoryBPX(ULONG_PTR MemoryStart, DWORD SizeOfMemory, LPVOID bpxCallBack) +__declspec(dllexport) bool SetMemoryBPX(ULONG_PTR MemoryStart, DWORD SizeOfMemory, LPVOID bpxCallBack) { int i = 0; int j = -1; @@ -13484,7 +13484,7 @@ __declspec(dllexport) bool __stdcall SetMemoryBPX(ULONG_PTR MemoryStart, DWORD S return(false); } } -__declspec(dllexport) bool __stdcall SetMemoryBPXEx(ULONG_PTR MemoryStart, DWORD SizeOfMemory, DWORD BreakPointType, bool RestoreOnHit, LPVOID bpxCallBack) +__declspec(dllexport) bool SetMemoryBPXEx(ULONG_PTR MemoryStart, DWORD SizeOfMemory, DWORD BreakPointType, bool RestoreOnHit, LPVOID bpxCallBack) { int i = 0; @@ -13545,7 +13545,7 @@ __declspec(dllexport) bool __stdcall SetMemoryBPXEx(ULONG_PTR MemoryStart, DWORD return(false); } } -__declspec(dllexport) bool __stdcall RemoveMemoryBPX(ULONG_PTR MemoryStart, DWORD SizeOfMemory) +__declspec(dllexport) bool RemoveMemoryBPX(ULONG_PTR MemoryStart, DWORD SizeOfMemory) { int i = 0; @@ -13593,7 +13593,7 @@ __declspec(dllexport) bool __stdcall RemoveMemoryBPX(ULONG_PTR MemoryStart, DWOR return(false); } } -__declspec(dllexport) bool __stdcall GetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea) +__declspec(dllexport) bool GetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea) { if(FPUSaveArea != NULL) @@ -13613,7 +13613,7 @@ __declspec(dllexport) bool __stdcall GetContextFPUDataEx(HANDLE hActiveThread, v return(false); } } -__declspec(dllexport) long long __stdcall GetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister) +__declspec(dllexport) long long GetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister) { RtlZeroMemory(&DBGContext, sizeof CONTEXT); @@ -13889,7 +13889,7 @@ __declspec(dllexport) long long __stdcall GetContextDataEx(HANDLE hActiveThread, #endif return(NULL); } -__declspec(dllexport) long long __stdcall GetContextData(DWORD IndexOfRegister) +__declspec(dllexport) long long GetContextData(DWORD IndexOfRegister) { HANDLE hActiveThread = 0; @@ -13900,7 +13900,7 @@ __declspec(dllexport) long long __stdcall GetContextData(DWORD IndexOfRegister) EngineCloseHandle(hActiveThread); return(ContextReturn); } -__declspec(dllexport) bool __stdcall SetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea) +__declspec(dllexport) bool SetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea) { if(FPUSaveArea != NULL) @@ -13920,7 +13920,7 @@ __declspec(dllexport) bool __stdcall SetContextFPUDataEx(HANDLE hActiveThread, v } return(false); } -__declspec(dllexport) bool __stdcall SetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister, ULONG_PTR NewRegisterValue) +__declspec(dllexport) bool SetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister, ULONG_PTR NewRegisterValue) { RtlZeroMemory(&DBGContext, sizeof CONTEXT); @@ -14221,7 +14221,7 @@ __declspec(dllexport) bool __stdcall SetContextDataEx(HANDLE hActiveThread, DWOR #endif return(false); } -__declspec(dllexport) bool __stdcall SetContextData(DWORD IndexOfRegister, ULONG_PTR NewRegisterValue) +__declspec(dllexport) bool SetContextData(DWORD IndexOfRegister, ULONG_PTR NewRegisterValue) { HANDLE hActiveThread = 0; @@ -14232,15 +14232,15 @@ __declspec(dllexport) bool __stdcall SetContextData(DWORD IndexOfRegister, ULONG EngineCloseHandle(hActiveThread); return(ContextReturn); } -__declspec(dllexport) void __stdcall ClearExceptionNumber() +__declspec(dllexport) void ClearExceptionNumber() { CurrentExceptionsNumber = 0; } -__declspec(dllexport) long __stdcall CurrentExceptionNumber() +__declspec(dllexport) long CurrentExceptionNumber() { return(CurrentExceptionsNumber); } -__declspec(dllexport) bool __stdcall MatchPatternEx(HANDLE hProcess, void* MemoryToCheck, int SizeOfMemoryToCheck, void* PatternToMatch, int SizeOfPatternToMatch, PBYTE WildCard) +__declspec(dllexport) bool MatchPatternEx(HANDLE hProcess, void* MemoryToCheck, int SizeOfMemoryToCheck, void* PatternToMatch, int SizeOfPatternToMatch, PBYTE WildCard) { int i = NULL; @@ -14318,7 +14318,7 @@ __declspec(dllexport) bool __stdcall MatchPatternEx(HANDLE hProcess, void* Memor return(false); } } -__declspec(dllexport) bool __stdcall MatchPattern(void* MemoryToCheck, int SizeOfMemoryToCheck, void* PatternToMatch, int SizeOfPatternToMatch, PBYTE WildCard) +__declspec(dllexport) bool MatchPattern(void* MemoryToCheck, int SizeOfMemoryToCheck, void* PatternToMatch, int SizeOfPatternToMatch, PBYTE WildCard) { if(dbgProcessInformation.hProcess != NULL) @@ -14330,7 +14330,7 @@ __declspec(dllexport) bool __stdcall MatchPattern(void* MemoryToCheck, int SizeO return(MatchPatternEx(GetCurrentProcess(), MemoryToCheck, SizeOfMemoryToCheck, PatternToMatch, SizeOfPatternToMatch, WildCard)); } } -__declspec(dllexport) long long __stdcall FindEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, LPBYTE WildCard) +__declspec(dllexport) long long FindEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, LPBYTE WildCard) { int i = NULL; @@ -14422,7 +14422,8 @@ __declspec(dllexport) long long __stdcall FindEx(HANDLE hProcess, LPVOID MemoryS return(NULL); } } -__declspec(dllexport) long long __stdcall FindU(LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, LPBYTE WildCard) + +extern "C" __declspec(dllexport) long long Find(LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, LPBYTE WildCard) { if(dbgProcessInformation.hProcess != NULL) @@ -14434,7 +14435,7 @@ __declspec(dllexport) long long __stdcall FindU(LPVOID MemoryStart, DWORD Memory return(FindEx(GetCurrentProcess(), MemoryStart, MemorySize, SearchPattern, PatternSize, WildCard)); } } -__declspec(dllexport) bool __stdcall FillEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, PBYTE FillByte) +__declspec(dllexport) bool FillEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, PBYTE FillByte) { unsigned int i; @@ -14462,7 +14463,7 @@ __declspec(dllexport) bool __stdcall FillEx(HANDLE hProcess, LPVOID MemoryStart, } return(false); } -__declspec(dllexport) bool __stdcall Fill(LPVOID MemoryStart, DWORD MemorySize, PBYTE FillByte) +__declspec(dllexport) bool Fill(LPVOID MemoryStart, DWORD MemorySize, PBYTE FillByte) { if(dbgProcessInformation.hProcess != NULL) @@ -14474,7 +14475,7 @@ __declspec(dllexport) bool __stdcall Fill(LPVOID MemoryStart, DWORD MemorySize, return(FillEx(GetCurrentProcess(), MemoryStart, MemorySize, FillByte)); } } -__declspec(dllexport) bool __stdcall PatchEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, LPVOID ReplacePattern, DWORD ReplaceSize, bool AppendNOP, bool PrependNOP) +__declspec(dllexport) bool PatchEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, LPVOID ReplacePattern, DWORD ReplaceSize, bool AppendNOP, bool PrependNOP) { unsigned int i,recalcSize; @@ -14527,7 +14528,7 @@ __declspec(dllexport) bool __stdcall PatchEx(HANDLE hProcess, LPVOID MemoryStart } return(false); } -__declspec(dllexport) bool __stdcall Patch(LPVOID MemoryStart, DWORD MemorySize, LPVOID ReplacePattern, DWORD ReplaceSize, bool AppendNOP, bool PrependNOP) +__declspec(dllexport) bool Patch(LPVOID MemoryStart, DWORD MemorySize, LPVOID ReplacePattern, DWORD ReplaceSize, bool AppendNOP, bool PrependNOP) { if(dbgProcessInformation.hProcess != NULL) @@ -14539,7 +14540,7 @@ __declspec(dllexport) bool __stdcall Patch(LPVOID MemoryStart, DWORD MemorySize, return(PatchEx(GetCurrentProcess(), MemoryStart, MemorySize, ReplacePattern, ReplaceSize, AppendNOP, PrependNOP)); } } -__declspec(dllexport) bool __stdcall ReplaceEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, DWORD NumberOfRepetitions, LPVOID ReplacePattern, DWORD ReplaceSize, PBYTE WildCard) +__declspec(dllexport) bool ReplaceEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, DWORD NumberOfRepetitions, LPVOID ReplacePattern, DWORD ReplaceSize, PBYTE WildCard) { unsigned int i; @@ -14579,7 +14580,7 @@ __declspec(dllexport) bool __stdcall ReplaceEx(HANDLE hProcess, LPVOID MemorySta return(true); } } -__declspec(dllexport) bool __stdcall Replace(LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, DWORD NumberOfRepetitions, LPVOID ReplacePattern, DWORD ReplaceSize, PBYTE WildCard) +__declspec(dllexport) bool Replace(LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, DWORD NumberOfRepetitions, LPVOID ReplacePattern, DWORD ReplaceSize, PBYTE WildCard) { if(dbgProcessInformation.hProcess != NULL) @@ -14591,27 +14592,27 @@ __declspec(dllexport) bool __stdcall Replace(LPVOID MemoryStart, DWORD MemorySiz return(ReplaceEx(GetCurrentProcess(), MemoryStart, MemorySize, SearchPattern, PatternSize, NumberOfRepetitions, ReplacePattern, ReplaceSize, WildCard)); } } -__declspec(dllexport) void* __stdcall GetDebugData() +__declspec(dllexport) void* GetDebugData() { return(&DBGEvent); } -__declspec(dllexport) void* __stdcall GetTerminationData() +__declspec(dllexport) void* GetTerminationData() { return(&TerminateDBGEvent); } -__declspec(dllexport) long __stdcall GetExitCode() +__declspec(dllexport) long GetExitCode() { return(ProcessExitCode); } -__declspec(dllexport) long long __stdcall GetDebuggedDLLBaseAddress() +__declspec(dllexport) long long GetDebuggedDLLBaseAddress() { return((ULONG_PTR)engineDebuggingDLLBase); } -__declspec(dllexport) unsigned long long __stdcall GetDebuggedFileBaseAddress() +__declspec(dllexport) unsigned long long GetDebuggedFileBaseAddress() { return (unsigned long long)engineDebuggingMainModuleBase; } -__declspec(dllexport) bool __stdcall GetRemoteString(HANDLE hProcess, LPVOID StringAddress, LPVOID StringStorage, int MaximumStringSize) +__declspec(dllexport) bool GetRemoteString(HANDLE hProcess, LPVOID StringAddress, LPVOID StringStorage, int MaximumStringSize) { MEMORY_BASIC_INFORMATION MemInfo; @@ -14646,7 +14647,7 @@ __declspec(dllexport) bool __stdcall GetRemoteString(HANDLE hProcess, LPVOID Str return(false); } } -__declspec(dllexport) long long __stdcall GetFunctionParameter(HANDLE hProcess, DWORD FunctionType, DWORD ParameterNumber, DWORD ParameterType) +__declspec(dllexport) long long GetFunctionParameter(HANDLE hProcess, DWORD FunctionType, DWORD ParameterNumber, DWORD ParameterType) { MEMORY_BASIC_INFORMATION MemInfo; @@ -14814,7 +14815,7 @@ __declspec(dllexport) long long __stdcall GetFunctionParameter(HANDLE hProcess, } return(-1); } -__declspec(dllexport) long long __stdcall GetJumpDestinationEx(HANDLE hProcess, ULONG_PTR InstructionAddress, bool JustJumps) +__declspec(dllexport) long long GetJumpDestinationEx(HANDLE hProcess, ULONG_PTR InstructionAddress, bool JustJumps) { LPVOID ReadMemory; @@ -15098,11 +15099,11 @@ __declspec(dllexport) long long __stdcall GetJumpDestinationEx(HANDLE hProcess, } return(NULL); } -__declspec(dllexport) long long __stdcall GetJumpDestination(HANDLE hProcess, ULONG_PTR InstructionAddress) +__declspec(dllexport) long long GetJumpDestination(HANDLE hProcess, ULONG_PTR InstructionAddress) { return((ULONG_PTR)GetJumpDestinationEx(hProcess, InstructionAddress, false)); } -__declspec(dllexport) bool __stdcall IsJumpGoingToExecuteEx(HANDLE hProcess, HANDLE hThread, ULONG_PTR InstructionAddress, ULONG_PTR RegFlags) +__declspec(dllexport) bool IsJumpGoingToExecuteEx(HANDLE hProcess, HANDLE hThread, ULONG_PTR InstructionAddress, ULONG_PTR RegFlags) { ULONG_PTR ThreadCIP = NULL; DWORD ThreadEflags = NULL; @@ -15428,11 +15429,11 @@ __declspec(dllexport) bool __stdcall IsJumpGoingToExecuteEx(HANDLE hProcess, HAN } return(false); } -__declspec(dllexport) bool __stdcall IsJumpGoingToExecute() +__declspec(dllexport) bool IsJumpGoingToExecute() { return(IsJumpGoingToExecuteEx(dbgProcessInformation.hProcess, dbgProcessInformation.hThread, NULL, NULL)); } -__declspec(dllexport) void __stdcall SetCustomHandler(DWORD ExceptionId, LPVOID CallBack) +__declspec(dllexport) void SetCustomHandler(DWORD ExceptionId, LPVOID CallBack) { if(ExceptionId == UE_CH_BREAKPOINT) @@ -15544,7 +15545,7 @@ __declspec(dllexport) void __stdcall SetCustomHandler(DWORD ExceptionId, LPVOID DBGCustomHandler->chSystemBreakpoint = (ULONG_PTR)CallBack; } } -__declspec(dllexport) void __stdcall ForceClose() +__declspec(dllexport) void ForceClose() { /*wchar_t szTempName[MAX_PATH]; wchar_t szTempFolder[MAX_PATH];*/ @@ -15672,7 +15673,7 @@ __declspec(dllexport) void __stdcall ForceClose() engineDebuggingDLL = false; DebugExeFileEntryPointCallBack = NULL; } -__declspec(dllexport) void __stdcall StepInto(LPVOID StepCallBack) +__declspec(dllexport) void StepInto(LPVOID StepCallBack) { ULONG_PTR ueContext = NULL; @@ -15686,7 +15687,7 @@ __declspec(dllexport) void __stdcall StepInto(LPVOID StepCallBack) engineStepCallBack = StepCallBack; engineStepCount = NULL; } -__declspec(dllexport) void __stdcall StepOver(LPVOID StepCallBack) +__declspec(dllexport) void StepOver(LPVOID StepCallBack) { ULONG_PTR ueCurrentPosition = NULL; #if !defined(_WIN64) @@ -15706,7 +15707,7 @@ __declspec(dllexport) void __stdcall StepOver(LPVOID StepCallBack) StepInto(StepCallBack); } -__declspec(dllexport) void __stdcall SingleStep(DWORD StepCount, LPVOID StepCallBack) +__declspec(dllexport) void SingleStep(DWORD StepCount, LPVOID StepCallBack) { ULONG_PTR ueContext = NULL; @@ -15722,11 +15723,11 @@ __declspec(dllexport) void __stdcall SingleStep(DWORD StepCount, LPVOID StepCall engineStepCallBack = StepCallBack; engineStepCount--; } -__declspec(dllexport) bool __stdcall GetUnusedHardwareBreakPointRegister(LPDWORD RegisterIndex) +__declspec(dllexport) bool GetUnusedHardwareBreakPointRegister(LPDWORD RegisterIndex) { return(EngineIsThereFreeHardwareBreakSlot(RegisterIndex)); } -__declspec(dllexport) bool __stdcall SetHardwareBreakPointEx(HANDLE hActiveThread, ULONG_PTR bpxAddress, DWORD IndexOfRegister, DWORD bpxType, DWORD bpxSize, LPVOID bpxCallBack, LPDWORD IndexOfSelectedRegister) +__declspec(dllexport) bool SetHardwareBreakPointEx(HANDLE hActiveThread, ULONG_PTR bpxAddress, DWORD IndexOfRegister, DWORD bpxType, DWORD bpxSize, LPVOID bpxCallBack, LPDWORD IndexOfSelectedRegister) { ULONG_PTR HardwareBPX = NULL; @@ -16010,7 +16011,7 @@ __declspec(dllexport) bool __stdcall SetHardwareBreakPointEx(HANDLE hActiveThrea } return(false); } -__declspec(dllexport) bool __stdcall SetHardwareBreakPoint(ULONG_PTR bpxAddress, DWORD IndexOfRegister, DWORD bpxType, DWORD bpxSize, LPVOID bpxCallBack) +__declspec(dllexport) bool SetHardwareBreakPoint(ULONG_PTR bpxAddress, DWORD IndexOfRegister, DWORD bpxType, DWORD bpxSize, LPVOID bpxCallBack) { ULONG_PTR HardwareBPX = NULL; @@ -16294,7 +16295,7 @@ __declspec(dllexport) bool __stdcall SetHardwareBreakPoint(ULONG_PTR bpxAddress, } return(false); } -__declspec(dllexport) bool __stdcall DeleteHardwareBreakPoint(DWORD IndexOfRegister) +__declspec(dllexport) bool DeleteHardwareBreakPoint(DWORD IndexOfRegister) { ULONG_PTR HardwareBPX = NULL; @@ -16354,7 +16355,7 @@ __declspec(dllexport) bool __stdcall DeleteHardwareBreakPoint(DWORD IndexOfRegis } return(false); } -__declspec(dllexport) bool __stdcall RemoveAllBreakPoints(DWORD RemoveOption) +__declspec(dllexport) bool RemoveAllBreakPoints(DWORD RemoveOption) { int i = 0; @@ -16449,15 +16450,15 @@ __declspec(dllexport) bool __stdcall RemoveAllBreakPoints(DWORD RemoveOption) } return(false); } -__declspec(dllexport) void* __stdcall GetProcessInformation() +__declspec(dllexport) void* GetProcessInformation() { return(&dbgProcessInformation); } -__declspec(dllexport) void* __stdcall GetStartupInformation() +__declspec(dllexport) void* GetStartupInformation() { return(&dbgStartupInfo); } -__declspec(dllexport) void __stdcall DebugLoop() +__declspec(dllexport) void DebugLoop() { int i = NULL; @@ -16479,9 +16480,9 @@ __declspec(dllexport) void __stdcall DebugLoop() PLIBRARY_ITEM_DATAW hListLibraryPtr = NULL; PLIBRARY_ITEM_DATAW hLoadedLibData = NULL; PLIBRARY_BREAK_DATA ptrLibrarianData = NULL; - typedef void(__stdcall *fCustomBreakPoint)(void); - typedef void(__stdcall *fCustomHandler)(void* SpecialDBG); - typedef void(__stdcall *fFindOEPHandler)(LPPROCESS_INFORMATION fProcessInfo, LPVOID fCallBack); + typedef void(*fCustomBreakPoint)(void); + typedef void(*fCustomHandler)(void* SpecialDBG); + typedef void(*fFindOEPHandler)(LPPROCESS_INFORMATION fProcessInfo, LPVOID fCallBack); fCustomHandler myCustomHandler; fCustomBreakPoint myCustomBreakPoint; fFindOEPHandler myFindOEPHandler; @@ -18073,7 +18074,7 @@ __declspec(dllexport) void __stdcall DebugLoop() EngineExecutePluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_POSTDEBUG); } } -__declspec(dllexport) void __stdcall SetDebugLoopTimeOut(DWORD TimeOut) +__declspec(dllexport) void SetDebugLoopTimeOut(DWORD TimeOut) { if(TimeOut == NULL) @@ -18082,7 +18083,7 @@ __declspec(dllexport) void __stdcall SetDebugLoopTimeOut(DWORD TimeOut) } engineWaitForDebugEventTimeOut = TimeOut; } -__declspec(dllexport) void __stdcall SetNextDbgContinueStatus(DWORD SetDbgCode) +__declspec(dllexport) void SetNextDbgContinueStatus(DWORD SetDbgCode) { if(SetDbgCode != DBG_CONTINUE) @@ -18094,16 +18095,16 @@ __declspec(dllexport) void __stdcall SetNextDbgContinueStatus(DWORD SetDbgCode) DBGCode = DBG_CONTINUE; } } -__declspec(dllexport) void __stdcall DebugLoopEx(DWORD TimeOut) +__declspec(dllexport) void DebugLoopEx(DWORD TimeOut) { SetDebugLoopTimeOut(TimeOut); DebugLoop(); SetDebugLoopTimeOut(INFINITE); } -__declspec(dllexport) bool __stdcall AttachDebugger(DWORD ProcessId, bool KillOnExit, LPVOID DebugInfo, LPVOID CallBack) +__declspec(dllexport) bool AttachDebugger(DWORD ProcessId, bool KillOnExit, LPVOID DebugInfo, LPVOID CallBack) { - typedef void(__stdcall *fDebugSetProcessKillOnExit)(bool KillExitingDebugee); + typedef void(*fDebugSetProcessKillOnExit)(bool KillExitingDebugee); fDebugSetProcessKillOnExit myDebugSetProcessKillOnExit; LPVOID funcDebugSetProcessKillOnExit = NULL; @@ -18139,10 +18140,10 @@ __declspec(dllexport) bool __stdcall AttachDebugger(DWORD ProcessId, bool KillOn } return(false); } -__declspec(dllexport) bool __stdcall DetachDebugger(DWORD ProcessId) +__declspec(dllexport) bool DetachDebugger(DWORD ProcessId) { - typedef bool(__stdcall *fDebugActiveProcessStop)(DWORD dwProcessId); + typedef bool(*fDebugActiveProcessStop)(DWORD dwProcessId); fDebugActiveProcessStop myDebugActiveProcessStop; LPVOID funcDebugActiveProcessStop = NULL; bool FuncReturn = false; @@ -18169,7 +18170,7 @@ __declspec(dllexport) bool __stdcall DetachDebugger(DWORD ProcessId) } return(false); } -__declspec(dllexport) bool __stdcall DetachDebuggerEx(DWORD ProcessId) +__declspec(dllexport) bool DetachDebuggerEx(DWORD ProcessId) { HANDLE hActiveThread; @@ -18205,7 +18206,7 @@ __declspec(dllexport) bool __stdcall DetachDebuggerEx(DWORD ProcessId) return(false); } } -__declspec(dllexport) void __stdcall AutoDebugEx(char* szFileName, bool ReserveModuleBase, char* szCommandLine, char* szCurrentFolder, DWORD TimeOut, LPVOID EntryCallBack) +__declspec(dllexport) void AutoDebugEx(char* szFileName, bool ReserveModuleBase, char* szCommandLine, char* szCurrentFolder, DWORD TimeOut, LPVOID EntryCallBack) { wchar_t* PtrUniFileName = NULL; @@ -18235,7 +18236,7 @@ __declspec(dllexport) void __stdcall AutoDebugEx(char* szFileName, bool ReserveM return(AutoDebugExW(PtrUniFileName, ReserveModuleBase, PtrUniCommandLine, PtrUniCurrentFolder, TimeOut, EntryCallBack)); } } -__declspec(dllexport) void __stdcall AutoDebugExW(wchar_t* szFileName, bool ReserveModuleBase, wchar_t* szCommandLine, wchar_t* szCurrentFolder, DWORD TimeOut, LPVOID EntryCallBack) +__declspec(dllexport) void AutoDebugExW(wchar_t* szFileName, bool ReserveModuleBase, wchar_t* szCommandLine, wchar_t* szCurrentFolder, DWORD TimeOut, LPVOID EntryCallBack) { engineReserveModuleBase = NULL; DWORD ThreadId; @@ -18281,11 +18282,11 @@ __declspec(dllexport) void __stdcall AutoDebugExW(wchar_t* szFileName, bool Rese SetDebugLoopTimeOut(INFINITE); } } -__declspec(dllexport) bool __stdcall IsFileBeingDebugged() +__declspec(dllexport) bool IsFileBeingDebugged() { return(engineFileIsBeingDebugged); } -__declspec(dllexport) void __stdcall SetErrorModel(bool DisplayErrorMessages) +__declspec(dllexport) void SetErrorModel(bool DisplayErrorMessages) { if(DisplayErrorMessages) @@ -18298,7 +18299,7 @@ __declspec(dllexport) void __stdcall SetErrorModel(bool DisplayErrorMessages) } } // Global.FindOEP.functions: -void __stdcall GenericOEPVirtualProtectHit() +void GenericOEPVirtualProtectHit() { PBreakPointDetail bpxList = (PBreakPointDetail)BreakPointBuffer; @@ -18323,11 +18324,11 @@ void __stdcall GenericOEPVirtualProtectHit() MaximumBreakPoints++; } } -void __stdcall GenericOEPTraceHit() +void GenericOEPTraceHit() { char* szInstructionType; - typedef void(__stdcall *fEPCallBack)(); + typedef void(*fEPCallBack)(); fEPCallBack myEPCallBack = (fEPCallBack)glbEntryTracerData.EPCallBack; LPDEBUG_EVENT myDbgEvent = (LPDEBUG_EVENT)GetDebugData(); @@ -18337,7 +18338,7 @@ void __stdcall GenericOEPTraceHit() szInstructionType = (char*)DisassembleEx(dbgProcessInformation.hProcess, (void*)glbEntryTracerData.MemoryAccessedFrom, true); StepInto(&GenericOEPTraceHited); } -void __stdcall GenericOEPTraceHited() +void GenericOEPTraceHited() { int i; @@ -18345,7 +18346,7 @@ void __stdcall GenericOEPTraceHited() bool FakeEPDetected = false; ULONG_PTR NumberOfBytesRW; LPDEBUG_EVENT myDbgEvent = (LPDEBUG_EVENT)GetDebugData(); - typedef void(__stdcall *fEPCallBack)(); + typedef void(*fEPCallBack)(); fEPCallBack myEPCallBack = (fEPCallBack)glbEntryTracerData.EPCallBack; PMEMORY_COMPARE_HANDLER myCmpHandler; ULONG_PTR memBpxAddress; @@ -18437,7 +18438,7 @@ void __stdcall GenericOEPTraceHited() StopDebug(); } } -void __stdcall GenericOEPLibraryDetailsHit() +void GenericOEPLibraryDetailsHit() { int i; @@ -18481,13 +18482,13 @@ void __stdcall GenericOEPLibraryDetailsHit() } } } -void __stdcall GenericOEPTraceInit() +void GenericOEPTraceInit() { int i; void* lpHashBuffer; ULONG_PTR NumberOfBytesRW; - typedef void(__stdcall *fInitCallBack)(); + typedef void(*fInitCallBack)(); fInitCallBack myInitCallBack = (fInitCallBack)glbEntryTracerData.InitCallBack; if(glbEntryTracerData.FileIsDLL) @@ -18524,7 +18525,7 @@ void __stdcall GenericOEPTraceInit() } } } -bool __stdcall GenericOEPFileInitW(wchar_t* szFileName, LPVOID TraceInitCallBack, LPVOID CallBack) +bool GenericOEPFileInitW(wchar_t* szFileName, LPVOID TraceInitCallBack, LPVOID CallBack) { int i; @@ -18583,11 +18584,11 @@ bool __stdcall GenericOEPFileInitW(wchar_t* szFileName, LPVOID TraceInitCallBack return(false); } // TitanEngine.FindOEP.functions: -__declspec(dllexport) void __stdcall FindOEPInit() +__declspec(dllexport) void FindOEPInit() { RemoveAllBreakPoints(UE_OPTION_REMOVEALL); } -__declspec(dllexport) bool __stdcall FindOEPGenerically(char* szFileName, LPVOID TraceInitCallBack, LPVOID CallBack) +__declspec(dllexport) bool FindOEPGenerically(char* szFileName, LPVOID TraceInitCallBack, LPVOID CallBack) { wchar_t uniFileName[MAX_PATH] = {}; @@ -18602,7 +18603,7 @@ __declspec(dllexport) bool __stdcall FindOEPGenerically(char* szFileName, LPVOID return(false); } } -__declspec(dllexport) bool __stdcall FindOEPGenericallyW(wchar_t* szFileName, LPVOID TraceInitCallBack, LPVOID CallBack) +__declspec(dllexport) bool FindOEPGenericallyW(wchar_t* szFileName, LPVOID TraceInitCallBack, LPVOID CallBack) { int i; @@ -18619,7 +18620,7 @@ __declspec(dllexport) bool __stdcall FindOEPGenericallyW(wchar_t* szFileName, LP return(false); } // TitanEngine.Importer.functions: -__declspec(dllexport) void __stdcall ImporterCleanup() +__declspec(dllexport) void ImporterCleanup() { int i = 0; @@ -18642,21 +18643,21 @@ __declspec(dllexport) void __stdcall ImporterCleanup() impOrdinalList[i][1] = 0; } } -__declspec(dllexport) void __stdcall ImporterSetImageBase(ULONG_PTR ImageBase) +__declspec(dllexport) void ImporterSetImageBase(ULONG_PTR ImageBase) { impImageBase = ImageBase; } -__declspec(dllexport) void __stdcall ImporterSetUnknownDelta(ULONG_PTR DeltaAddress) +__declspec(dllexport) void ImporterSetUnknownDelta(ULONG_PTR DeltaAddress) { impDeltaStart = DeltaAddress; impDeltaCurrent = DeltaAddress; } -__declspec(dllexport) long long __stdcall ImporterGetCurrentDelta() +__declspec(dllexport) long long ImporterGetCurrentDelta() { return((ULONG_PTR)impDeltaCurrent); } -__declspec(dllexport) void __stdcall ImporterInit(DWORD MemorySize, ULONG_PTR ImageBase) +__declspec(dllexport) void ImporterInit(DWORD MemorySize, ULONG_PTR ImageBase) { impImageBase = ImageBase; @@ -18674,7 +18675,7 @@ __declspec(dllexport) void __stdcall ImporterInit(DWORD MemorySize, ULONG_PTR Im impDeltaStart = NULL; impDeltaCurrent = NULL; } -__declspec(dllexport) void __stdcall ImporterAddNewDll(char* szDLLName, ULONG_PTR FirstThunk) +__declspec(dllexport) void ImporterAddNewDll(char* szDLLName, ULONG_PTR FirstThunk) { int CopyDummy = 1; @@ -18699,7 +18700,7 @@ __declspec(dllexport) void __stdcall ImporterAddNewDll(char* szDLLName, ULONG_PT impDeltaCurrent = impDeltaCurrent + sizeof ULONG_PTR; } } -__declspec(dllexport) void __stdcall ImporterAddNewAPI(char* szAPIName, ULONG_PTR ThunkValue) +__declspec(dllexport) void ImporterAddNewAPI(char* szAPIName, ULONG_PTR ThunkValue) { int i = NULL; @@ -18763,7 +18764,7 @@ __declspec(dllexport) void __stdcall ImporterAddNewAPI(char* szAPIName, ULONG_PT CopyDummy++; RtlMoveMemory((LPVOID)(impDLLDataList[impDLLNumber][0] + 2 * sizeof ULONG_PTR), &CopyDummy, 4); } -__declspec(dllexport) void __stdcall ImporterAddNewOrdinalAPI(ULONG_PTR OrdinalNumber, ULONG_PTR ThunkValue) +__declspec(dllexport) void ImporterAddNewOrdinalAPI(ULONG_PTR OrdinalNumber, ULONG_PTR ThunkValue) { if(OrdinalNumber & IMAGE_ORDINAL_FLAG) @@ -18776,11 +18777,11 @@ __declspec(dllexport) void __stdcall ImporterAddNewOrdinalAPI(ULONG_PTR OrdinalN ImporterAddNewAPI((char*)OrdinalNumber, ThunkValue); } } -__declspec(dllexport) long __stdcall ImporterGetAddedDllCount() +__declspec(dllexport) long ImporterGetAddedDllCount() { return(impDLLNumber + 1); } -__declspec(dllexport) long __stdcall ImporterGetAddedAPICount() +__declspec(dllexport) long ImporterGetAddedAPICount() { int i = 0; @@ -18798,7 +18799,7 @@ __declspec(dllexport) long __stdcall ImporterGetAddedAPICount() } return(APINumber); } -__declspec(dllexport) void* __stdcall ImporterGetLastAddedDLLName() +__declspec(dllexport) void* ImporterGetLastAddedDLLName() { if(impDLLNumber != -1) @@ -18810,11 +18811,11 @@ __declspec(dllexport) void* __stdcall ImporterGetLastAddedDLLName() return(NULL); } } -__declspec(dllexport) void __stdcall ImporterMoveIAT() +__declspec(dllexport) void ImporterMoveIAT() { impMoveIAT = true; } -__declspec(dllexport) bool __stdcall ImporterExportIAT(ULONG_PTR StorePlace, ULONG_PTR FileMapVA) +__declspec(dllexport) bool ImporterExportIAT(ULONG_PTR StorePlace, ULONG_PTR FileMapVA) { int i = 0; @@ -18953,7 +18954,7 @@ __declspec(dllexport) bool __stdcall ImporterExportIAT(ULONG_PTR StorePlace, ULO return(false); } } -__declspec(dllexport) long __stdcall ImporterEstimatedSize() +__declspec(dllexport) long ImporterEstimatedSize() { int i = 0; @@ -18981,7 +18982,7 @@ __declspec(dllexport) long __stdcall ImporterEstimatedSize() } return(EstimatedSize); } -__declspec(dllexport) bool __stdcall ImporterExportIATEx(char* szExportFileName, char* szSectionName) +__declspec(dllexport) bool ImporterExportIATEx(char* szExportFileName, char* szSectionName) { wchar_t uniExportFileName[MAX_PATH] = {}; @@ -18996,7 +18997,7 @@ __declspec(dllexport) bool __stdcall ImporterExportIATEx(char* szExportFileName, return(false); } } -__declspec(dllexport) bool __stdcall ImporterExportIATExW(wchar_t* szExportFileName, char* szSectionName) +__declspec(dllexport) bool ImporterExportIATExW(wchar_t* szExportFileName, char* szSectionName) { HANDLE FileHandle; @@ -19034,7 +19035,7 @@ __declspec(dllexport) bool __stdcall ImporterExportIATExW(wchar_t* szExportFileN return(false); } } -__declspec(dllexport) long long __stdcall ImporterFindAPIWriteLocation(char* szAPIName) +__declspec(dllexport) long long ImporterFindAPIWriteLocation(char* szAPIName) { int i = 0; @@ -19090,11 +19091,11 @@ __declspec(dllexport) long long __stdcall ImporterFindAPIWriteLocation(char* szA } return(NULL); } -__declspec(dllexport) long long __stdcall ImporterFindOrdinalAPIWriteLocation(ULONG_PTR OrdinalNumber) +__declspec(dllexport) long long ImporterFindOrdinalAPIWriteLocation(ULONG_PTR OrdinalNumber) { return(ImporterFindAPIWriteLocation((char*)OrdinalNumber)); } -__declspec(dllexport) long long __stdcall ImporterFindAPIByWriteLocation(ULONG_PTR APIWriteLocation) +__declspec(dllexport) long long ImporterFindAPIByWriteLocation(ULONG_PTR APIWriteLocation) { int i = 0; @@ -19128,7 +19129,7 @@ __declspec(dllexport) long long __stdcall ImporterFindAPIByWriteLocation(ULONG_P } return(NULL); } -__declspec(dllexport) long long __stdcall ImporterFindDLLByWriteLocation(ULONG_PTR APIWriteLocation) +__declspec(dllexport) long long ImporterFindDLLByWriteLocation(ULONG_PTR APIWriteLocation) { int i = 0; @@ -19161,27 +19162,27 @@ __declspec(dllexport) long long __stdcall ImporterFindDLLByWriteLocation(ULONG_P } return(NULL); } -__declspec(dllexport) void* __stdcall ImporterGetDLLName(ULONG_PTR APIAddress) +__declspec(dllexport) void* ImporterGetDLLName(ULONG_PTR APIAddress) { return((LPVOID)EngineGlobalAPIHandler(NULL, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_DLLNAME)); } -__declspec(dllexport) void* __stdcall ImporterGetAPIName(ULONG_PTR APIAddress) +__declspec(dllexport) void* ImporterGetAPIName(ULONG_PTR APIAddress) { return((LPVOID)EngineGlobalAPIHandler(NULL, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_APINAME)); } -__declspec(dllexport) long long __stdcall ImporterGetAPIOrdinalNumber(ULONG_PTR APIAddress) +__declspec(dllexport) long long ImporterGetAPIOrdinalNumber(ULONG_PTR APIAddress) { return((long)EngineGlobalAPIHandler(NULL, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_API_ORDINAL_NUMBER)); } -__declspec(dllexport) void* __stdcall ImporterGetAPINameEx(ULONG_PTR APIAddress, ULONG_PTR DLLBasesList) +__declspec(dllexport) void* ImporterGetAPINameEx(ULONG_PTR APIAddress, ULONG_PTR DLLBasesList) { return((LPVOID)EngineGlobalAPIHandler(NULL, DLLBasesList, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_APINAME)); } -__declspec(dllexport) long long __stdcall ImporterGetRemoteAPIAddress(HANDLE hProcess, ULONG_PTR APIAddress) +__declspec(dllexport) long long ImporterGetRemoteAPIAddress(HANDLE hProcess, ULONG_PTR APIAddress) { return((ULONG_PTR)EngineGlobalAPIHandler(hProcess, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_REALIGN_APIADDRESS)); } -__declspec(dllexport) long long __stdcall ImporterGetRemoteAPIAddressEx(char* szDLLName, char* szAPIName) +__declspec(dllexport) long long ImporterGetRemoteAPIAddressEx(char* szDLLName, char* szAPIName) { int i = 0; @@ -19273,35 +19274,35 @@ __declspec(dllexport) long long __stdcall ImporterGetRemoteAPIAddressEx(char* sz } return(NULL); } -__declspec(dllexport) long long __stdcall ImporterGetLocalAPIAddress(HANDLE hProcess, ULONG_PTR APIAddress) +__declspec(dllexport) long long ImporterGetLocalAPIAddress(HANDLE hProcess, ULONG_PTR APIAddress) { return((ULONG_PTR)EngineGlobalAPIHandler(hProcess, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_REALIGN_LOCAL_APIADDRESS)); } -__declspec(dllexport) void* __stdcall ImporterGetDLLNameFromDebugee(HANDLE hProcess, ULONG_PTR APIAddress) +__declspec(dllexport) void* ImporterGetDLLNameFromDebugee(HANDLE hProcess, ULONG_PTR APIAddress) { return((LPVOID)EngineGlobalAPIHandler(hProcess, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_DLLNAME)); } -__declspec(dllexport) void* __stdcall ImporterGetAPINameFromDebugee(HANDLE hProcess, ULONG_PTR APIAddress) +__declspec(dllexport) void* ImporterGetAPINameFromDebugee(HANDLE hProcess, ULONG_PTR APIAddress) { return((LPVOID)EngineGlobalAPIHandler(hProcess, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_APINAME)); } -__declspec(dllexport) long long __stdcall ImporterGetAPIOrdinalNumberFromDebugee(HANDLE hProcess, ULONG_PTR APIAddress) +__declspec(dllexport) long long ImporterGetAPIOrdinalNumberFromDebugee(HANDLE hProcess, ULONG_PTR APIAddress) { return((long)EngineGlobalAPIHandler(hProcess, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_API_ORDINAL_NUMBER)); } -__declspec(dllexport) long __stdcall ImporterGetDLLIndexEx(ULONG_PTR APIAddress, ULONG_PTR DLLBasesList) +__declspec(dllexport) long ImporterGetDLLIndexEx(ULONG_PTR APIAddress, ULONG_PTR DLLBasesList) { return((DWORD)EngineGlobalAPIHandler(NULL, DLLBasesList, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_DLLINDEX)); } -__declspec(dllexport) long __stdcall ImporterGetDLLIndex(HANDLE hProcess, ULONG_PTR APIAddress, ULONG_PTR DLLBasesList) +__declspec(dllexport) long ImporterGetDLLIndex(HANDLE hProcess, ULONG_PTR APIAddress, ULONG_PTR DLLBasesList) { return((DWORD)EngineGlobalAPIHandler(hProcess, DLLBasesList, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_DLLINDEX)); } -__declspec(dllexport) long long __stdcall ImporterGetRemoteDLLBase(HANDLE hProcess, HMODULE LocalModuleBase) +__declspec(dllexport) long long ImporterGetRemoteDLLBase(HANDLE hProcess, HMODULE LocalModuleBase) { return((ULONG_PTR)EngineGlobalAPIHandler(hProcess, NULL, (ULONG_PTR)LocalModuleBase, NULL, UE_OPTION_IMPORTER_RETURN_DLLBASE)); } -__declspec(dllexport) long long __stdcall ImporterGetRemoteDLLBaseEx(HANDLE hProcess, char* szModuleName) +__declspec(dllexport) long long ImporterGetRemoteDLLBaseEx(HANDLE hProcess, char* szModuleName) { int i = 1; @@ -19326,7 +19327,7 @@ __declspec(dllexport) long long __stdcall ImporterGetRemoteDLLBaseEx(HANDLE hPro } return(NULL); } -__declspec(dllexport) bool __stdcall ImporterRelocateWriteLocation(ULONG_PTR AddValue) +__declspec(dllexport) bool ImporterRelocateWriteLocation(ULONG_PTR AddValue) { unsigned int i; @@ -19358,7 +19359,7 @@ __declspec(dllexport) bool __stdcall ImporterRelocateWriteLocation(ULONG_PTR Add } return(false); } -__declspec(dllexport) bool __stdcall ImporterIsForwardedAPI(HANDLE hProcess, ULONG_PTR APIAddress) +__declspec(dllexport) bool ImporterIsForwardedAPI(HANDLE hProcess, ULONG_PTR APIAddress) { if((ULONG_PTR)EngineGlobalAPIHandler(hProcess, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_FORWARDER_DLLINDEX) > NULL) { @@ -19369,31 +19370,31 @@ __declspec(dllexport) bool __stdcall ImporterIsForwardedAPI(HANDLE hProcess, ULO return(false); } } -__declspec(dllexport) void* __stdcall ImporterGetForwardedAPIName(HANDLE hProcess, ULONG_PTR APIAddress) +__declspec(dllexport) void* ImporterGetForwardedAPIName(HANDLE hProcess, ULONG_PTR APIAddress) { return((LPVOID)EngineGlobalAPIHandler(hProcess, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_FORWARDER_APINAME)); } -__declspec(dllexport) void* __stdcall ImporterGetForwardedDLLName(HANDLE hProcess, ULONG_PTR APIAddress) +__declspec(dllexport) void* ImporterGetForwardedDLLName(HANDLE hProcess, ULONG_PTR APIAddress) { return((LPVOID)EngineGlobalAPIHandler(hProcess, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_FORWARDER_DLLNAME)); } -__declspec(dllexport) long __stdcall ImporterGetForwardedDLLIndex(HANDLE hProcess, ULONG_PTR APIAddress, ULONG_PTR DLLBasesList) +__declspec(dllexport) long ImporterGetForwardedDLLIndex(HANDLE hProcess, ULONG_PTR APIAddress, ULONG_PTR DLLBasesList) { return((DWORD)EngineGlobalAPIHandler(hProcess, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_FORWARDER_DLLINDEX)); } -__declspec(dllexport) long long __stdcall ImporterGetForwardedAPIOrdinalNumber(HANDLE hProcess, ULONG_PTR APIAddress) +__declspec(dllexport) long long ImporterGetForwardedAPIOrdinalNumber(HANDLE hProcess, ULONG_PTR APIAddress) { return((DWORD)EngineGlobalAPIHandler(hProcess, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_FORWARDER_API_ORDINAL_NUMBER)); } -__declspec(dllexport) long long __stdcall ImporterGetNearestAPIAddress(HANDLE hProcess, ULONG_PTR APIAddress) +__declspec(dllexport) long long ImporterGetNearestAPIAddress(HANDLE hProcess, ULONG_PTR APIAddress) { return((ULONG_PTR)EngineGlobalAPIHandler(hProcess, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_NEAREST_APIADDRESS)); } -__declspec(dllexport) void* __stdcall ImporterGetNearestAPIName(HANDLE hProcess, ULONG_PTR APIAddress) +__declspec(dllexport) void* ImporterGetNearestAPIName(HANDLE hProcess, ULONG_PTR APIAddress) { return((LPVOID)EngineGlobalAPIHandler(hProcess, NULL, APIAddress, NULL, UE_OPTION_IMPORTER_RETURN_NEAREST_APINAME)); } -__declspec(dllexport) bool __stdcall ImporterCopyOriginalIAT(char* szOriginalFile, char* szDumpFile) +__declspec(dllexport) bool ImporterCopyOriginalIAT(char* szOriginalFile, char* szDumpFile) { wchar_t uniDumpFile[MAX_PATH] = {}; @@ -19410,7 +19411,7 @@ __declspec(dllexport) bool __stdcall ImporterCopyOriginalIAT(char* szOriginalFil return(false); } } -__declspec(dllexport) bool __stdcall ImporterCopyOriginalIATW(wchar_t* szOriginalFile, wchar_t* szDumpFile) +__declspec(dllexport) bool ImporterCopyOriginalIATW(wchar_t* szOriginalFile, wchar_t* szDumpFile) { PIMAGE_DOS_HEADER DOSHeader; @@ -19501,7 +19502,7 @@ __declspec(dllexport) bool __stdcall ImporterCopyOriginalIATW(wchar_t* szOrigina UnMapFileEx(FileHandle1, FileSize1, FileMap1, FileMapVA1); return(false); } -__declspec(dllexport) bool __stdcall ImporterLoadImportTable(char* szFileName) +__declspec(dllexport) bool ImporterLoadImportTable(char* szFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -19516,7 +19517,7 @@ __declspec(dllexport) bool __stdcall ImporterLoadImportTable(char* szFileName) return(false); } } -__declspec(dllexport) bool __stdcall ImporterLoadImportTableW(wchar_t* szFileName) +__declspec(dllexport) bool ImporterLoadImportTableW(wchar_t* szFileName) { PIMAGE_DOS_HEADER DOSHeader; @@ -19660,7 +19661,7 @@ __declspec(dllexport) bool __stdcall ImporterLoadImportTableW(wchar_t* szFileNam UnMapFileEx(FileHandle, FileSize, FileMap, FileMapVA); return(false); } -__declspec(dllexport) bool __stdcall ImporterMoveOriginalIAT(char* szOriginalFile, char* szDumpFile, char* szSectionName) +__declspec(dllexport) bool ImporterMoveOriginalIAT(char* szOriginalFile, char* szDumpFile, char* szSectionName) { if(ImporterLoadImportTable(szOriginalFile)) @@ -19669,7 +19670,7 @@ __declspec(dllexport) bool __stdcall ImporterMoveOriginalIAT(char* szOriginalFil } return(false); } -__declspec(dllexport) bool __stdcall ImporterMoveOriginalIATW(wchar_t* szOriginalFile, wchar_t* szDumpFile, char* szSectionName) +__declspec(dllexport) bool ImporterMoveOriginalIATW(wchar_t* szOriginalFile, wchar_t* szDumpFile, char* szSectionName) { if(ImporterLoadImportTableW(szOriginalFile)) @@ -19678,7 +19679,7 @@ __declspec(dllexport) bool __stdcall ImporterMoveOriginalIATW(wchar_t* szOrigina } return(false); } -__declspec(dllexport) void __stdcall ImporterAutoSearchIAT(HANDLE hProcess, char* szFileName, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, LPVOID pIATStart, LPVOID pIATSize) +__declspec(dllexport) void ImporterAutoSearchIAT(HANDLE hProcess, char* szFileName, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, LPVOID pIATStart, LPVOID pIATSize) { wchar_t uniFileName[MAX_PATH] = {}; @@ -19689,7 +19690,7 @@ __declspec(dllexport) void __stdcall ImporterAutoSearchIAT(HANDLE hProcess, char return(ImporterAutoSearchIATW(hProcess, uniFileName, ImageBase, SearchStart, SearchSize, pIATStart, pIATSize)); } } -__declspec(dllexport) void __stdcall ImporterAutoSearchIATW(HANDLE hProcess, wchar_t* szFileName, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, LPVOID pIATStart, LPVOID pIATSize) +__declspec(dllexport) void ImporterAutoSearchIATW(HANDLE hProcess, wchar_t* szFileName, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, LPVOID pIATStart, LPVOID pIATSize) { int i = NULL; @@ -20067,7 +20068,7 @@ __declspec(dllexport) void __stdcall ImporterAutoSearchIATW(HANDLE hProcess, wch VirtualFree(CheckMemory, NULL, MEM_RELEASE); return; } -__declspec(dllexport) void __stdcall ImporterAutoSearchIATEx(HANDLE hProcess, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, LPVOID pIATStart, LPVOID pIATSize) +__declspec(dllexport) void ImporterAutoSearchIATEx(HANDLE hProcess, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, LPVOID pIATStart, LPVOID pIATSize) { wchar_t szTempName[MAX_PATH]; @@ -20085,7 +20086,7 @@ __declspec(dllexport) void __stdcall ImporterAutoSearchIATEx(HANDLE hProcess, UL } } } -__declspec(dllexport) void __stdcall ImporterEnumAddedData(LPVOID EnumCallBack) +__declspec(dllexport) void ImporterEnumAddedData(LPVOID EnumCallBack) { int i = 0; @@ -20097,7 +20098,7 @@ __declspec(dllexport) void __stdcall ImporterEnumAddedData(LPVOID EnumCallBack) LPVOID NameReadPlace = NULL; ULONG_PTR CurrentAPILocation = NULL; DWORD APINameRelativeOffset = NULL; - typedef void(__stdcall *fEnumCallBack)(LPVOID fImportDetail); + typedef void(*fEnumCallBack)(LPVOID fImportDetail); fEnumCallBack myEnumCallBack = (fEnumCallBack)EnumCallBack; ImportEnumData myImportEnumData; char szOrdinalAPIName[MAX_PATH]; @@ -20165,7 +20166,7 @@ __declspec(dllexport) void __stdcall ImporterEnumAddedData(LPVOID EnumCallBack) } } } -__declspec(dllexport) long __stdcall ImporterAutoFixIATEx(HANDLE hProcess, char* szDumpedFile, char* szSectionName, bool DumpRunningProcess, bool RealignFile, ULONG_PTR EntryPointAddress, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep, bool TryAutoFix, bool FixEliminations, LPVOID UnknownPointerFixCallback) +__declspec(dllexport) long ImporterAutoFixIATEx(HANDLE hProcess, char* szDumpedFile, char* szSectionName, bool DumpRunningProcess, bool RealignFile, ULONG_PTR EntryPointAddress, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep, bool TryAutoFix, bool FixEliminations, LPVOID UnknownPointerFixCallback) { wchar_t uniDumpedFile[MAX_PATH] = {}; @@ -20180,7 +20181,7 @@ __declspec(dllexport) long __stdcall ImporterAutoFixIATEx(HANDLE hProcess, char* return(NULL); // Critical error! *just to be safe, but it should never happen! } } -__declspec(dllexport) long __stdcall ImporterAutoFixIATExW(HANDLE hProcess, wchar_t* szDumpedFile, char* szSectionName, bool DumpRunningProcess, bool RealignFile, ULONG_PTR EntryPointAddress, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep, bool TryAutoFix, bool FixEliminations, LPVOID UnknownPointerFixCallback) +__declspec(dllexport) long ImporterAutoFixIATExW(HANDLE hProcess, wchar_t* szDumpedFile, char* szSectionName, bool DumpRunningProcess, bool RealignFile, ULONG_PTR EntryPointAddress, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep, bool TryAutoFix, bool FixEliminations, LPVOID UnknownPointerFixCallback) { int i; @@ -20192,7 +20193,7 @@ __declspec(dllexport) long __stdcall ImporterAutoFixIATExW(HANDLE hProcess, wcha #else PE64Struct PEStructure; #endif - typedef void*(__stdcall *fFixerCallback)(LPVOID fIATPointer); + typedef void*(*fFixerCallback)(LPVOID fIATPointer); fFixerCallback myFixerCallback = (fFixerCallback)UnknownPointerFixCallback; MEMORY_BASIC_INFORMATION MemInfo; DWORD SectionFlags; @@ -20862,11 +20863,11 @@ __declspec(dllexport) long __stdcall ImporterAutoFixIATExW(HANDLE hProcess, wcha VirtualFree(aEnumeratedModules, NULL, MEM_RELEASE); return(NULL); // Critical error! *just te bo safe, but it should never happen! } -__declspec(dllexport) long __stdcall ImporterAutoFixIAT(HANDLE hProcess, char* szDumpedFile, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep) +__declspec(dllexport) long ImporterAutoFixIAT(HANDLE hProcess, char* szDumpedFile, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep) { return(ImporterAutoFixIATEx(hProcess, szDumpedFile, ".RL!TEv2", false, false, NULL, ImageBase, SearchStart, SearchSize, SearchStep, false, false, NULL)); } -__declspec(dllexport) long __stdcall ImporterAutoFixIATW(HANDLE hProcess, wchar_t* szDumpedFile, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep) +__declspec(dllexport) long ImporterAutoFixIATW(HANDLE hProcess, wchar_t* szDumpedFile, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep) { return(ImporterAutoFixIATExW(hProcess, szDumpedFile, ".RL!TEv2", false, false, NULL, ImageBase, SearchStart, SearchSize, SearchStep, false, false, NULL)); } @@ -20881,7 +20882,7 @@ bool ProcessHookScanAddNewHook(PHOOK_ENTRY HookDetails, void* ptrOriginalInstruc return(true); } // Global.Engine.Hook.functions: -__declspec(dllexport) bool __stdcall HooksSafeTransitionEx(LPVOID HookAddressArray, int NumberOfHooks, bool TransitionStart) +__declspec(dllexport) bool HooksSafeTransitionEx(LPVOID HookAddressArray, int NumberOfHooks, bool TransitionStart) { int i; @@ -20951,7 +20952,7 @@ __declspec(dllexport) bool __stdcall HooksSafeTransitionEx(LPVOID HookAddressArr } return(false); } -__declspec(dllexport) bool __stdcall HooksSafeTransition(LPVOID HookAddress, bool TransitionStart) +__declspec(dllexport) bool HooksSafeTransition(LPVOID HookAddress, bool TransitionStart) { void* aHookAddress[1]; @@ -20959,7 +20960,7 @@ __declspec(dllexport) bool __stdcall HooksSafeTransition(LPVOID HookAddress, boo return(HooksSafeTransitionEx(&aHookAddress[0], sizeof aHookAddress, TransitionStart)); } -__declspec(dllexport) bool __stdcall HooksIsAddressRedirected(LPVOID HookAddress) +__declspec(dllexport) bool HooksIsAddressRedirected(LPVOID HookAddress) { for(unsigned int i = 0; i < hookEntry.size(); i++) @@ -20971,7 +20972,7 @@ __declspec(dllexport) bool __stdcall HooksIsAddressRedirected(LPVOID HookAddress } return(false); } -__declspec(dllexport) void* __stdcall HooksGetTrampolineAddress(LPVOID HookAddress) +__declspec(dllexport) void* HooksGetTrampolineAddress(LPVOID HookAddress) { for(unsigned int i = 0; i < hookEntry.size(); i++) @@ -20983,7 +20984,7 @@ __declspec(dllexport) void* __stdcall HooksGetTrampolineAddress(LPVOID HookAddre } return(NULL); } -__declspec(dllexport) void* __stdcall HooksGetHookEntryDetails(LPVOID HookAddress) +__declspec(dllexport) void* HooksGetHookEntryDetails(LPVOID HookAddress) { for(unsigned int i = 0; i < hookEntry.size(); i++) @@ -20995,7 +20996,7 @@ __declspec(dllexport) void* __stdcall HooksGetHookEntryDetails(LPVOID HookAddres } return(NULL); } -__declspec(dllexport) bool __stdcall HooksInsertNewRedirection(LPVOID HookAddress, LPVOID RedirectTo, int HookType) +__declspec(dllexport) bool HooksInsertNewRedirection(LPVOID HookAddress, LPVOID RedirectTo, int HookType) { #if !defined(_WIN64) @@ -21283,7 +21284,7 @@ __declspec(dllexport) bool __stdcall HooksInsertNewRedirection(LPVOID HookAddres } return(false); } -__declspec(dllexport) bool __stdcall HooksInsertNewIATRedirectionEx(ULONG_PTR FileMapVA, ULONG_PTR LoadedModuleBase, char* szHookFunction, LPVOID RedirectTo) +__declspec(dllexport) bool HooksInsertNewIATRedirectionEx(ULONG_PTR FileMapVA, ULONG_PTR LoadedModuleBase, char* szHookFunction, LPVOID RedirectTo) { PIMAGE_DOS_HEADER DOSHeader; @@ -21433,7 +21434,7 @@ __declspec(dllexport) bool __stdcall HooksInsertNewIATRedirectionEx(ULONG_PTR Fi } return(false); } -__declspec(dllexport) bool __stdcall HooksInsertNewIATRedirection(char* szModuleName, char* szHookFunction, LPVOID RedirectTo) +__declspec(dllexport) bool HooksInsertNewIATRedirection(char* szModuleName, char* szHookFunction, LPVOID RedirectTo) { HANDLE FileHandle; @@ -21462,7 +21463,7 @@ __declspec(dllexport) bool __stdcall HooksInsertNewIATRedirection(char* szModule } return(false); } -__declspec(dllexport) bool __stdcall HooksRemoveRedirection(LPVOID HookAddress, bool RemoveAll) +__declspec(dllexport) bool HooksRemoveRedirection(LPVOID HookAddress, bool RemoveAll) { DWORD OldProtect = PAGE_READONLY; @@ -21498,7 +21499,7 @@ __declspec(dllexport) bool __stdcall HooksRemoveRedirection(LPVOID HookAddress, return(true); } } -__declspec(dllexport) bool __stdcall HooksRemoveRedirectionsForModule(HMODULE ModuleBase) +__declspec(dllexport) bool HooksRemoveRedirectionsForModule(HMODULE ModuleBase) { int j = NULL; @@ -21533,7 +21534,7 @@ __declspec(dllexport) bool __stdcall HooksRemoveRedirectionsForModule(HMODULE Mo } return(true); } -__declspec(dllexport) bool __stdcall HooksRemoveIATRedirection(char* szModuleName, char* szHookFunction, bool RemoveAll) +__declspec(dllexport) bool HooksRemoveIATRedirection(char* szModuleName, char* szHookFunction, bool RemoveAll) { unsigned int i = (unsigned int)hookEntry.size() - 1; @@ -21559,7 +21560,7 @@ __declspec(dllexport) bool __stdcall HooksRemoveIATRedirection(char* szModuleNam } return(false); } -__declspec(dllexport) bool __stdcall HooksDisableRedirection(LPVOID HookAddress, bool DisableAll) +__declspec(dllexport) bool HooksDisableRedirection(LPVOID HookAddress, bool DisableAll) { DWORD OldProtect = PAGE_READONLY; @@ -21595,7 +21596,7 @@ __declspec(dllexport) bool __stdcall HooksDisableRedirection(LPVOID HookAddress, return(true); } } -__declspec(dllexport) bool __stdcall HooksDisableRedirectionsForModule(HMODULE ModuleBase) +__declspec(dllexport) bool HooksDisableRedirectionsForModule(HMODULE ModuleBase) { int j = NULL; @@ -21630,7 +21631,7 @@ __declspec(dllexport) bool __stdcall HooksDisableRedirectionsForModule(HMODULE M } return(true); } -__declspec(dllexport) bool __stdcall HooksDisableIATRedirection(char* szModuleName, char* szHookFunction, bool DisableAll) +__declspec(dllexport) bool HooksDisableIATRedirection(char* szModuleName, char* szHookFunction, bool DisableAll) { unsigned int i = (unsigned int)hookEntry.size() - 1; @@ -21659,7 +21660,7 @@ __declspec(dllexport) bool __stdcall HooksDisableIATRedirection(char* szModuleNa } return(false); } -__declspec(dllexport) bool __stdcall HooksEnableRedirection(LPVOID HookAddress, bool EnableAll) +__declspec(dllexport) bool HooksEnableRedirection(LPVOID HookAddress, bool EnableAll) { DWORD OldProtect = PAGE_READONLY; @@ -21695,7 +21696,7 @@ __declspec(dllexport) bool __stdcall HooksEnableRedirection(LPVOID HookAddress, return(true); } } -__declspec(dllexport) bool __stdcall HooksEnableRedirectionsForModule(HMODULE ModuleBase) +__declspec(dllexport) bool HooksEnableRedirectionsForModule(HMODULE ModuleBase) { int j = NULL; @@ -21730,7 +21731,7 @@ __declspec(dllexport) bool __stdcall HooksEnableRedirectionsForModule(HMODULE Mo } return(true); } -__declspec(dllexport) bool __stdcall HooksEnableIATRedirection(char* szModuleName, char* szHookFunction, bool EnableAll) +__declspec(dllexport) bool HooksEnableIATRedirection(char* szModuleName, char* szHookFunction, bool EnableAll) { unsigned int i = (unsigned int)hookEntry.size() - 1; @@ -21759,7 +21760,7 @@ __declspec(dllexport) bool __stdcall HooksEnableIATRedirection(char* szModuleNam } return(false); } -__declspec(dllexport) void __stdcall HooksScanModuleMemory(HMODULE ModuleBase, LPVOID CallBack) +__declspec(dllexport) void HooksScanModuleMemory(HMODULE ModuleBase, LPVOID CallBack) { unsigned int i; @@ -21774,7 +21775,7 @@ __declspec(dllexport) void __stdcall HooksScanModuleMemory(HMODULE ModuleBase, L HANDLE hProcess = GetCurrentProcess(); LIBRARY_ITEM_DATA RemoteLibInfo = {}; PLIBRARY_ITEM_DATA pRemoteLibInfo = (PLIBRARY_ITEM_DATA)LibrarianGetLibraryInfoEx((void*)ModuleBase); - typedef bool(__stdcall *fEnumCallBack)(PHOOK_ENTRY HookDetails, void* ptrOriginalInstructions, PLIBRARY_ITEM_DATA ModuleInformation, DWORD SizeOfImage); + typedef bool(*fEnumCallBack)(PHOOK_ENTRY HookDetails, void* ptrOriginalInstructions, PLIBRARY_ITEM_DATA ModuleInformation, DWORD SizeOfImage); fEnumCallBack myEnumCallBack = (fEnumCallBack)CallBack; BYTE CheckHookMemory[TEE_MAXIMUM_HOOK_SIZE]; PMEMORY_COMPARE_HANDLER ExportedFunctions; @@ -21978,7 +21979,7 @@ __declspec(dllexport) void __stdcall HooksScanModuleMemory(HMODULE ModuleBase, L } } } -__declspec(dllexport) void __stdcall HooksScanEntireProcessMemory(LPVOID CallBack) +__declspec(dllexport) void HooksScanEntireProcessMemory(LPVOID CallBack) { unsigned int i; @@ -21995,7 +21996,7 @@ __declspec(dllexport) void __stdcall HooksScanEntireProcessMemory(LPVOID CallBac } } } -__declspec(dllexport) void __stdcall HooksScanEntireProcessMemoryEx() +__declspec(dllexport) void HooksScanEntireProcessMemoryEx() { HooksScanEntireProcessMemory(&ProcessHookScanAddNewHook); } @@ -22529,15 +22530,15 @@ long long EngineGlobalTracerHandler1(HANDLE hProcess, ULONG_PTR AddressToTrace, return(NULL); } // TitanEngine.Tracer.functions: -__declspec(dllexport) void __stdcall TracerInit() +__declspec(dllexport) void TracerInit() { return; // UE 1.5 compatibility mode } -__declspec(dllexport) long long __stdcall TracerLevel1(HANDLE hProcess, ULONG_PTR AddressToTrace) +__declspec(dllexport) long long TracerLevel1(HANDLE hProcess, ULONG_PTR AddressToTrace) { return((ULONG_PTR)EngineGlobalTracerHandler1(hProcess, AddressToTrace, false, NULL)); } -__declspec(dllexport) long long __stdcall HashTracerLevel1(HANDLE hProcess, ULONG_PTR AddressToTrace, DWORD InputNumberOfInstructions) +__declspec(dllexport) long long HashTracerLevel1(HANDLE hProcess, ULONG_PTR AddressToTrace, DWORD InputNumberOfInstructions) { unsigned int i = 0; @@ -22707,7 +22708,7 @@ __declspec(dllexport) long long __stdcall HashTracerLevel1(HANDLE hProcess, ULON } return((ULONG_PTR)APIFoundAddress); } -__declspec(dllexport) long __stdcall TracerDetectRedirection(HANDLE hProcess, ULONG_PTR AddressToTrace) +__declspec(dllexport) long TracerDetectRedirection(HANDLE hProcess, ULONG_PTR AddressToTrace) { int i,j; @@ -23112,7 +23113,7 @@ __declspec(dllexport) long __stdcall TracerDetectRedirection(HANDLE hProcess, UL } return(NULL); } -__declspec(dllexport) long long __stdcall TracerFixKnownRedirection(HANDLE hProcess, ULONG_PTR AddressToTrace, DWORD RedirectionId) +__declspec(dllexport) long long TracerFixKnownRedirection(HANDLE hProcess, ULONG_PTR AddressToTrace, DWORD RedirectionId) { int i = NULL; @@ -23443,7 +23444,7 @@ __declspec(dllexport) long long __stdcall TracerFixKnownRedirection(HANDLE hProc return(NULL); } // TitanEngine.Exporter.functions: -__declspec(dllexport) void __stdcall ExporterCleanup() +__declspec(dllexport) void ExporterCleanup() { int i = NULL; @@ -23463,11 +23464,11 @@ __declspec(dllexport) void __stdcall ExporterCleanup() expTableData = NULL; expImageBase = NULL; } -__declspec(dllexport) void __stdcall ExporterSetImageBase(ULONG_PTR ImageBase) +__declspec(dllexport) void ExporterSetImageBase(ULONG_PTR ImageBase) { expImageBase = ImageBase; } -__declspec(dllexport) void __stdcall ExporterInit(DWORD MemorySize, ULONG_PTR ImageBase, DWORD ExportOrdinalBase, char* szExportModuleName) +__declspec(dllexport) void ExporterInit(DWORD MemorySize, ULONG_PTR ImageBase, DWORD ExportOrdinalBase, char* szExportModuleName) { if(expTableData != NULL) @@ -23489,7 +23490,7 @@ __declspec(dllexport) void __stdcall ExporterInit(DWORD MemorySize, ULONG_PTR Im } expImageBase = ImageBase; } -__declspec(dllexport) bool __stdcall ExporterAddNewExport(char* szExportName, DWORD ExportRelativeAddress) +__declspec(dllexport) bool ExporterAddNewExport(char* szExportName, DWORD ExportRelativeAddress) { unsigned int i; @@ -23516,7 +23517,7 @@ __declspec(dllexport) bool __stdcall ExporterAddNewExport(char* szExportName, DW } return(false); } -__declspec(dllexport) bool __stdcall ExporterAddNewOrdinalExport(DWORD OrdinalNumber, DWORD ExportRelativeAddress) +__declspec(dllexport) bool ExporterAddNewOrdinalExport(DWORD OrdinalNumber, DWORD ExportRelativeAddress) { unsigned int i = NULL; @@ -23556,11 +23557,11 @@ __declspec(dllexport) bool __stdcall ExporterAddNewOrdinalExport(DWORD OrdinalNu } return(false); } -__declspec(dllexport) long __stdcall ExporterGetAddedExportCount() +__declspec(dllexport) long ExporterGetAddedExportCount() { return(expExportNumber); } -__declspec(dllexport) long __stdcall ExporterEstimatedSize() +__declspec(dllexport) long ExporterEstimatedSize() { DWORD EstimatedSize = NULL; @@ -23569,7 +23570,7 @@ __declspec(dllexport) long __stdcall ExporterEstimatedSize() EstimatedSize = EstimatedSize + (expExportNumber * 12) + sizeof IMAGE_EXPORT_DIRECTORY; return(EstimatedSize); } -__declspec(dllexport) bool __stdcall ExporterBuildExportTable(ULONG_PTR StorePlace, ULONG_PTR FileMapVA) +__declspec(dllexport) bool ExporterBuildExportTable(ULONG_PTR StorePlace, ULONG_PTR FileMapVA) { unsigned int i = NULL; @@ -23675,7 +23676,7 @@ __declspec(dllexport) bool __stdcall ExporterBuildExportTable(ULONG_PTR StorePla } return(false); } -__declspec(dllexport) bool __stdcall ExporterBuildExportTableEx(char* szExportFileName, char* szSectionName) +__declspec(dllexport) bool ExporterBuildExportTableEx(char* szExportFileName, char* szSectionName) { wchar_t uniExportFileName[MAX_PATH] = {}; @@ -23690,7 +23691,7 @@ __declspec(dllexport) bool __stdcall ExporterBuildExportTableEx(char* szExportFi return(false); } } -__declspec(dllexport) bool __stdcall ExporterBuildExportTableExW(wchar_t* szExportFileName, char* szSectionName) +__declspec(dllexport) bool ExporterBuildExportTableExW(wchar_t* szExportFileName, char* szSectionName) { HANDLE FileHandle; @@ -23728,7 +23729,7 @@ __declspec(dllexport) bool __stdcall ExporterBuildExportTableExW(wchar_t* szExpo return(false); } } -__declspec(dllexport) bool __stdcall ExporterLoadExportTable(char* szFileName) +__declspec(dllexport) bool ExporterLoadExportTable(char* szFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -23743,7 +23744,7 @@ __declspec(dllexport) bool __stdcall ExporterLoadExportTable(char* szFileName) return(false); } } -__declspec(dllexport) bool __stdcall ExporterLoadExportTableW(wchar_t* szFileName) +__declspec(dllexport) bool ExporterLoadExportTableW(wchar_t* szFileName) { unsigned int i = 0; @@ -23871,7 +23872,7 @@ __declspec(dllexport) bool __stdcall ExporterLoadExportTableW(wchar_t* szFileNam return(false); } // TitanEngine.Librarian.functions: -__declspec(dllexport) bool __stdcall LibrarianSetBreakPoint(char* szLibraryName, DWORD bpxType, bool SingleShoot, LPVOID bpxCallBack) +__declspec(dllexport) bool LibrarianSetBreakPoint(char* szLibraryName, DWORD bpxType, bool SingleShoot, LPVOID bpxCallBack) { int i = MAX_LIBRARY_BPX; @@ -23892,7 +23893,7 @@ __declspec(dllexport) bool __stdcall LibrarianSetBreakPoint(char* szLibraryName, } return(false); } -__declspec(dllexport) bool __stdcall LibrarianRemoveBreakPoint(char* szLibraryName, DWORD bpxType) +__declspec(dllexport) bool LibrarianRemoveBreakPoint(char* szLibraryName, DWORD bpxType) { int i = MAX_LIBRARY_BPX; @@ -23916,7 +23917,7 @@ __declspec(dllexport) bool __stdcall LibrarianRemoveBreakPoint(char* szLibraryNa } return(false); } -__declspec(dllexport) void* __stdcall LibrarianGetLibraryInfo(char* szLibraryName) +__declspec(dllexport) void* LibrarianGetLibraryInfo(char* szLibraryName) { wchar_t uniLibraryName[MAX_PATH] = {}; @@ -23947,7 +23948,7 @@ __declspec(dllexport) void* __stdcall LibrarianGetLibraryInfo(char* szLibraryNam return(NULL); } } -__declspec(dllexport) void* __stdcall LibrarianGetLibraryInfoW(wchar_t* szLibraryName) +__declspec(dllexport) void* LibrarianGetLibraryInfoW(wchar_t* szLibraryName) { PLIBRARY_ITEM_DATAW hListLibraryPtr = NULL; @@ -23969,7 +23970,7 @@ __declspec(dllexport) void* __stdcall LibrarianGetLibraryInfoW(wchar_t* szLibrar } return(NULL); } -__declspec(dllexport) void* __stdcall LibrarianGetLibraryInfoEx(void* BaseOfDll) +__declspec(dllexport) void* LibrarianGetLibraryInfoEx(void* BaseOfDll) { PLIBRARY_ITEM_DATAW LibInfo; @@ -23991,7 +23992,7 @@ __declspec(dllexport) void* __stdcall LibrarianGetLibraryInfoEx(void* BaseOfDll) return(NULL); } } -__declspec(dllexport) void* __stdcall LibrarianGetLibraryInfoExW(void* BaseOfDll) +__declspec(dllexport) void* LibrarianGetLibraryInfoExW(void* BaseOfDll) { PLIBRARY_ITEM_DATAW hListLibraryPtr = NULL; @@ -24013,11 +24014,11 @@ __declspec(dllexport) void* __stdcall LibrarianGetLibraryInfoExW(void* BaseOfDll } return(NULL); } -__declspec(dllexport) void __stdcall LibrarianEnumLibraryInfo(void* EnumCallBack) +__declspec(dllexport) void LibrarianEnumLibraryInfo(void* EnumCallBack) { PLIBRARY_ITEM_DATAW hListLibraryPtr = NULL; - typedef void(__stdcall *fEnumCallBack)(LPVOID fLibraryDetail); + typedef void(*fEnumCallBack)(LPVOID fLibraryDetail); fEnumCallBack myEnumCallBack = (fEnumCallBack)EnumCallBack; if(hListLibrary != NULL) @@ -24040,12 +24041,12 @@ __declspec(dllexport) void __stdcall LibrarianEnumLibraryInfo(void* EnumCallBack } } } -__declspec(dllexport) void __stdcall LibrarianEnumLibraryInfoW(void* EnumCallBack) +__declspec(dllexport) void LibrarianEnumLibraryInfoW(void* EnumCallBack) { LIBRARY_ITEM_DATA myLibraryInfoData; PLIBRARY_ITEM_DATAW hListLibraryPtr = NULL; - typedef void(__stdcall *fEnumCallBack)(LPVOID fLibraryDetail); + typedef void(*fEnumCallBack)(LPVOID fLibraryDetail); fEnumCallBack myEnumCallBack = (fEnumCallBack)EnumCallBack; if(hListLibrary != NULL) @@ -24076,7 +24077,7 @@ __declspec(dllexport) void __stdcall LibrarianEnumLibraryInfoW(void* EnumCallBac } } // TitanEngine.Process.functions: -__declspec(dllexport) long __stdcall GetActiveProcessId(char* szImageName) +__declspec(dllexport) long GetActiveProcessId(char* szImageName) { wchar_t uniImageName[MAX_PATH] = {}; @@ -24091,7 +24092,7 @@ __declspec(dllexport) long __stdcall GetActiveProcessId(char* szImageName) return(NULL); } } -__declspec(dllexport) long __stdcall GetActiveProcessIdW(wchar_t* szImageName) +__declspec(dllexport) long GetActiveProcessIdW(wchar_t* szImageName) { int i; @@ -24135,12 +24136,12 @@ __declspec(dllexport) long __stdcall GetActiveProcessIdW(wchar_t* szImageName) } return(NULL); } -__declspec(dllexport) void __stdcall EnumProcessesWithLibrary(char* szLibraryName, void* EnumFunction) +__declspec(dllexport) void EnumProcessesWithLibrary(char* szLibraryName, void* EnumFunction) { int i; int j; - typedef void(__stdcall *fEnumFunction)(DWORD ProcessId, HMODULE ModuleBaseAddress); + typedef void(*fEnumFunction)(DWORD ProcessId, HMODULE ModuleBaseAddress); fEnumFunction myEnumFunction = (fEnumFunction)EnumFunction; HMODULE EnumeratedModules[1024] = {}; DWORD bProcessId[1024] = {}; @@ -24193,7 +24194,7 @@ __declspec(dllexport) void __stdcall EnumProcessesWithLibrary(char* szLibraryNam } } // TitanEngine.TLSFixer.functions: -__declspec(dllexport) bool __stdcall TLSBreakOnCallBack(LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks, LPVOID bpxCallBack) +__declspec(dllexport) bool TLSBreakOnCallBack(LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks, LPVOID bpxCallBack) { unsigned int i; @@ -24215,7 +24216,7 @@ __declspec(dllexport) bool __stdcall TLSBreakOnCallBack(LPVOID ArrayOfCallBacks, return(false); } } -__declspec(dllexport) bool __stdcall TLSGrabCallBackData(char* szFileName, LPVOID ArrayOfCallBacks, LPDWORD NumberOfCallBacks) +__declspec(dllexport) bool TLSGrabCallBackData(char* szFileName, LPVOID ArrayOfCallBacks, LPDWORD NumberOfCallBacks) { wchar_t uniFileName[MAX_PATH] = {}; @@ -24230,7 +24231,7 @@ __declspec(dllexport) bool __stdcall TLSGrabCallBackData(char* szFileName, LPVOI return(false); } } -__declspec(dllexport) bool __stdcall TLSGrabCallBackDataW(wchar_t* szFileName, LPVOID ArrayOfCallBacks, LPDWORD NumberOfCallBacks) +__declspec(dllexport) bool TLSGrabCallBackDataW(wchar_t* szFileName, LPVOID ArrayOfCallBacks, LPDWORD NumberOfCallBacks) { PIMAGE_DOS_HEADER DOSHeader; @@ -24346,7 +24347,7 @@ __declspec(dllexport) bool __stdcall TLSGrabCallBackDataW(wchar_t* szFileName, L } return(false); } -__declspec(dllexport) bool __stdcall TLSBreakOnCallBackEx(char* szFileName, LPVOID bpxCallBack) +__declspec(dllexport) bool TLSBreakOnCallBackEx(char* szFileName, LPVOID bpxCallBack) { wchar_t uniFileName[MAX_PATH] = {}; @@ -24361,7 +24362,7 @@ __declspec(dllexport) bool __stdcall TLSBreakOnCallBackEx(char* szFileName, LPVO return(false); } } -__declspec(dllexport) bool __stdcall TLSBreakOnCallBackExW(wchar_t* szFileName, LPVOID bpxCallBack) +__declspec(dllexport) bool TLSBreakOnCallBackExW(wchar_t* szFileName, LPVOID bpxCallBack) { ULONG_PTR TlsArrayOfCallBacks[100]; @@ -24385,7 +24386,7 @@ __declspec(dllexport) bool __stdcall TLSBreakOnCallBackExW(wchar_t* szFileName, return(false); } } -__declspec(dllexport) bool __stdcall TLSRemoveCallback(char* szFileName) +__declspec(dllexport) bool TLSRemoveCallback(char* szFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -24400,7 +24401,7 @@ __declspec(dllexport) bool __stdcall TLSRemoveCallback(char* szFileName) return(false); } } -__declspec(dllexport) bool __stdcall TLSRemoveCallbackW(wchar_t* szFileName) +__declspec(dllexport) bool TLSRemoveCallbackW(wchar_t* szFileName) { PIMAGE_DOS_HEADER DOSHeader; @@ -24508,7 +24509,7 @@ __declspec(dllexport) bool __stdcall TLSRemoveCallbackW(wchar_t* szFileName) } return(false); } -__declspec(dllexport) bool __stdcall TLSRemoveTable(char* szFileName) +__declspec(dllexport) bool TLSRemoveTable(char* szFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -24523,7 +24524,7 @@ __declspec(dllexport) bool __stdcall TLSRemoveTable(char* szFileName) return(false); } } -__declspec(dllexport) bool __stdcall TLSRemoveTableW(wchar_t* szFileName) +__declspec(dllexport) bool TLSRemoveTableW(wchar_t* szFileName) { PIMAGE_DOS_HEADER DOSHeader; @@ -24619,7 +24620,7 @@ __declspec(dllexport) bool __stdcall TLSRemoveTableW(wchar_t* szFileName) } return(false); } -__declspec(dllexport) bool __stdcall TLSBackupData(char* szFileName) +__declspec(dllexport) bool TLSBackupData(char* szFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -24634,7 +24635,7 @@ __declspec(dllexport) bool __stdcall TLSBackupData(char* szFileName) return(false); } } -__declspec(dllexport) bool __stdcall TLSBackupDataW(wchar_t* szFileName) +__declspec(dllexport) bool TLSBackupDataW(wchar_t* szFileName) { PIMAGE_DOS_HEADER DOSHeader; @@ -24780,7 +24781,7 @@ __declspec(dllexport) bool __stdcall TLSBackupDataW(wchar_t* szFileName) } return(false); } -__declspec(dllexport) bool __stdcall TLSRestoreData() +__declspec(dllexport) bool TLSRestoreData() { ULONG_PTR ueNumberOfBytesRead = NULL; @@ -24828,7 +24829,7 @@ __declspec(dllexport) bool __stdcall TLSRestoreData() } return(false); } -__declspec(dllexport) bool __stdcall TLSBuildNewTable(ULONG_PTR FileMapVA, ULONG_PTR StorePlace, ULONG_PTR StorePlaceRVA, LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks) +__declspec(dllexport) bool TLSBuildNewTable(ULONG_PTR FileMapVA, ULONG_PTR StorePlace, ULONG_PTR StorePlaceRVA, LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks) { BOOL FileIs64; @@ -24904,7 +24905,7 @@ __declspec(dllexport) bool __stdcall TLSBuildNewTable(ULONG_PTR FileMapVA, ULONG } return(false); } -__declspec(dllexport) bool __stdcall TLSBuildNewTableEx(char* szFileName, char* szSectionName, LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks) +__declspec(dllexport) bool TLSBuildNewTableEx(char* szFileName, char* szSectionName, LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks) { wchar_t uniFileName[MAX_PATH] = {}; @@ -24919,7 +24920,7 @@ __declspec(dllexport) bool __stdcall TLSBuildNewTableEx(char* szFileName, char* return(false); } } -__declspec(dllexport) bool __stdcall TLSBuildNewTableExW(wchar_t* szFileName, char* szSectionName, LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks) +__declspec(dllexport) bool TLSBuildNewTableExW(wchar_t* szFileName, char* szSectionName, LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks) { HANDLE FileHandle; @@ -24953,7 +24954,7 @@ __declspec(dllexport) bool __stdcall TLSBuildNewTableExW(wchar_t* szFileName, ch } } // TitanEngine.TranslateName.functions: -__declspec(dllexport) void* __stdcall TranslateNativeName(char* szNativeName) +__declspec(dllexport) void* TranslateNativeName(char* szNativeName) { LPVOID TranslatedName = VirtualAlloc(NULL, 0x1000, MEM_COMMIT, PAGE_READWRITE); @@ -24998,7 +24999,7 @@ __declspec(dllexport) void* __stdcall TranslateNativeName(char* szNativeName) VirtualFree(TranslatedName, NULL, MEM_RELEASE); return(NULL); } -__declspec(dllexport) void* __stdcall TranslateNativeNameW(wchar_t* szNativeName) +__declspec(dllexport) void* TranslateNativeNameW(wchar_t* szNativeName) { LPVOID TranslatedName = VirtualAlloc(NULL, 0x1000, MEM_COMMIT, PAGE_READWRITE); @@ -25044,7 +25045,7 @@ __declspec(dllexport) void* __stdcall TranslateNativeNameW(wchar_t* szNativeName return(NULL); } // TitanEngine.Handler.functions: -__declspec(dllexport) long __stdcall HandlerGetActiveHandleCount(DWORD ProcessId) +__declspec(dllexport) long HandlerGetActiveHandleCount(DWORD ProcessId) { int HandleCount = NULL; @@ -25053,8 +25054,8 @@ __declspec(dllexport) long __stdcall HandlerGetActiveHandleCount(DWORD ProcessId ULONG RequiredSize = NULL; ULONG TotalHandleCount = NULL; #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); - typedef NTSTATUS(__stdcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); #else typedef NTSTATUS(__fastcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); typedef NTSTATUS(__fastcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); @@ -25091,7 +25092,7 @@ __declspec(dllexport) long __stdcall HandlerGetActiveHandleCount(DWORD ProcessId } return(NULL); } -__declspec(dllexport) bool __stdcall HandlerIsHandleOpen(DWORD ProcessId, HANDLE hHandle) +__declspec(dllexport) bool HandlerIsHandleOpen(DWORD ProcessId, HANDLE hHandle) { bool HandleActive = false; @@ -25100,7 +25101,7 @@ __declspec(dllexport) bool __stdcall HandlerIsHandleOpen(DWORD ProcessId, HANDLE ULONG RequiredSize = NULL; ULONG TotalHandleCount = NULL; #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); #else typedef NTSTATUS(__fastcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); #endif @@ -25138,7 +25139,7 @@ __declspec(dllexport) bool __stdcall HandlerIsHandleOpen(DWORD ProcessId, HANDLE } return(false); } -__declspec(dllexport) void* __stdcall HandlerGetHandleName(HANDLE hProcess, DWORD ProcessId, HANDLE hHandle, bool TranslateName) +__declspec(dllexport) void* HandlerGetHandleName(HANDLE hProcess, DWORD ProcessId, HANDLE hHandle, bool TranslateName) { bool NameFound = false; @@ -25148,8 +25149,8 @@ __declspec(dllexport) void* __stdcall HandlerGetHandleName(HANDLE hProcess, DWOR ULONG RequiredSize = NULL; ULONG TotalHandleCount = NULL; #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); - typedef NTSTATUS(__stdcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); #else typedef NTSTATUS(__fastcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); typedef NTSTATUS(__fastcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); @@ -25229,7 +25230,7 @@ __declspec(dllexport) void* __stdcall HandlerGetHandleName(HANDLE hProcess, DWOR VirtualFree(ObjectNameInfo, NULL, MEM_RELEASE); return(NULL); } -__declspec(dllexport) void* __stdcall HandlerGetHandleNameW(HANDLE hProcess, DWORD ProcessId, HANDLE hHandle, bool TranslateName) +__declspec(dllexport) void* HandlerGetHandleNameW(HANDLE hProcess, DWORD ProcessId, HANDLE hHandle, bool TranslateName) { bool NameFound = false; @@ -25239,8 +25240,8 @@ __declspec(dllexport) void* __stdcall HandlerGetHandleNameW(HANDLE hProcess, DWO ULONG RequiredSize = NULL; ULONG TotalHandleCount = NULL; #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); - typedef NTSTATUS(__stdcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); #else typedef NTSTATUS(__fastcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); typedef NTSTATUS(__fastcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); @@ -25321,7 +25322,7 @@ __declspec(dllexport) void* __stdcall HandlerGetHandleNameW(HANDLE hProcess, DWO VirtualFree(ObjectNameInfo, NULL, MEM_RELEASE); return(NULL); } -__declspec(dllexport) long __stdcall HandlerEnumerateOpenHandles(DWORD ProcessId, LPVOID HandleBuffer, DWORD MaxHandleCount) +__declspec(dllexport) long HandlerEnumerateOpenHandles(DWORD ProcessId, LPVOID HandleBuffer, DWORD MaxHandleCount) { HANDLE myHandle = NULL; @@ -25331,7 +25332,7 @@ __declspec(dllexport) long __stdcall HandlerEnumerateOpenHandles(DWORD ProcessId unsigned int HandleCount = NULL; ULONG QuerySystemBufferSize = 0x2000; #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); #else typedef NTSTATUS(__fastcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); #endif @@ -25368,7 +25369,7 @@ __declspec(dllexport) long __stdcall HandlerEnumerateOpenHandles(DWORD ProcessId } return(NULL); } -__declspec(dllexport) long long __stdcall HandlerGetHandleDetails(HANDLE hProcess, DWORD ProcessId, HANDLE hHandle, DWORD InformationReturn) +__declspec(dllexport) long long HandlerGetHandleDetails(HANDLE hProcess, DWORD ProcessId, HANDLE hHandle, DWORD InformationReturn) { HANDLE myHandle = NULL; @@ -25377,8 +25378,8 @@ __declspec(dllexport) long long __stdcall HandlerGetHandleDetails(HANDLE hProces ULONG RequiredSize = NULL; ULONG TotalHandleCount = NULL; #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); - typedef NTSTATUS(__stdcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); #else typedef NTSTATUS(__fastcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); typedef NTSTATUS(__fastcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); @@ -25484,7 +25485,7 @@ __declspec(dllexport) long long __stdcall HandlerGetHandleDetails(HANDLE hProces VirtualFree(HandleFullData, NULL, MEM_RELEASE); return(NULL); } -__declspec(dllexport) bool __stdcall HandlerCloseRemoteHandle(HANDLE hProcess, HANDLE hHandle) +__declspec(dllexport) bool HandlerCloseRemoteHandle(HANDLE hProcess, HANDLE hHandle) { HANDLE myHandle; @@ -25496,7 +25497,7 @@ __declspec(dllexport) bool __stdcall HandlerCloseRemoteHandle(HANDLE hProcess, H } return(false); } -__declspec(dllexport) long __stdcall HandlerEnumerateLockHandles(char* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated, LPVOID HandleDataBuffer, DWORD MaxHandleCount) +__declspec(dllexport) long HandlerEnumerateLockHandles(char* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated, LPVOID HandleDataBuffer, DWORD MaxHandleCount) { wchar_t uniFileOrFolderName[MAX_PATH] = {}; @@ -25511,7 +25512,7 @@ __declspec(dllexport) long __stdcall HandlerEnumerateLockHandles(char* szFileOrF return(NULL); } } -__declspec(dllexport) long __stdcall HandlerEnumerateLockHandlesW(wchar_t* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated, LPVOID HandleDataBuffer, DWORD MaxHandleCount) +__declspec(dllexport) long HandlerEnumerateLockHandlesW(wchar_t* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated, LPVOID HandleDataBuffer, DWORD MaxHandleCount) { int FoundHandles = NULL; @@ -25524,8 +25525,8 @@ __declspec(dllexport) long __stdcall HandlerEnumerateLockHandlesW(wchar_t* szFil ULONG TotalHandleCount = NULL; DWORD LastProcessId = NULL; #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); - typedef NTSTATUS(__stdcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); #else typedef NTSTATUS(__fastcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); typedef NTSTATUS(__fastcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); @@ -25624,7 +25625,7 @@ __declspec(dllexport) long __stdcall HandlerEnumerateLockHandlesW(wchar_t* szFil VirtualFree(HandleFullName, NULL, MEM_RELEASE); return(NULL); } -__declspec(dllexport) bool __stdcall HandlerCloseAllLockHandles(char* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated) +__declspec(dllexport) bool HandlerCloseAllLockHandles(char* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated) { wchar_t uniFileOrFolderName[MAX_PATH] = {}; @@ -25639,7 +25640,7 @@ __declspec(dllexport) bool __stdcall HandlerCloseAllLockHandles(char* szFileOrFo return(false); } } -__declspec(dllexport) bool __stdcall HandlerCloseAllLockHandlesW(wchar_t* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated) +__declspec(dllexport) bool HandlerCloseAllLockHandlesW(wchar_t* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated) { bool AllHandled = true; @@ -25652,8 +25653,8 @@ __declspec(dllexport) bool __stdcall HandlerCloseAllLockHandlesW(wchar_t* szFile ULONG TotalHandleCount = NULL; DWORD LastProcessId = NULL; #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); - typedef NTSTATUS(__stdcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); #else typedef NTSTATUS(__fastcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); typedef NTSTATUS(__fastcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); @@ -25756,7 +25757,7 @@ __declspec(dllexport) bool __stdcall HandlerCloseAllLockHandlesW(wchar_t* szFile VirtualFree(HandleFullName, NULL, MEM_RELEASE); return(false); } -__declspec(dllexport) bool __stdcall HandlerIsFileLocked(char* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated) +__declspec(dllexport) bool HandlerIsFileLocked(char* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated) { wchar_t uniFileOrFolderName[MAX_PATH] = {}; @@ -25771,7 +25772,7 @@ __declspec(dllexport) bool __stdcall HandlerIsFileLocked(char* szFileOrFolderNam return(false); } } -__declspec(dllexport) bool __stdcall HandlerIsFileLockedW(wchar_t* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated) +__declspec(dllexport) bool HandlerIsFileLockedW(wchar_t* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated) { HANDLE hProcess = NULL; @@ -25783,8 +25784,8 @@ __declspec(dllexport) bool __stdcall HandlerIsFileLockedW(wchar_t* szFileOrFolde ULONG TotalHandleCount = NULL; DWORD LastProcessId = NULL; #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); - typedef NTSTATUS(__stdcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); #else typedef NTSTATUS(__fastcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); typedef NTSTATUS(__fastcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); @@ -25882,7 +25883,7 @@ __declspec(dllexport) bool __stdcall HandlerIsFileLockedW(wchar_t* szFileOrFolde return(false); } // TitanEngine.Handler[Mutex].functions: -__declspec(dllexport) long __stdcall HandlerEnumerateOpenMutexes(HANDLE hProcess, DWORD ProcessId, LPVOID HandleBuffer, DWORD MaxHandleCount) +__declspec(dllexport) long HandlerEnumerateOpenMutexes(HANDLE hProcess, DWORD ProcessId, LPVOID HandleBuffer, DWORD MaxHandleCount) { HANDLE myHandle = NULL; @@ -25893,8 +25894,8 @@ __declspec(dllexport) long __stdcall HandlerEnumerateOpenMutexes(HANDLE hProcess unsigned int HandleCount = NULL; ULONG QuerySystemBufferSize = 0x2000; #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); - typedef NTSTATUS(__stdcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); #else typedef NTSTATUS(__fastcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); typedef NTSTATUS(__fastcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); @@ -25960,7 +25961,7 @@ __declspec(dllexport) long __stdcall HandlerEnumerateOpenMutexes(HANDLE hProcess VirtualFree(HandleNameData, NULL, MEM_RELEASE); return(NULL); } -__declspec(dllexport) long long __stdcall HandlerGetOpenMutexHandle(HANDLE hProcess, DWORD ProcessId, char* szMutexString) +__declspec(dllexport) long long HandlerGetOpenMutexHandle(HANDLE hProcess, DWORD ProcessId, char* szMutexString) { wchar_t uniMutexString[MAX_PATH] = {}; @@ -25975,7 +25976,7 @@ __declspec(dllexport) long long __stdcall HandlerGetOpenMutexHandle(HANDLE hProc return(NULL); } } -__declspec(dllexport) long long __stdcall HandlerGetOpenMutexHandleW(HANDLE hProcess, DWORD ProcessId, wchar_t* szMutexString) +__declspec(dllexport) long long HandlerGetOpenMutexHandleW(HANDLE hProcess, DWORD ProcessId, wchar_t* szMutexString) { int i; @@ -26007,7 +26008,7 @@ __declspec(dllexport) long long __stdcall HandlerGetOpenMutexHandleW(HANDLE hPro VirtualFree(HandleBuffer, NULL, MEM_RELEASE); return(NULL); } -__declspec(dllexport) long __stdcall HandlerGetProcessIdWhichCreatedMutex(char* szMutexString) +__declspec(dllexport) long HandlerGetProcessIdWhichCreatedMutex(char* szMutexString) { wchar_t uniMutexString[MAX_PATH] = {}; @@ -26022,7 +26023,7 @@ __declspec(dllexport) long __stdcall HandlerGetProcessIdWhichCreatedMutex(char* return(NULL); } } -__declspec(dllexport) long __stdcall HandlerGetProcessIdWhichCreatedMutexW(wchar_t* szMutexString) +__declspec(dllexport) long HandlerGetProcessIdWhichCreatedMutexW(wchar_t* szMutexString) { HANDLE hProcess = NULL; @@ -26034,8 +26035,8 @@ __declspec(dllexport) long __stdcall HandlerGetProcessIdWhichCreatedMutexW(wchar ULONG TotalHandleCount = NULL; ULONG QuerySystemBufferSize = 0x2000; #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); - typedef NTSTATUS(__stdcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); + typedef NTSTATUS(*fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); #else typedef NTSTATUS(__fastcall *fZwQuerySystemInformation)(DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); typedef NTSTATUS(__fastcall *fZwQueryObject)(HANDLE hObject, DWORD fInfoType, LPVOID fBuffer, ULONG fBufferSize, PULONG fRequiredSize); @@ -26128,7 +26129,7 @@ __declspec(dllexport) long __stdcall HandlerGetProcessIdWhichCreatedMutexW(wchar return(NULL); } // Global.Injector.functions: {DO NOT REORDER! USE ONLY IN RELEASE MODE!} -long __stdcall injectedImpRec(LPVOID Parameter) +long injectedImpRec(LPVOID Parameter) { HANDLE hFile; @@ -26136,8 +26137,8 @@ long __stdcall injectedImpRec(LPVOID Parameter) PInjectImpRecCodeData APIData = (PInjectImpRecCodeData)Parameter; LPVOID szFileName = (LPVOID)((ULONG_PTR)Parameter + sizeof InjectImpRecCodeData); typedef ULONG_PTR(__cdecl *fTrace)(DWORD hFileMap, DWORD dwSizeMap, DWORD dwTimeOut, DWORD dwToTrace, DWORD dwExactCall); - typedef HANDLE(__stdcall *fCreateFileW)(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); - typedef HANDLE(__stdcall *fCreateFileMappingA)(HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName); + typedef HANDLE(*fCreateFileW)(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); + typedef HANDLE(*fCreateFileMappingA)(HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName); typedef BOOL(__cdecl *fCloseHandle)(HANDLE hHandle); fTrace cTrace = (fTrace)(APIData->fTrace); fCreateFileW cCreateFileW = (fCreateFileW)(APIData->fCreateFileA); @@ -26157,14 +26158,14 @@ long __stdcall injectedImpRec(LPVOID Parameter) return(0); } } -long __stdcall injectedRemoteLoadLibrary(LPVOID Parameter) +long injectedRemoteLoadLibrary(LPVOID Parameter) { PInjectCodeData APIData = (PInjectCodeData)Parameter; Parameter = (LPVOID)((ULONG_PTR)Parameter + sizeof InjectCodeData); #if !defined(_WIN64) - typedef ULONG_PTR(__stdcall *fLoadLibraryW)(LPCWSTR fLibraryName); - typedef ULONG_PTR(__stdcall *fVirtualFree)(LPVOID fMemBase, SIZE_T fMemSize, DWORD fFreeType); + typedef ULONG_PTR(*fLoadLibraryW)(LPCWSTR fLibraryName); + typedef ULONG_PTR(*fVirtualFree)(LPVOID fMemBase, SIZE_T fMemSize, DWORD fFreeType); #else typedef ULONG_PTR(__fastcall *fLoadLibraryW)(LPCWSTR fLibraryName); typedef ULONG_PTR(__fastcall *fVirtualFree)(LPVOID fMemBase, SIZE_T fMemSize, DWORD fFreeType); @@ -26180,13 +26181,13 @@ long __stdcall injectedRemoteLoadLibrary(LPVOID Parameter) cVirtualFree(Parameter, NULL, MEM_RELEASE); return(retValue); } -long __stdcall injectedRemoteFreeLibrary(LPVOID Parameter) +long injectedRemoteFreeLibrary(LPVOID Parameter) { PInjectCodeData APIData = (PInjectCodeData)Parameter; #if !defined(_WIN64) - typedef ULONG_PTR(__stdcall *fFreeLibrary)(HMODULE fLibBase); - typedef ULONG_PTR(__stdcall *fVirtualFree)(LPVOID fMemBase, SIZE_T fMemSize, DWORD fFreeType); + typedef ULONG_PTR(*fFreeLibrary)(HMODULE fLibBase); + typedef ULONG_PTR(*fVirtualFree)(LPVOID fMemBase, SIZE_T fMemSize, DWORD fFreeType); #else typedef ULONG_PTR(__fastcall *fFreeLibrary)(HMODULE fLibBase); typedef ULONG_PTR(__fastcall *fVirtualFree)(LPVOID fMemBase, SIZE_T fMemSize, DWORD fFreeType); @@ -26202,16 +26203,16 @@ long __stdcall injectedRemoteFreeLibrary(LPVOID Parameter) cVirtualFree(Parameter, NULL, MEM_RELEASE); return(retValue); } -long __stdcall injectedRemoteFreeLibrarySimple(LPVOID Parameter) +long injectedRemoteFreeLibrarySimple(LPVOID Parameter) { PInjectCodeData APIData = (PInjectCodeData)Parameter; LPVOID orgParameter = Parameter; Parameter = (LPVOID)((ULONG_PTR)Parameter + sizeof InjectCodeData); #if !defined(_WIN64) - typedef ULONG_PTR(__stdcall *fFreeLibrary)(HMODULE fLibBase); - typedef HMODULE(__stdcall *fGetModuleHandleW)(LPCWSTR fLibraryName); - typedef ULONG_PTR(__stdcall *fVirtualFree)(LPVOID fMemBase, SIZE_T fMemSize, DWORD fFreeType); + typedef ULONG_PTR(*fFreeLibrary)(HMODULE fLibBase); + typedef HMODULE(*fGetModuleHandleW)(LPCWSTR fLibraryName); + typedef ULONG_PTR(*fVirtualFree)(LPVOID fMemBase, SIZE_T fMemSize, DWORD fFreeType); #else typedef ULONG_PTR(__fastcall *fFreeLibrary)(HMODULE fLibBase); typedef HMODULE(__fastcall *fGetModuleHandleW)(LPCWSTR fLibraryName); @@ -26238,12 +26239,12 @@ long __stdcall injectedRemoteFreeLibrarySimple(LPVOID Parameter) cVirtualFree(orgParameter, NULL, MEM_RELEASE); return(retValue); } -long __stdcall injectedExitProcess(LPVOID Parameter) +long injectedExitProcess(LPVOID Parameter) { PInjectCodeData APIData = (PInjectCodeData)Parameter; #if !defined(_WIN64) - typedef ULONG_PTR(__stdcall *fExitProcess)(DWORD fExitCode); + typedef ULONG_PTR(*fExitProcess)(DWORD fExitCode); #else typedef ULONG_PTR(__fastcall *fExitProcess)(DWORD fExitCode); #endif @@ -26253,7 +26254,7 @@ long __stdcall injectedExitProcess(LPVOID Parameter) cExitProcess(APIData->fExitProcessCode); return(NULL); } -void __stdcall injectedTerminator() +void injectedTerminator() { int i; @@ -26268,7 +26269,7 @@ void __stdcall injectedTerminator() } } // TitanEngine.Injector.functions: -__declspec(dllexport) bool __stdcall RemoteLoadLibrary(HANDLE hProcess, char* szLibraryFile, bool WaitForThreadExit) +__declspec(dllexport) bool RemoteLoadLibrary(HANDLE hProcess, char* szLibraryFile, bool WaitForThreadExit) { wchar_t uniLibraryFile[MAX_PATH] = {}; @@ -26283,7 +26284,7 @@ __declspec(dllexport) bool __stdcall RemoteLoadLibrary(HANDLE hProcess, char* sz return(false); } } -__declspec(dllexport) bool __stdcall RemoteLoadLibraryW(HANDLE hProcess, wchar_t* szLibraryFile, bool WaitForThreadExit) +__declspec(dllexport) bool RemoteLoadLibraryW(HANDLE hProcess, wchar_t* szLibraryFile, bool WaitForThreadExit) { int i; @@ -26292,7 +26293,7 @@ __declspec(dllexport) bool __stdcall RemoteLoadLibraryW(HANDLE hProcess, wchar_t LPVOID remCodeData; ULONG_PTR remInjectSize = (ULONG_PTR)((ULONG_PTR)&injectedRemoteFreeLibrary - (ULONG_PTR)&injectedRemoteLoadLibrary); #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwSetInformationThread)(HANDLE fThreadHandle, DWORD fThreadInfoClass, LPVOID fBuffer, ULONG fBufferSize); + typedef NTSTATUS(*fZwSetInformationThread)(HANDLE fThreadHandle, DWORD fThreadInfoClass, LPVOID fBuffer, ULONG fBufferSize); #else typedef NTSTATUS(__fastcall *fZwSetInformationThread)(HANDLE fThreadHandle, DWORD fThreadInfoClass, LPVOID fBuffer, ULONG fBufferSize); #endif @@ -26361,7 +26362,7 @@ __declspec(dllexport) bool __stdcall RemoteLoadLibraryW(HANDLE hProcess, wchar_t } return(false); } -__declspec(dllexport) bool __stdcall RemoteFreeLibrary(HANDLE hProcess, HMODULE hModule, char* szLibraryFile, bool WaitForThreadExit) +__declspec(dllexport) bool RemoteFreeLibrary(HANDLE hProcess, HMODULE hModule, char* szLibraryFile, bool WaitForThreadExit) { wchar_t uniLibraryFile[MAX_PATH] = {}; @@ -26376,7 +26377,7 @@ __declspec(dllexport) bool __stdcall RemoteFreeLibrary(HANDLE hProcess, HMODULE return(false); } } -__declspec(dllexport) bool __stdcall RemoteFreeLibraryW(HANDLE hProcess, HMODULE hModule, wchar_t* szLibraryFile, bool WaitForThreadExit) +__declspec(dllexport) bool RemoteFreeLibraryW(HANDLE hProcess, HMODULE hModule, wchar_t* szLibraryFile, bool WaitForThreadExit) { int i; @@ -26386,7 +26387,7 @@ __declspec(dllexport) bool __stdcall RemoteFreeLibraryW(HANDLE hProcess, HMODULE ULONG_PTR remInjectSize1 = (ULONG_PTR)((ULONG_PTR)&injectedExitProcess - (ULONG_PTR)&injectedRemoteFreeLibrarySimple); ULONG_PTR remInjectSize2 = (ULONG_PTR)((ULONG_PTR)&injectedRemoteFreeLibrarySimple - (ULONG_PTR)&injectedRemoteFreeLibrary); #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwSetInformationThread)(HANDLE fThreadHandle, DWORD fThreadInfoClass, LPVOID fBuffer, ULONG fBufferSize); + typedef NTSTATUS(*fZwSetInformationThread)(HANDLE fThreadHandle, DWORD fThreadInfoClass, LPVOID fBuffer, ULONG fBufferSize); #else typedef NTSTATUS(__fastcall *fZwSetInformationThread)(HANDLE fThreadHandle, DWORD fThreadInfoClass, LPVOID fBuffer, ULONG fBufferSize); #endif @@ -26505,7 +26506,7 @@ __declspec(dllexport) bool __stdcall RemoteFreeLibraryW(HANDLE hProcess, HMODULE } return(false); } -__declspec(dllexport) bool __stdcall RemoteExitProcess(HANDLE hProcess, DWORD ExitCode) +__declspec(dllexport) bool RemoteExitProcess(HANDLE hProcess, DWORD ExitCode) { InjectCodeData APIData; @@ -26544,7 +26545,7 @@ __declspec(dllexport) bool __stdcall RemoteExitProcess(HANDLE hProcess, DWORD Ex return(false); } // TitanEngine.Tracer.functions: -__declspec(dllexport) long __stdcall TracerFixRedirectionViaImpRecPlugin(HANDLE hProcess, char* szPluginName, ULONG_PTR AddressToTrace) +__declspec(dllexport) long TracerFixRedirectionViaImpRecPlugin(HANDLE hProcess, char* szPluginName, ULONG_PTR AddressToTrace) { int szLenght = NULL; @@ -26553,7 +26554,7 @@ __declspec(dllexport) long __stdcall TracerFixRedirectionViaImpRecPlugin(HANDLE PMEMORY_CMP_HANDLER cmpModuleName; ULONG_PTR remInjectSize = (ULONG_PTR)((ULONG_PTR)&injectedRemoteLoadLibrary - (ULONG_PTR)&injectedImpRec); #if !defined(_WIN64) - typedef NTSTATUS(__stdcall *fZwSetInformationThread)(HANDLE fThreadHandle, DWORD fThreadInfoClass, LPVOID fBuffer, ULONG fBufferSize); + typedef NTSTATUS(*fZwSetInformationThread)(HANDLE fThreadHandle, DWORD fThreadInfoClass, LPVOID fBuffer, ULONG fBufferSize); #else typedef NTSTATUS(__fastcall *fZwSetInformationThread)(HANDLE fThreadHandle, DWORD fThreadInfoClass, LPVOID fBuffer, ULONG fBufferSize); #endif @@ -26655,7 +26656,7 @@ __declspec(dllexport) long __stdcall TracerFixRedirectionViaImpRecPlugin(HANDLE return(TracedAddress); } // TitanEngine.StaticUnpacker.functions: -__declspec(dllexport) bool __stdcall StaticFileLoad(char* szFileName, DWORD DesiredAccess, bool SimulateLoad, LPHANDLE FileHandle, LPDWORD LoadedSize, LPHANDLE FileMap, PULONG_PTR FileMapVA) +__declspec(dllexport) bool StaticFileLoad(char* szFileName, DWORD DesiredAccess, bool SimulateLoad, LPHANDLE FileHandle, LPDWORD LoadedSize, LPHANDLE FileMap, PULONG_PTR FileMapVA) { if(!SimulateLoad) @@ -26678,7 +26679,7 @@ __declspec(dllexport) bool __stdcall StaticFileLoad(char* szFileName, DWORD Desi } return(false); } -__declspec(dllexport) bool __stdcall StaticFileLoadW(wchar_t* szFileName, DWORD DesiredAccess, bool SimulateLoad, LPHANDLE FileHandle, LPDWORD LoadedSize, LPHANDLE FileMap, PULONG_PTR FileMapVA) +__declspec(dllexport) bool StaticFileLoadW(wchar_t* szFileName, DWORD DesiredAccess, bool SimulateLoad, LPHANDLE FileHandle, LPDWORD LoadedSize, LPHANDLE FileMap, PULONG_PTR FileMapVA) { if(!SimulateLoad) @@ -26701,7 +26702,7 @@ __declspec(dllexport) bool __stdcall StaticFileLoadW(wchar_t* szFileName, DWORD } return(false); } -__declspec(dllexport) bool __stdcall StaticFileUnload(char* szFileName, bool CommitChanges, HANDLE FileHandle, DWORD LoadedSize, HANDLE FileMap, ULONG_PTR FileMapVA) +__declspec(dllexport) bool StaticFileUnload(char* szFileName, bool CommitChanges, HANDLE FileHandle, DWORD LoadedSize, HANDLE FileMap, ULONG_PTR FileMapVA) { wchar_t uniFileName[MAX_PATH] = {}; @@ -26716,7 +26717,7 @@ __declspec(dllexport) bool __stdcall StaticFileUnload(char* szFileName, bool Com return(false); } } -__declspec(dllexport) bool __stdcall StaticFileUnloadW(wchar_t* szFileName, bool CommitChanges, HANDLE FileHandle, DWORD LoadedSize, HANDLE FileMap, ULONG_PTR FileMapVA) +__declspec(dllexport) bool StaticFileUnloadW(wchar_t* szFileName, bool CommitChanges, HANDLE FileHandle, DWORD LoadedSize, HANDLE FileMap, ULONG_PTR FileMapVA) { DWORD PeHeaderSize; @@ -26811,7 +26812,7 @@ __declspec(dllexport) bool __stdcall StaticFileUnloadW(wchar_t* szFileName, bool } return(false); } -__declspec(dllexport) bool __stdcall StaticFileOpen(char* szFileName, DWORD DesiredAccess, LPHANDLE FileHandle, LPDWORD FileSizeLow, LPDWORD FileSizeHigh) +__declspec(dllexport) bool StaticFileOpen(char* szFileName, DWORD DesiredAccess, LPHANDLE FileHandle, LPDWORD FileSizeLow, LPDWORD FileSizeHigh) { wchar_t uniFileName[MAX_PATH] = {}; @@ -26826,7 +26827,7 @@ __declspec(dllexport) bool __stdcall StaticFileOpen(char* szFileName, DWORD Desi return(false); } } -__declspec(dllexport) bool __stdcall StaticFileOpenW(wchar_t* szFileName, DWORD DesiredAccess, LPHANDLE FileHandle, LPDWORD FileSizeLow, LPDWORD FileSizeHigh) +__declspec(dllexport) bool StaticFileOpenW(wchar_t* szFileName, DWORD DesiredAccess, LPHANDLE FileHandle, LPDWORD FileSizeLow, LPDWORD FileSizeHigh) { __try @@ -26847,7 +26848,7 @@ __declspec(dllexport) bool __stdcall StaticFileOpenW(wchar_t* szFileName, DWORD return(false); } } -__declspec(dllexport) bool __stdcall StaticFileGetContent(HANDLE FileHandle, DWORD FilePositionLow, LPDWORD FilePositionHigh, void* Buffer, DWORD Size) +__declspec(dllexport) bool StaticFileGetContent(HANDLE FileHandle, DWORD FilePositionLow, LPDWORD FilePositionHigh, void* Buffer, DWORD Size) { DWORD rfNumberOfBytesRead; @@ -26868,11 +26869,11 @@ __declspec(dllexport) bool __stdcall StaticFileGetContent(HANDLE FileHandle, DWO } return(false); } -__declspec(dllexport) void __stdcall StaticFileClose(HANDLE FileHandle) +__declspec(dllexport) void StaticFileClose(HANDLE FileHandle) { EngineCloseHandle(FileHandle); } -__declspec(dllexport) void __stdcall StaticMemoryDecrypt(LPVOID MemoryStart, DWORD MemorySize, DWORD DecryptionType, DWORD DecryptionKeySize, ULONG_PTR DecryptionKey) +__declspec(dllexport) void StaticMemoryDecrypt(LPVOID MemoryStart, DWORD MemorySize, DWORD DecryptionType, DWORD DecryptionKeySize, ULONG_PTR DecryptionKey) { DWORD LoopCount = NULL; @@ -26972,11 +26973,11 @@ __declspec(dllexport) void __stdcall StaticMemoryDecrypt(LPVOID MemoryStart, DWO } } } -__declspec(dllexport) void __stdcall StaticMemoryDecryptEx(LPVOID MemoryStart, DWORD MemorySize, DWORD DecryptionKeySize, void* DecryptionCallBack) +__declspec(dllexport) void StaticMemoryDecryptEx(LPVOID MemoryStart, DWORD MemorySize, DWORD DecryptionKeySize, void* DecryptionCallBack) { DWORD LoopCount = NULL; - typedef bool(__stdcall *fStaticCallBack)(void* sMemoryStart, int sKeySize); + typedef bool(*fStaticCallBack)(void* sMemoryStart, int sKeySize); fStaticCallBack myStaticCallBack = (fStaticCallBack)DecryptionCallBack; if(MemoryStart != NULL && MemorySize > NULL) @@ -27000,11 +27001,11 @@ __declspec(dllexport) void __stdcall StaticMemoryDecryptEx(LPVOID MemoryStart, D } } } -__declspec(dllexport) void __stdcall StaticMemoryDecryptSpecial(LPVOID MemoryStart, DWORD MemorySize, DWORD DecryptionKeySize, DWORD SpecDecryptionType, void* DecryptionCallBack) +__declspec(dllexport) void StaticMemoryDecryptSpecial(LPVOID MemoryStart, DWORD MemorySize, DWORD DecryptionKeySize, DWORD SpecDecryptionType, void* DecryptionCallBack) { DWORD LoopCount = NULL; - typedef bool(__stdcall *fStaticCallBack)(void* sMemoryStart, int sKeySize); + typedef bool(*fStaticCallBack)(void* sMemoryStart, int sKeySize); fStaticCallBack myStaticCallBack = (fStaticCallBack)DecryptionCallBack; if(MemoryStart != NULL && MemorySize > NULL) @@ -27039,7 +27040,7 @@ __declspec(dllexport) void __stdcall StaticMemoryDecryptSpecial(LPVOID MemorySta } } } -__declspec(dllexport) void __stdcall StaticSectionDecrypt(ULONG_PTR FileMapVA, DWORD SectionNumber, bool SimulateLoad, DWORD DecryptionType, DWORD DecryptionKeySize, ULONG_PTR DecryptionKey) +__declspec(dllexport) void StaticSectionDecrypt(ULONG_PTR FileMapVA, DWORD SectionNumber, bool SimulateLoad, DWORD DecryptionType, DWORD DecryptionKeySize, ULONG_PTR DecryptionKey) { if(!SimulateLoad) @@ -27051,7 +27052,7 @@ __declspec(dllexport) void __stdcall StaticSectionDecrypt(ULONG_PTR FileMapVA, D StaticMemoryDecrypt((LPVOID)((ULONG_PTR)GetPE32DataFromMappedFile(FileMapVA, SectionNumber, UE_SECTIONVIRTUALOFFSET) + FileMapVA), (DWORD)GetPE32DataFromMappedFile(FileMapVA, SectionNumber, UE_SECTIONRAWSIZE), DecryptionType, DecryptionKeySize, DecryptionKey); } } -__declspec(dllexport) bool __stdcall StaticMemoryDecompress(void* Source, DWORD SourceSize, void* Destination, DWORD DestinationSize, int Algorithm) +__declspec(dllexport) bool StaticMemoryDecompress(void* Source, DWORD SourceSize, void* Destination, DWORD DestinationSize, int Algorithm) { ELzmaStatus lzStatus; @@ -27085,7 +27086,7 @@ __declspec(dllexport) bool __stdcall StaticMemoryDecompress(void* Source, DWORD } return(false); } -__declspec(dllexport) bool __stdcall StaticRawMemoryCopy(HANDLE hFile, ULONG_PTR FileMapVA, ULONG_PTR VitualAddressToCopy, DWORD Size, bool AddressIsRVA, char* szDumpFileName) +__declspec(dllexport) bool StaticRawMemoryCopy(HANDLE hFile, ULONG_PTR FileMapVA, ULONG_PTR VitualAddressToCopy, DWORD Size, bool AddressIsRVA, char* szDumpFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -27100,7 +27101,7 @@ __declspec(dllexport) bool __stdcall StaticRawMemoryCopy(HANDLE hFile, ULONG_PTR return(false); } } -__declspec(dllexport) bool __stdcall StaticRawMemoryCopyW(HANDLE hFile, ULONG_PTR FileMapVA, ULONG_PTR VitualAddressToCopy, DWORD Size, bool AddressIsRVA, wchar_t* szDumpFileName) +__declspec(dllexport) bool StaticRawMemoryCopyW(HANDLE hFile, ULONG_PTR FileMapVA, ULONG_PTR VitualAddressToCopy, DWORD Size, bool AddressIsRVA, wchar_t* szDumpFileName) { DWORD SizeToRead; @@ -27192,7 +27193,7 @@ __declspec(dllexport) bool __stdcall StaticRawMemoryCopyW(HANDLE hFile, ULONG_PT } return(false); } -__declspec(dllexport) bool __stdcall StaticRawMemoryCopyEx(HANDLE hFile, DWORD RawAddressToCopy, DWORD Size, char* szDumpFileName) +__declspec(dllexport) bool StaticRawMemoryCopyEx(HANDLE hFile, DWORD RawAddressToCopy, DWORD Size, char* szDumpFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -27207,7 +27208,7 @@ __declspec(dllexport) bool __stdcall StaticRawMemoryCopyEx(HANDLE hFile, DWORD R return(false); } } -__declspec(dllexport) bool __stdcall StaticRawMemoryCopyExW(HANDLE hFile, DWORD RawAddressToCopy, DWORD Size, wchar_t* szDumpFileName) +__declspec(dllexport) bool StaticRawMemoryCopyExW(HANDLE hFile, DWORD RawAddressToCopy, DWORD Size, wchar_t* szDumpFileName) { DWORD SizeToRead; @@ -27286,7 +27287,7 @@ __declspec(dllexport) bool __stdcall StaticRawMemoryCopyExW(HANDLE hFile, DWORD } return(false); } -__declspec(dllexport) bool __stdcall StaticRawMemoryCopyEx64(HANDLE hFile, DWORD64 RawAddressToCopy, DWORD64 Size, char* szDumpFileName) +__declspec(dllexport) bool StaticRawMemoryCopyEx64(HANDLE hFile, DWORD64 RawAddressToCopy, DWORD64 Size, char* szDumpFileName) { wchar_t uniFileName[MAX_PATH] = {}; @@ -27301,7 +27302,7 @@ __declspec(dllexport) bool __stdcall StaticRawMemoryCopyEx64(HANDLE hFile, DWORD return(false); } } -__declspec(dllexport) bool __stdcall StaticRawMemoryCopyEx64W(HANDLE hFile, DWORD64 RawAddressToCopy, DWORD64 Size, wchar_t* szDumpFileName) +__declspec(dllexport) bool StaticRawMemoryCopyEx64W(HANDLE hFile, DWORD64 RawAddressToCopy, DWORD64 Size, wchar_t* szDumpFileName) { DWORD SizeToRead; @@ -27384,7 +27385,7 @@ __declspec(dllexport) bool __stdcall StaticRawMemoryCopyEx64W(HANDLE hFile, DWOR } return(false); } -__declspec(dllexport) bool __stdcall StaticHashMemory(void* MemoryToHash, DWORD SizeOfMemory, void* HashDigest, bool OutputString, int Algorithm) +__declspec(dllexport) bool StaticHashMemory(void* MemoryToHash, DWORD SizeOfMemory, void* HashDigest, bool OutputString, int Algorithm) { #define MD5LEN 16 @@ -27522,7 +27523,7 @@ __declspec(dllexport) bool __stdcall StaticHashMemory(void* MemoryToHash, DWORD } return(false); } -__declspec(dllexport) bool __stdcall StaticHashFile(char* szFileName, char* HashDigest, bool OutputString, int Algorithm) +__declspec(dllexport) bool StaticHashFile(char* szFileName, char* HashDigest, bool OutputString, int Algorithm) { wchar_t uniFileName[MAX_PATH] = {}; @@ -27537,7 +27538,7 @@ __declspec(dllexport) bool __stdcall StaticHashFile(char* szFileName, char* Hash return(false); } } -__declspec(dllexport) bool __stdcall StaticHashFileW(wchar_t* szFileName, char* HashDigest, bool OutputString, int Algorithm) +__declspec(dllexport) bool StaticHashFileW(wchar_t* szFileName, char* HashDigest, bool OutputString, int Algorithm) { #define MD5LEN 16 @@ -27721,7 +27722,7 @@ __declspec(dllexport) bool __stdcall StaticHashFileW(wchar_t* szFileName, char* return(false); } // TitanEngine.Engine.functions: -__declspec(dllexport) void __stdcall SetEngineVariable(DWORD VariableId, bool VariableSet) +__declspec(dllexport) void SetEngineVariable(DWORD VariableId, bool VariableSet) { if(VariableId == UE_ENGINE_ALOW_MODULE_LOADING) @@ -27821,7 +27822,7 @@ void EngineFakeGetProcAddressReturn() } } // Global.TitanEngine.Engine.functions: -bool __stdcall EngineGetFileDialog(char* GlobalBuffer) +bool EngineGetFileDialog(char* GlobalBuffer) { OPENFILENAMEA sOpenFileName; @@ -27845,12 +27846,12 @@ bool __stdcall EngineGetFileDialog(char* GlobalBuffer) return(true); } } -long __stdcall EngineWndProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) +long EngineWndProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { char szAboutTitle[] = "[ About ]"; char szAboutText[] = "%s \r\n\r\n ReversingLabs - http://www.reversinglabs.com \r\n\r\n Minimum engine version needed:\r\n- TitanEngine %i.%i.%i by RevLabs\r\n\r\nUnpacker coded by %s"; - typedef void(__stdcall *fStartUnpacking)(char* szInputFile, bool RealignFile, bool CopyOverlay); + typedef void(*fStartUnpacking)(char* szInputFile, bool RealignFile, bool CopyOverlay); fStartUnpacking myStartUnpacking = (fStartUnpacking)EngineStartUnpackingCallBack; char GlobalBuffer[1024] = {}; char AboutBuffer[1024] = {}; @@ -28225,7 +28226,7 @@ void EngineSimplifyEntryPointCallBack() } } // TitanEngine.Engine.Simplification.functions: -__declspec(dllexport) void __stdcall EngineUnpackerInitialize(char* szFileName, char* szUnpackedFileName, bool DoLogData, bool DoRealignFile, bool DoMoveOverlay, void* EntryCallBack) +__declspec(dllexport) void EngineUnpackerInitialize(char* szFileName, char* szUnpackedFileName, bool DoLogData, bool DoRealignFile, bool DoMoveOverlay, void* EntryCallBack) { wchar_t uniFileName[MAX_PATH] = {}; @@ -28245,7 +28246,7 @@ __declspec(dllexport) void __stdcall EngineUnpackerInitialize(char* szFileName, } } } -__declspec(dllexport) void __stdcall EngineUnpackerInitializeW(wchar_t* szFileName, wchar_t* szUnpackedFileName, bool DoLogData, bool DoRealignFile, bool DoMoveOverlay, void* EntryCallBack) +__declspec(dllexport) void EngineUnpackerInitializeW(wchar_t* szFileName, wchar_t* szUnpackedFileName, bool DoLogData, bool DoRealignFile, bool DoMoveOverlay, void* EntryCallBack) { int i,j; @@ -28301,7 +28302,7 @@ __declspec(dllexport) void __stdcall EngineUnpackerInitializeW(wchar_t* szFileNa } } } -__declspec(dllexport) bool __stdcall EngineUnpackerSetBreakCondition(void* SearchStart, DWORD SearchSize, void* SearchPattern, DWORD PatternSize, DWORD PatternDelta, ULONG_PTR BreakType, bool SingleBreak, DWORD Parameter1, DWORD Parameter2) +__declspec(dllexport) bool EngineUnpackerSetBreakCondition(void* SearchStart, DWORD SearchSize, void* SearchPattern, DWORD PatternSize, DWORD PatternDelta, ULONG_PTR BreakType, bool SingleBreak, DWORD Parameter1, DWORD Parameter2) { ULONG_PTR fPatternLocation; @@ -28388,18 +28389,18 @@ __declspec(dllexport) bool __stdcall EngineUnpackerSetBreakCondition(void* Searc } return(false); } -__declspec(dllexport) void __stdcall EngineUnpackerSetEntryPointAddress(ULONG_PTR UnpackedEntryPointAddress) +__declspec(dllexport) void EngineUnpackerSetEntryPointAddress(ULONG_PTR UnpackedEntryPointAddress) { EngineUnpackerOptionUnpackedOEP = UnpackedEntryPointAddress; } -__declspec(dllexport) void __stdcall EngineUnpackerFinalizeUnpacking() +__declspec(dllexport) void EngineUnpackerFinalizeUnpacking() { EngineSimplifyEntryPointCallBack(); EmptyGarbage(); } // TitanEngine.Engine.functions: -__declspec(dllexport) bool __stdcall EngineCreateMissingDependencies(char* szFileName, char* szOutputFolder, bool LogCreatedFiles) +__declspec(dllexport) bool EngineCreateMissingDependencies(char* szFileName, char* szOutputFolder, bool LogCreatedFiles) { wchar_t uniFileName[MAX_PATH] = {}; @@ -28416,7 +28417,7 @@ __declspec(dllexport) bool __stdcall EngineCreateMissingDependencies(char* szFil return(NULL); } } -__declspec(dllexport) bool __stdcall EngineCreateMissingDependenciesW(wchar_t* szFileName, wchar_t* szOutputFolder, bool LogCreatedFiles) +__declspec(dllexport) bool EngineCreateMissingDependenciesW(wchar_t* szFileName, wchar_t* szOutputFolder, bool LogCreatedFiles) { char* ImportDllName; @@ -28586,7 +28587,7 @@ __declspec(dllexport) bool __stdcall EngineCreateMissingDependenciesW(wchar_t* s } return(false); } -__declspec(dllexport) bool __stdcall EngineFakeMissingDependencies(HANDLE hProcess) +__declspec(dllexport) bool EngineFakeMissingDependencies(HANDLE hProcess) { if(hProcess != NULL) @@ -28596,7 +28597,7 @@ __declspec(dllexport) bool __stdcall EngineFakeMissingDependencies(HANDLE hProce } return(false); } -__declspec(dllexport) bool __stdcall EngineDeleteCreatedDependencies() +__declspec(dllexport) bool EngineDeleteCreatedDependencies() { DWORD DummyCmp = NULL; @@ -28635,7 +28636,7 @@ __declspec(dllexport) bool __stdcall EngineDeleteCreatedDependencies() return(false); } -__declspec(dllexport) bool __stdcall EngineCreateUnpackerWindow(char* WindowUnpackerTitle, char* WindowUnpackerLongTitle, char* WindowUnpackerName, char* WindowUnpackerAuthor, void* StartUnpackingCallBack) +__declspec(dllexport) bool EngineCreateUnpackerWindow(char* WindowUnpackerTitle, char* WindowUnpackerLongTitle, char* WindowUnpackerName, char* WindowUnpackerAuthor, void* StartUnpackingCallBack) { EngineStartUnpackingCallBack = StartUnpackingCallBack; @@ -28652,7 +28653,7 @@ __declspec(dllexport) bool __stdcall EngineCreateUnpackerWindow(char* WindowUnpa return(false); } } -__declspec(dllexport) void __stdcall EngineAddUnpackerWindowLogMessage(char* szLogMessage) +__declspec(dllexport) void EngineAddUnpackerWindowLogMessage(char* szLogMessage) { int cSelect; @@ -28663,7 +28664,7 @@ __declspec(dllexport) void __stdcall EngineAddUnpackerWindowLogMessage(char* szL SendMessageA(EngineBoxHandle, LB_SETCURSEL, (WPARAM)cSelect, NULL); } // Global.Engine.Extension.Functions: -__declspec(dllexport) bool __stdcall ExtensionManagerIsPluginLoaded(char* szPluginName) +__declspec(dllexport) bool ExtensionManagerIsPluginLoaded(char* szPluginName) { for(unsigned int i = 0; i < Plugin.size(); i++) @@ -28675,7 +28676,7 @@ __declspec(dllexport) bool __stdcall ExtensionManagerIsPluginLoaded(char* szPlug } return(false); } -__declspec(dllexport) bool __stdcall ExtensionManagerIsPluginEnabled(char* szPluginName) +__declspec(dllexport) bool ExtensionManagerIsPluginEnabled(char* szPluginName) { for(unsigned int i = 0; i < Plugin.size(); i++) @@ -28694,7 +28695,7 @@ __declspec(dllexport) bool __stdcall ExtensionManagerIsPluginEnabled(char* szPlu } return(false); } -__declspec(dllexport) bool __stdcall ExtensionManagerDisableAllPlugins() +__declspec(dllexport) bool ExtensionManagerDisableAllPlugins() { for(unsigned int i = 0; i < Plugin.size(); i++) @@ -28703,7 +28704,7 @@ __declspec(dllexport) bool __stdcall ExtensionManagerDisableAllPlugins() } return(true); } -__declspec(dllexport) bool __stdcall ExtensionManagerDisablePlugin(char* szPluginName) +__declspec(dllexport) bool ExtensionManagerDisablePlugin(char* szPluginName) { for(unsigned int i = 0; i < Plugin.size(); i++) @@ -28716,7 +28717,7 @@ __declspec(dllexport) bool __stdcall ExtensionManagerDisablePlugin(char* szPlugi } return(false); } -__declspec(dllexport) bool __stdcall ExtensionManagerEnableAllPlugins() +__declspec(dllexport) bool ExtensionManagerEnableAllPlugins() { for(unsigned int i = 0; i < Plugin.size(); i++) @@ -28725,7 +28726,7 @@ __declspec(dllexport) bool __stdcall ExtensionManagerEnableAllPlugins() } return(true); } -__declspec(dllexport) bool __stdcall ExtensionManagerEnablePlugin(char* szPluginName) +__declspec(dllexport) bool ExtensionManagerEnablePlugin(char* szPluginName) { for(unsigned int i = 0; i < Plugin.size(); i++) @@ -28738,7 +28739,7 @@ __declspec(dllexport) bool __stdcall ExtensionManagerEnablePlugin(char* szPlugin } return(false); } -__declspec(dllexport) bool __stdcall ExtensionManagerUnloadAllPlugins() +__declspec(dllexport) bool ExtensionManagerUnloadAllPlugins() { for(unsigned int i = 0; i < Plugin.size(); i++) @@ -28750,10 +28751,10 @@ __declspec(dllexport) bool __stdcall ExtensionManagerUnloadAllPlugins() } return(true); } -__declspec(dllexport) bool __stdcall ExtensionManagerUnloadPlugin(char* szPluginName) +__declspec(dllexport) bool ExtensionManagerUnloadPlugin(char* szPluginName) { - typedef void(__stdcall *fPluginReleaseExec)(); + typedef void(*fPluginReleaseExec)(); fPluginReleaseExec myPluginReleaseExec; for(unsigned int i = 0; i < Plugin.size(); i++) @@ -28785,7 +28786,7 @@ __declspec(dllexport) bool __stdcall ExtensionManagerUnloadPlugin(char* szPlugin } return(false); } -__declspec(dllexport) void* __stdcall ExtensionManagerGetPluginInfo(char* szPluginName) +__declspec(dllexport) void* ExtensionManagerGetPluginInfo(char* szPluginName) { for(unsigned int i = 0; i < Plugin.size(); i++) @@ -28950,7 +28951,7 @@ void EngineInitPlugins(wchar_t* szEngineFolder) #else wchar_t* szPluginFolder = L"plugins\\x86\\"; #endif - typedef bool(__stdcall *fPluginRegister)(char* szPluginName, LPDWORD titanPluginMajorVersion, LPDWORD titanPluginMinorVersion); + typedef bool(*fPluginRegister)(char* szPluginName, LPDWORD titanPluginMajorVersion, LPDWORD titanPluginMinorVersion); wchar_t szPluginSearchString[MAX_PATH] = {}; wchar_t szPluginFullPath[MAX_PATH] = {}; fPluginRegister myPluginRegister; diff --git a/TitanEngine/TitanEngine.vcxproj b/TitanEngine/TitanEngine.vcxproj index 9f9f379..532165c 100644 --- a/TitanEngine/TitanEngine.vcxproj +++ b/TitanEngine/TitanEngine.vcxproj @@ -188,6 +188,7 @@ Use Level3 ProgramDatabase + true $(ProjectDir)distorm_x64.lib;Imagehlp.lib;psapi.lib;%(AdditionalDependencies) @@ -201,6 +202,8 @@ true false MachineX64 + + @@ -228,6 +231,7 @@ + diff --git a/TitanEngine/TitanEngine.vcxproj.filters b/TitanEngine/TitanEngine.vcxproj.filters index 52e46c9..860e405 100644 --- a/TitanEngine/TitanEngine.vcxproj.filters +++ b/TitanEngine/TitanEngine.vcxproj.filters @@ -47,6 +47,9 @@ Header Files + + Header Files + diff --git a/TitanEngine/definitions.h b/TitanEngine/definitions.h index ecce274..efd3078 100644 --- a/TitanEngine/definitions.h +++ b/TitanEngine/definitions.h @@ -1,6 +1,6 @@ // Global.Function.Declaration: void BreakPointManager(); -void __stdcall GenericOEPTraceHited(); +void GenericOEPTraceHited(); // Global.Garbage.functions: bool CreateGarbageItem(void* outGargabeItem, int MaxGargabeStringSize); @@ -9,440 +9,440 @@ bool FillGarbageItem(wchar_t* szGarbageItem, wchar_t* szFileName, void* outGarga void EmptyGarbage(); #if !defined (_WIN64) - #ifdef __cplusplus +#ifdef __cplusplus extern "C" { - #endif /*__cplusplus*/ +#endif /*__cplusplus*/ #endif // TitanEngine.Dumper.functions: -__declspec(dllexport) bool __stdcall DumpProcess(HANDLE hProcess, LPVOID ImageBase, char* szDumpFileName, ULONG_PTR EntryPoint); -__declspec(dllexport) bool __stdcall DumpProcessW(HANDLE hProcess, LPVOID ImageBase, wchar_t* szDumpFileName, ULONG_PTR EntryPoint); -__declspec(dllexport) bool __stdcall DumpProcessEx(DWORD ProcessId, LPVOID ImageBase, char* szDumpFileName, ULONG_PTR EntryPoint); -__declspec(dllexport) bool __stdcall DumpProcessExW(DWORD ProcessId, LPVOID ImageBase, wchar_t* szDumpFileName, ULONG_PTR EntryPoint); -__declspec(dllexport) bool __stdcall DumpMemory(HANDLE hProcess, LPVOID MemoryStart, ULONG_PTR MemorySize, char* szDumpFileName); -__declspec(dllexport) bool __stdcall DumpMemoryW(HANDLE hProcess, LPVOID MemoryStart, ULONG_PTR MemorySize, wchar_t* szDumpFileName); -__declspec(dllexport) bool __stdcall DumpMemoryEx(DWORD ProcessId, LPVOID MemoryStart, ULONG_PTR MemorySize, char* szDumpFileName); -__declspec(dllexport) bool __stdcall DumpMemoryExW(DWORD ProcessId, LPVOID MemoryStart, ULONG_PTR MemorySize, wchar_t* szDumpFileName); -__declspec(dllexport) bool __stdcall DumpRegions(HANDLE hProcess, char* szDumpFolder, bool DumpAboveImageBaseOnly); -__declspec(dllexport) bool __stdcall DumpRegionsW(HANDLE hProcess, wchar_t* szDumpFolder, bool DumpAboveImageBaseOnly); -__declspec(dllexport) bool __stdcall DumpRegionsEx(DWORD ProcessId, char* szDumpFolder, bool DumpAboveImageBaseOnly); -__declspec(dllexport) bool __stdcall DumpRegionsExW(DWORD ProcessId, wchar_t* szDumpFolder, bool DumpAboveImageBaseOnly); -__declspec(dllexport) bool __stdcall DumpModule(HANDLE hProcess, LPVOID ModuleBase, char* szDumpFileName); -__declspec(dllexport) bool __stdcall DumpModuleW(HANDLE hProcess, LPVOID ModuleBase, wchar_t* szDumpFileName); -__declspec(dllexport) bool __stdcall DumpModuleEx(DWORD ProcessId, LPVOID ModuleBase, char* szDumpFileName); -__declspec(dllexport) bool __stdcall DumpModuleExW(DWORD ProcessId, LPVOID ModuleBase, wchar_t* szDumpFileName); -__declspec(dllexport) bool __stdcall PastePEHeader(HANDLE hProcess, LPVOID ImageBase, char* szDebuggedFileName); -__declspec(dllexport) bool __stdcall PastePEHeaderW(HANDLE hProcess, LPVOID ImageBase, wchar_t* szDebuggedFileName); -__declspec(dllexport) bool __stdcall ExtractSection(char* szFileName, char* szDumpFileName, DWORD SectionNumber); -__declspec(dllexport) bool __stdcall ExtractSectionW(wchar_t* szFileName, wchar_t* szDumpFileName, DWORD SectionNumber); -__declspec(dllexport) bool __stdcall ResortFileSections(char* szFileName); -__declspec(dllexport) bool __stdcall ResortFileSectionsW(wchar_t* szFileName); -__declspec(dllexport) bool __stdcall FindOverlay(char* szFileName, LPDWORD OverlayStart, LPDWORD OverlaySize); -__declspec(dllexport) bool __stdcall FindOverlayW(wchar_t* szFileName, LPDWORD OverlayStart, LPDWORD OverlaySize); -__declspec(dllexport) bool __stdcall ExtractOverlay(char* szFileName, char* szExtactedFileName); -__declspec(dllexport) bool __stdcall ExtractOverlayW(wchar_t* szFileName, wchar_t* szExtactedFileName); -__declspec(dllexport) bool __stdcall AddOverlay(char* szFileName, char* szOverlayFileName); -__declspec(dllexport) bool __stdcall AddOverlayW(wchar_t* szFileName, wchar_t* szOverlayFileName); -__declspec(dllexport) bool __stdcall CopyOverlay(char* szInFileName, char* szOutFileName); -__declspec(dllexport) bool __stdcall CopyOverlayW(wchar_t* szInFileName, wchar_t* szOutFileName); -__declspec(dllexport) bool __stdcall RemoveOverlay(char* szFileName); -__declspec(dllexport) bool __stdcall RemoveOverlayW(wchar_t* szFileName); -__declspec(dllexport) bool __stdcall MakeAllSectionsRWE(char* szFileName); -__declspec(dllexport) bool __stdcall MakeAllSectionsRWEW(wchar_t* szFileName); -__declspec(dllexport) long __stdcall AddNewSectionEx(char* szFileName, char* szSectionName, DWORD SectionSize, DWORD SectionAttributes, LPVOID SectionContent, DWORD ContentSize); -__declspec(dllexport) long __stdcall AddNewSectionExW(wchar_t* szFileName, char* szSectionName, DWORD SectionSize, DWORD SectionAttributes, LPVOID SectionContent, DWORD ContentSize); -__declspec(dllexport) long __stdcall AddNewSection(char* szFileName, char* szSectionName, DWORD SectionSize); -__declspec(dllexport) long __stdcall AddNewSectionW(wchar_t* szFileName, char* szSectionName, DWORD SectionSize); -__declspec(dllexport) bool __stdcall ResizeLastSection(char* szFileName, DWORD NumberOfExpandBytes, bool AlignResizeData); -__declspec(dllexport) bool __stdcall ResizeLastSectionW(wchar_t* szFileName, DWORD NumberOfExpandBytes, bool AlignResizeData); -__declspec(dllexport) void __stdcall SetSharedOverlay(char* szFileName); -__declspec(dllexport) void __stdcall SetSharedOverlayW(wchar_t* szFileName); -__declspec(dllexport) char* __stdcall GetSharedOverlay(); -__declspec(dllexport) wchar_t* __stdcall GetSharedOverlayW(); -__declspec(dllexport) bool __stdcall DeleteLastSection(char* szFileName); -__declspec(dllexport) bool __stdcall DeleteLastSectionW(wchar_t* szFileName); -__declspec(dllexport) bool __stdcall DeleteLastSectionEx(char* szFileName, DWORD NumberOfSections); -__declspec(dllexport) bool __stdcall DeleteLastSectionExW(wchar_t* szFileName, DWORD NumberOfSections); -__declspec(dllexport) long long __stdcall GetPE32DataFromMappedFile(ULONG_PTR FileMapVA, DWORD WhichSection, DWORD WhichData); -__declspec(dllexport) long long __stdcall GetPE32Data(char* szFileName, DWORD WhichSection, DWORD WhichData); -__declspec(dllexport) long long __stdcall GetPE32DataW(wchar_t* szFileName, DWORD WhichSection, DWORD WhichData); -__declspec(dllexport) bool __stdcall GetPE32DataFromMappedFileEx(ULONG_PTR FileMapVA, LPVOID DataStorage); -__declspec(dllexport) bool __stdcall GetPE32DataEx(char* szFileName, LPVOID DataStorage); -__declspec(dllexport) bool __stdcall GetPE32DataExW(wchar_t* szFileName, LPVOID DataStorage); -__declspec(dllexport) bool __stdcall SetPE32DataForMappedFile(ULONG_PTR FileMapVA, DWORD WhichSection, DWORD WhichData, ULONG_PTR NewDataValue); -__declspec(dllexport) bool __stdcall SetPE32Data(char* szFileName, DWORD WhichSection, DWORD WhichData, ULONG_PTR NewDataValue); -__declspec(dllexport) bool __stdcall SetPE32DataW(wchar_t* szFileName, DWORD WhichSection, DWORD WhichData, ULONG_PTR NewDataValue); -__declspec(dllexport) bool __stdcall SetPE32DataForMappedFileEx(ULONG_PTR FileMapVA, LPVOID DataStorage); -__declspec(dllexport) bool __stdcall SetPE32DataEx(char* szFileName, LPVOID DataStorage); -__declspec(dllexport) long __stdcall GetPE32SectionNumberFromVA(ULONG_PTR FileMapVA, ULONG_PTR AddressToConvert); -__declspec(dllexport) long long __stdcall ConvertVAtoFileOffset(ULONG_PTR FileMapVA, ULONG_PTR AddressToConvert, bool ReturnType); -__declspec(dllexport) long long __stdcall ConvertVAtoFileOffsetEx(ULONG_PTR FileMapVA, DWORD FileSize, ULONG_PTR ImageBase, ULONG_PTR AddressToConvert, bool AddressIsRVA, bool ReturnType); -__declspec(dllexport) long long __stdcall ConvertFileOffsetToVA(ULONG_PTR FileMapVA, ULONG_PTR AddressToConvert, bool ReturnType); -__declspec(dllexport) long long __stdcall ConvertFileOffsetToVAEx(ULONG_PTR FileMapVA, DWORD FileSize, ULONG_PTR ImageBase, ULONG_PTR AddressToConvert, bool ReturnType); +__declspec(dllexport) bool DumpProcess(HANDLE hProcess, LPVOID ImageBase, char* szDumpFileName, ULONG_PTR EntryPoint); +__declspec(dllexport) bool DumpProcessW(HANDLE hProcess, LPVOID ImageBase, wchar_t* szDumpFileName, ULONG_PTR EntryPoint); +__declspec(dllexport) bool DumpProcessEx(DWORD ProcessId, LPVOID ImageBase, char* szDumpFileName, ULONG_PTR EntryPoint); +__declspec(dllexport) bool DumpProcessExW(DWORD ProcessId, LPVOID ImageBase, wchar_t* szDumpFileName, ULONG_PTR EntryPoint); +__declspec(dllexport) bool DumpMemory(HANDLE hProcess, LPVOID MemoryStart, ULONG_PTR MemorySize, char* szDumpFileName); +__declspec(dllexport) bool DumpMemoryW(HANDLE hProcess, LPVOID MemoryStart, ULONG_PTR MemorySize, wchar_t* szDumpFileName); +__declspec(dllexport) bool DumpMemoryEx(DWORD ProcessId, LPVOID MemoryStart, ULONG_PTR MemorySize, char* szDumpFileName); +__declspec(dllexport) bool DumpMemoryExW(DWORD ProcessId, LPVOID MemoryStart, ULONG_PTR MemorySize, wchar_t* szDumpFileName); +__declspec(dllexport) bool DumpRegions(HANDLE hProcess, char* szDumpFolder, bool DumpAboveImageBaseOnly); +__declspec(dllexport) bool DumpRegionsW(HANDLE hProcess, wchar_t* szDumpFolder, bool DumpAboveImageBaseOnly); +__declspec(dllexport) bool DumpRegionsEx(DWORD ProcessId, char* szDumpFolder, bool DumpAboveImageBaseOnly); +__declspec(dllexport) bool DumpRegionsExW(DWORD ProcessId, wchar_t* szDumpFolder, bool DumpAboveImageBaseOnly); +__declspec(dllexport) bool DumpModule(HANDLE hProcess, LPVOID ModuleBase, char* szDumpFileName); +__declspec(dllexport) bool DumpModuleW(HANDLE hProcess, LPVOID ModuleBase, wchar_t* szDumpFileName); +__declspec(dllexport) bool DumpModuleEx(DWORD ProcessId, LPVOID ModuleBase, char* szDumpFileName); +__declspec(dllexport) bool DumpModuleExW(DWORD ProcessId, LPVOID ModuleBase, wchar_t* szDumpFileName); +__declspec(dllexport) bool PastePEHeader(HANDLE hProcess, LPVOID ImageBase, char* szDebuggedFileName); +__declspec(dllexport) bool PastePEHeaderW(HANDLE hProcess, LPVOID ImageBase, wchar_t* szDebuggedFileName); +__declspec(dllexport) bool ExtractSection(char* szFileName, char* szDumpFileName, DWORD SectionNumber); +__declspec(dllexport) bool ExtractSectionW(wchar_t* szFileName, wchar_t* szDumpFileName, DWORD SectionNumber); +__declspec(dllexport) bool ResortFileSections(char* szFileName); +__declspec(dllexport) bool ResortFileSectionsW(wchar_t* szFileName); +__declspec(dllexport) bool FindOverlay(char* szFileName, LPDWORD OverlayStart, LPDWORD OverlaySize); +__declspec(dllexport) bool FindOverlayW(wchar_t* szFileName, LPDWORD OverlayStart, LPDWORD OverlaySize); +__declspec(dllexport) bool ExtractOverlay(char* szFileName, char* szExtactedFileName); +__declspec(dllexport) bool ExtractOverlayW(wchar_t* szFileName, wchar_t* szExtactedFileName); +__declspec(dllexport) bool AddOverlay(char* szFileName, char* szOverlayFileName); +__declspec(dllexport) bool AddOverlayW(wchar_t* szFileName, wchar_t* szOverlayFileName); +__declspec(dllexport) bool CopyOverlay(char* szInFileName, char* szOutFileName); +__declspec(dllexport) bool CopyOverlayW(wchar_t* szInFileName, wchar_t* szOutFileName); +__declspec(dllexport) bool RemoveOverlay(char* szFileName); +__declspec(dllexport) bool RemoveOverlayW(wchar_t* szFileName); +__declspec(dllexport) bool MakeAllSectionsRWE(char* szFileName); +__declspec(dllexport) bool MakeAllSectionsRWEW(wchar_t* szFileName); +__declspec(dllexport) long AddNewSectionEx(char* szFileName, char* szSectionName, DWORD SectionSize, DWORD SectionAttributes, LPVOID SectionContent, DWORD ContentSize); +__declspec(dllexport) long AddNewSectionExW(wchar_t* szFileName, char* szSectionName, DWORD SectionSize, DWORD SectionAttributes, LPVOID SectionContent, DWORD ContentSize); +__declspec(dllexport) long AddNewSection(char* szFileName, char* szSectionName, DWORD SectionSize); +__declspec(dllexport) long AddNewSectionW(wchar_t* szFileName, char* szSectionName, DWORD SectionSize); +__declspec(dllexport) bool ResizeLastSection(char* szFileName, DWORD NumberOfExpandBytes, bool AlignResizeData); +__declspec(dllexport) bool ResizeLastSectionW(wchar_t* szFileName, DWORD NumberOfExpandBytes, bool AlignResizeData); +__declspec(dllexport) void SetSharedOverlay(char* szFileName); +__declspec(dllexport) void SetSharedOverlayW(wchar_t* szFileName); +__declspec(dllexport) char* GetSharedOverlay(); +__declspec(dllexport) wchar_t* GetSharedOverlayW(); +__declspec(dllexport) bool DeleteLastSection(char* szFileName); +__declspec(dllexport) bool DeleteLastSectionW(wchar_t* szFileName); +__declspec(dllexport) bool DeleteLastSectionEx(char* szFileName, DWORD NumberOfSections); +__declspec(dllexport) bool DeleteLastSectionExW(wchar_t* szFileName, DWORD NumberOfSections); +__declspec(dllexport) long long GetPE32DataFromMappedFile(ULONG_PTR FileMapVA, DWORD WhichSection, DWORD WhichData); +__declspec(dllexport) long long GetPE32Data(char* szFileName, DWORD WhichSection, DWORD WhichData); +__declspec(dllexport) long long GetPE32DataW(wchar_t* szFileName, DWORD WhichSection, DWORD WhichData); +__declspec(dllexport) bool GetPE32DataFromMappedFileEx(ULONG_PTR FileMapVA, LPVOID DataStorage); +__declspec(dllexport) bool GetPE32DataEx(char* szFileName, LPVOID DataStorage); +__declspec(dllexport) bool GetPE32DataExW(wchar_t* szFileName, LPVOID DataStorage); +__declspec(dllexport) bool SetPE32DataForMappedFile(ULONG_PTR FileMapVA, DWORD WhichSection, DWORD WhichData, ULONG_PTR NewDataValue); +__declspec(dllexport) bool SetPE32Data(char* szFileName, DWORD WhichSection, DWORD WhichData, ULONG_PTR NewDataValue); +__declspec(dllexport) bool SetPE32DataW(wchar_t* szFileName, DWORD WhichSection, DWORD WhichData, ULONG_PTR NewDataValue); +__declspec(dllexport) bool SetPE32DataForMappedFileEx(ULONG_PTR FileMapVA, LPVOID DataStorage); +__declspec(dllexport) bool SetPE32DataEx(char* szFileName, LPVOID DataStorage); +__declspec(dllexport) long GetPE32SectionNumberFromVA(ULONG_PTR FileMapVA, ULONG_PTR AddressToConvert); +__declspec(dllexport) long long ConvertVAtoFileOffset(ULONG_PTR FileMapVA, ULONG_PTR AddressToConvert, bool ReturnType); +__declspec(dllexport) long long ConvertVAtoFileOffsetEx(ULONG_PTR FileMapVA, DWORD FileSize, ULONG_PTR ImageBase, ULONG_PTR AddressToConvert, bool AddressIsRVA, bool ReturnType); +__declspec(dllexport) long long ConvertFileOffsetToVA(ULONG_PTR FileMapVA, ULONG_PTR AddressToConvert, bool ReturnType); +__declspec(dllexport) long long ConvertFileOffsetToVAEx(ULONG_PTR FileMapVA, DWORD FileSize, ULONG_PTR ImageBase, ULONG_PTR AddressToConvert, bool ReturnType); // TitanEngine.Realigner.functions: -__declspec(dllexport) bool __stdcall FixHeaderCheckSum(char* szFileName); -__declspec(dllexport) bool __stdcall FixHeaderCheckSumW(wchar_t* szFileName); -__declspec(dllexport) long __stdcall RealignPE(ULONG_PTR FileMapVA, DWORD FileSize, DWORD RealingMode); -__declspec(dllexport) long __stdcall RealignPEEx(char* szFileName, DWORD RealingFileSize, DWORD ForcedFileAlignment); -__declspec(dllexport) long __stdcall RealignPEExW(wchar_t* szFileName, DWORD RealingFileSize, DWORD ForcedFileAlignment); -__declspec(dllexport) bool __stdcall WipeSection(char* szFileName, int WipeSectionNumber, bool RemovePhysically); -__declspec(dllexport) bool __stdcall WipeSectionW(wchar_t* szFileName, int WipeSectionNumber, bool RemovePhysically); -__declspec(dllexport) bool __stdcall IsPE32FileValidEx(char* szFileName, DWORD CheckDepth, LPVOID FileStatusInfo); -__declspec(dllexport) bool __stdcall IsPE32FileValidExW(wchar_t* szFileName, DWORD CheckDepth, LPVOID FileStatusInfo); -__declspec(dllexport) bool __stdcall FixBrokenPE32FileEx(char* szFileName, LPVOID FileStatusInfo, LPVOID FileFixInfo); -__declspec(dllexport) bool __stdcall FixBrokenPE32FileExW(wchar_t* szFileName, LPVOID FileStatusInfo, LPVOID FileFixInfo); -__declspec(dllexport) bool __stdcall IsFileDLL(char* szFileName, ULONG_PTR FileMapVA); -__declspec(dllexport) bool __stdcall IsFileDLLW(wchar_t* szFileName, ULONG_PTR FileMapVA); +__declspec(dllexport) bool FixHeaderCheckSum(char* szFileName); +__declspec(dllexport) bool FixHeaderCheckSumW(wchar_t* szFileName); +__declspec(dllexport) long RealignPE(ULONG_PTR FileMapVA, DWORD FileSize, DWORD RealingMode); +__declspec(dllexport) long RealignPEEx(char* szFileName, DWORD RealingFileSize, DWORD ForcedFileAlignment); +__declspec(dllexport) long RealignPEExW(wchar_t* szFileName, DWORD RealingFileSize, DWORD ForcedFileAlignment); +__declspec(dllexport) bool WipeSection(char* szFileName, int WipeSectionNumber, bool RemovePhysically); +__declspec(dllexport) bool WipeSectionW(wchar_t* szFileName, int WipeSectionNumber, bool RemovePhysically); +__declspec(dllexport) bool IsPE32FileValidEx(char* szFileName, DWORD CheckDepth, LPVOID FileStatusInfo); +__declspec(dllexport) bool IsPE32FileValidExW(wchar_t* szFileName, DWORD CheckDepth, LPVOID FileStatusInfo); +__declspec(dllexport) bool FixBrokenPE32FileEx(char* szFileName, LPVOID FileStatusInfo, LPVOID FileFixInfo); +__declspec(dllexport) bool FixBrokenPE32FileExW(wchar_t* szFileName, LPVOID FileStatusInfo, LPVOID FileFixInfo); +__declspec(dllexport) bool IsFileDLL(char* szFileName, ULONG_PTR FileMapVA); +__declspec(dllexport) bool IsFileDLLW(wchar_t* szFileName, ULONG_PTR FileMapVA); // TitanEngine.Hider.functions: -__declspec(dllexport) void* __stdcall GetPEBLocation(HANDLE hProcess); -__declspec(dllexport) bool __stdcall HideDebugger(HANDLE hProcess, DWORD PatchAPILevel); -__declspec(dllexport) bool __stdcall UnHideDebugger(HANDLE hProcess, DWORD PatchAPILevel); +__declspec(dllexport) void* GetPEBLocation(HANDLE hProcess); +__declspec(dllexport) bool HideDebugger(HANDLE hProcess, DWORD PatchAPILevel); +__declspec(dllexport) bool UnHideDebugger(HANDLE hProcess, DWORD PatchAPILevel); // TitanEngine.Relocater.functions: -__declspec(dllexport) void __stdcall RelocaterCleanup(); -__declspec(dllexport) void __stdcall RelocaterInit(DWORD MemorySize, ULONG_PTR OldImageBase, ULONG_PTR NewImageBase); -__declspec(dllexport) void __stdcall RelocaterAddNewRelocation(HANDLE hProcess, ULONG_PTR RelocateAddress, DWORD RelocateState); -__declspec(dllexport) long __stdcall RelocaterEstimatedSize(); -__declspec(dllexport) bool __stdcall RelocaterExportRelocation(ULONG_PTR StorePlace, DWORD StorePlaceRVA, ULONG_PTR FileMapVA); -__declspec(dllexport) bool __stdcall RelocaterExportRelocationEx(char* szFileName, char* szSectionName); -__declspec(dllexport) bool __stdcall RelocaterExportRelocationExW(wchar_t* szFileName, char* szSectionName); -__declspec(dllexport) bool __stdcall RelocaterGrabRelocationTable(HANDLE hProcess, ULONG_PTR MemoryStart, DWORD MemorySize); -__declspec(dllexport) bool __stdcall RelocaterGrabRelocationTableEx(HANDLE hProcess, ULONG_PTR MemoryStart, ULONG_PTR MemorySize, DWORD NtSizeOfImage); -__declspec(dllexport) bool __stdcall RelocaterMakeSnapshot(HANDLE hProcess, char* szSaveFileName, LPVOID MemoryStart, ULONG_PTR MemorySize); -__declspec(dllexport) bool __stdcall RelocaterMakeSnapshotW(HANDLE hProcess, wchar_t* szSaveFileName, LPVOID MemoryStart, ULONG_PTR MemorySize); -__declspec(dllexport) bool __stdcall RelocaterCompareTwoSnapshots(HANDLE hProcess, ULONG_PTR LoadedImageBase, ULONG_PTR NtSizeOfImage, char* szDumpFile1, char* szDumpFile2, ULONG_PTR MemStart); -__declspec(dllexport) bool __stdcall RelocaterCompareTwoSnapshotsW(HANDLE hProcess, ULONG_PTR LoadedImageBase, ULONG_PTR NtSizeOfImage, wchar_t* szDumpFile1, wchar_t* szDumpFile2, ULONG_PTR MemStart); -__declspec(dllexport) bool __stdcall RelocaterChangeFileBase(char* szFileName, ULONG_PTR NewImageBase); -__declspec(dllexport) bool __stdcall RelocaterChangeFileBaseW(wchar_t* szFileName, ULONG_PTR NewImageBase); -__declspec(dllexport) bool __stdcall RelocaterRelocateMemoryBlock(ULONG_PTR FileMapVA, ULONG_PTR MemoryLocation, void* RelocateMemory, DWORD RelocateMemorySize, ULONG_PTR CurrentLoadedBase, ULONG_PTR RelocateBase); -__declspec(dllexport) bool __stdcall RelocaterWipeRelocationTable(char* szFileName); -__declspec(dllexport) bool __stdcall RelocaterWipeRelocationTableW(wchar_t* szFileName); +__declspec(dllexport) void RelocaterCleanup(); +__declspec(dllexport) void RelocaterInit(DWORD MemorySize, ULONG_PTR OldImageBase, ULONG_PTR NewImageBase); +__declspec(dllexport) void RelocaterAddNewRelocation(HANDLE hProcess, ULONG_PTR RelocateAddress, DWORD RelocateState); +__declspec(dllexport) long RelocaterEstimatedSize(); +__declspec(dllexport) bool RelocaterExportRelocation(ULONG_PTR StorePlace, DWORD StorePlaceRVA, ULONG_PTR FileMapVA); +__declspec(dllexport) bool RelocaterExportRelocationEx(char* szFileName, char* szSectionName); +__declspec(dllexport) bool RelocaterExportRelocationExW(wchar_t* szFileName, char* szSectionName); +__declspec(dllexport) bool RelocaterGrabRelocationTable(HANDLE hProcess, ULONG_PTR MemoryStart, DWORD MemorySize); +__declspec(dllexport) bool RelocaterGrabRelocationTableEx(HANDLE hProcess, ULONG_PTR MemoryStart, ULONG_PTR MemorySize, DWORD NtSizeOfImage); +__declspec(dllexport) bool RelocaterMakeSnapshot(HANDLE hProcess, char* szSaveFileName, LPVOID MemoryStart, ULONG_PTR MemorySize); +__declspec(dllexport) bool RelocaterMakeSnapshotW(HANDLE hProcess, wchar_t* szSaveFileName, LPVOID MemoryStart, ULONG_PTR MemorySize); +__declspec(dllexport) bool RelocaterCompareTwoSnapshots(HANDLE hProcess, ULONG_PTR LoadedImageBase, ULONG_PTR NtSizeOfImage, char* szDumpFile1, char* szDumpFile2, ULONG_PTR MemStart); +__declspec(dllexport) bool RelocaterCompareTwoSnapshotsW(HANDLE hProcess, ULONG_PTR LoadedImageBase, ULONG_PTR NtSizeOfImage, wchar_t* szDumpFile1, wchar_t* szDumpFile2, ULONG_PTR MemStart); +__declspec(dllexport) bool RelocaterChangeFileBase(char* szFileName, ULONG_PTR NewImageBase); +__declspec(dllexport) bool RelocaterChangeFileBaseW(wchar_t* szFileName, ULONG_PTR NewImageBase); +__declspec(dllexport) bool RelocaterRelocateMemoryBlock(ULONG_PTR FileMapVA, ULONG_PTR MemoryLocation, void* RelocateMemory, DWORD RelocateMemorySize, ULONG_PTR CurrentLoadedBase, ULONG_PTR RelocateBase); +__declspec(dllexport) bool RelocaterWipeRelocationTable(char* szFileName); +__declspec(dllexport) bool RelocaterWipeRelocationTableW(wchar_t* szFileName); // TitanEngine.Resourcer.functions: -__declspec(dllexport) long long __stdcall ResourcerLoadFileForResourceUse(char* szFileName); -__declspec(dllexport) long long __stdcall ResourcerLoadFileForResourceUseW(wchar_t* szFileName); -__declspec(dllexport) bool __stdcall ResourcerFreeLoadedFile(LPVOID LoadedFileBase); -__declspec(dllexport) bool __stdcall ResourcerExtractResourceFromFileEx(ULONG_PTR FileMapVA, char* szResourceType, char* szResourceName, char* szExtractedFileName); -__declspec(dllexport) bool __stdcall ResourcerExtractResourceFromFile(char* szFileName, char* szResourceType, char* szResourceName, char* szExtractedFileName); -__declspec(dllexport) bool __stdcall ResourcerExtractResourceFromFileW(wchar_t* szFileName, char* szResourceType, char* szResourceName, char* szExtractedFileName); -__declspec(dllexport) bool __stdcall ResourcerFindResource(char* szFileName, char* szResourceType, DWORD ResourceType, char* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, PULONG_PTR pResourceData, LPDWORD pResourceSize); -__declspec(dllexport) bool __stdcall ResourcerFindResourceW(wchar_t* szFileName, wchar_t* szResourceType, DWORD ResourceType, wchar_t* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, PULONG_PTR pResourceData, LPDWORD pResourceSize); -__declspec(dllexport) bool __stdcall ResourcerFindResourceEx(ULONG_PTR FileMapVA, DWORD FileSize, wchar_t* szResourceType, DWORD ResourceType, wchar_t* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, PULONG_PTR pResourceData, LPDWORD pResourceSize); -__declspec(dllexport) void __stdcall ResourcerEnumerateResource(char* szFileName, void* CallBack); -__declspec(dllexport) void __stdcall ResourcerEnumerateResourceW(wchar_t* szFileName, void* CallBack); -__declspec(dllexport) void __stdcall ResourcerEnumerateResourceEx(ULONG_PTR FileMapVA, DWORD FileSize, void* CallBack); +__declspec(dllexport) long long ResourcerLoadFileForResourceUse(char* szFileName); +__declspec(dllexport) long long ResourcerLoadFileForResourceUseW(wchar_t* szFileName); +__declspec(dllexport) bool ResourcerFreeLoadedFile(LPVOID LoadedFileBase); +__declspec(dllexport) bool ResourcerExtractResourceFromFileEx(ULONG_PTR FileMapVA, char* szResourceType, char* szResourceName, char* szExtractedFileName); +__declspec(dllexport) bool ResourcerExtractResourceFromFile(char* szFileName, char* szResourceType, char* szResourceName, char* szExtractedFileName); +__declspec(dllexport) bool ResourcerExtractResourceFromFileW(wchar_t* szFileName, char* szResourceType, char* szResourceName, char* szExtractedFileName); +__declspec(dllexport) bool ResourcerFindResource(char* szFileName, char* szResourceType, DWORD ResourceType, char* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, PULONG_PTR pResourceData, LPDWORD pResourceSize); +__declspec(dllexport) bool ResourcerFindResourceW(wchar_t* szFileName, wchar_t* szResourceType, DWORD ResourceType, wchar_t* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, PULONG_PTR pResourceData, LPDWORD pResourceSize); +__declspec(dllexport) bool ResourcerFindResourceEx(ULONG_PTR FileMapVA, DWORD FileSize, wchar_t* szResourceType, DWORD ResourceType, wchar_t* szResourceName, DWORD ResourceName, DWORD ResourceLanguage, PULONG_PTR pResourceData, LPDWORD pResourceSize); +__declspec(dllexport) void ResourcerEnumerateResource(char* szFileName, void* CallBack); +__declspec(dllexport) void ResourcerEnumerateResourceW(wchar_t* szFileName, void* CallBack); +__declspec(dllexport) void ResourcerEnumerateResourceEx(ULONG_PTR FileMapVA, DWORD FileSize, void* CallBack); // TitanEngine.Threader.functions: -__declspec(dllexport) bool __stdcall ThreaderImportRunningThreadData(DWORD ProcessId); -__declspec(dllexport) void* __stdcall ThreaderGetThreadInfo(HANDLE hThread, DWORD ThreadId); -__declspec(dllexport) void __stdcall ThreaderEnumThreadInfo(void* EnumCallBack); -__declspec(dllexport) bool __stdcall ThreaderPauseThread(HANDLE hThread); -__declspec(dllexport) bool __stdcall ThreaderResumeThread(HANDLE hThread); -__declspec(dllexport) bool __stdcall ThreaderTerminateThread(HANDLE hThread, DWORD ThreadExitCode); -__declspec(dllexport) bool __stdcall ThreaderPauseAllThreads(bool LeaveMainRunning); -__declspec(dllexport) bool __stdcall ThreaderResumeAllThreads(bool LeaveMainPaused); -__declspec(dllexport) bool __stdcall ThreaderPauseProcess(); -__declspec(dllexport) bool __stdcall ThreaderResumeProcess(); -__declspec(dllexport) long long __stdcall ThreaderCreateRemoteThread(ULONG_PTR ThreadStartAddress, bool AutoCloseTheHandle, LPVOID ThreadPassParameter, LPDWORD ThreadId); -__declspec(dllexport) bool __stdcall ThreaderInjectAndExecuteCode(LPVOID InjectCode, DWORD StartDelta, DWORD InjectSize); -__declspec(dllexport) long long __stdcall ThreaderCreateRemoteThreadEx(HANDLE hProcess, ULONG_PTR ThreadStartAddress, bool AutoCloseTheHandle, LPVOID ThreadPassParameter, LPDWORD ThreadId); -__declspec(dllexport) bool __stdcall ThreaderInjectAndExecuteCodeEx(HANDLE hProcess, LPVOID InjectCode, DWORD StartDelta, DWORD InjectSize); -__declspec(dllexport) void __stdcall ThreaderSetCallBackForNextExitThreadEvent(LPVOID exitThreadCallBack); -__declspec(dllexport) bool __stdcall ThreaderIsThreadStillRunning(HANDLE hThread); -__declspec(dllexport) bool __stdcall ThreaderIsThreadActive(HANDLE hThread); -__declspec(dllexport) bool __stdcall ThreaderIsAnyThreadActive(); -__declspec(dllexport) bool __stdcall ThreaderExecuteOnlyInjectedThreads(); -__declspec(dllexport) long long __stdcall ThreaderGetOpenHandleForThread(DWORD ThreadId); -__declspec(dllexport) void* __stdcall ThreaderGetThreadData(); -__declspec(dllexport) bool __stdcall ThreaderIsExceptionInMainThread(); +__declspec(dllexport) bool ThreaderImportRunningThreadData(DWORD ProcessId); +__declspec(dllexport) void* ThreaderGetThreadInfo(HANDLE hThread, DWORD ThreadId); +__declspec(dllexport) void ThreaderEnumThreadInfo(void* EnumCallBack); +__declspec(dllexport) bool ThreaderPauseThread(HANDLE hThread); +__declspec(dllexport) bool ThreaderResumeThread(HANDLE hThread); +__declspec(dllexport) bool ThreaderTerminateThread(HANDLE hThread, DWORD ThreadExitCode); +__declspec(dllexport) bool ThreaderPauseAllThreads(bool LeaveMainRunning); +__declspec(dllexport) bool ThreaderResumeAllThreads(bool LeaveMainPaused); +__declspec(dllexport) bool ThreaderPauseProcess(); +__declspec(dllexport) bool ThreaderResumeProcess(); +__declspec(dllexport) long long ThreaderCreateRemoteThread(ULONG_PTR ThreadStartAddress, bool AutoCloseTheHandle, LPVOID ThreadPassParameter, LPDWORD ThreadId); +__declspec(dllexport) bool ThreaderInjectAndExecuteCode(LPVOID InjectCode, DWORD StartDelta, DWORD InjectSize); +__declspec(dllexport) long long ThreaderCreateRemoteThreadEx(HANDLE hProcess, ULONG_PTR ThreadStartAddress, bool AutoCloseTheHandle, LPVOID ThreadPassParameter, LPDWORD ThreadId); +__declspec(dllexport) bool ThreaderInjectAndExecuteCodeEx(HANDLE hProcess, LPVOID InjectCode, DWORD StartDelta, DWORD InjectSize); +__declspec(dllexport) void ThreaderSetCallBackForNextExitThreadEvent(LPVOID exitThreadCallBack); +__declspec(dllexport) bool ThreaderIsThreadStillRunning(HANDLE hThread); +__declspec(dllexport) bool ThreaderIsThreadActive(HANDLE hThread); +__declspec(dllexport) bool ThreaderIsAnyThreadActive(); +__declspec(dllexport) bool ThreaderExecuteOnlyInjectedThreads(); +__declspec(dllexport) long long ThreaderGetOpenHandleForThread(DWORD ThreadId); +__declspec(dllexport) void* ThreaderGetThreadData(); +__declspec(dllexport) bool ThreaderIsExceptionInMainThread(); // TitanEngine.Debugger.functions: -__declspec(dllexport) void* __stdcall StaticDisassembleEx(ULONG_PTR DisassmStart, LPVOID DisassmAddress); -__declspec(dllexport) void* __stdcall StaticDisassemble(LPVOID DisassmAddress); -__declspec(dllexport) void* __stdcall DisassembleEx(HANDLE hProcess, LPVOID DisassmAddress); -__declspec(dllexport) void* __stdcall Disassemble(LPVOID DisassmAddress); -__declspec(dllexport) long __stdcall StaticLengthDisassemble(LPVOID DisassmAddress); -__declspec(dllexport) long __stdcall LengthDisassembleEx(HANDLE hProcess, LPVOID DisassmAddress); -__declspec(dllexport) long __stdcall LengthDisassemble(LPVOID DisassmAddress); -__declspec(dllexport) void* __stdcall InitDebug(char* szFileName, char* szCommandLine, char* szCurrentFolder); -__declspec(dllexport) void* __stdcall InitDebugW(wchar_t* szFileName, wchar_t* szCommandLine, wchar_t* szCurrentFolder); -__declspec(dllexport) void* __stdcall InitDebugEx(char* szFileName, char* szCommandLine, char* szCurrentFolder, LPVOID EntryCallBack); -__declspec(dllexport) void* __stdcall InitDebugExW(wchar_t* szFileName, wchar_t* szCommandLine, wchar_t* szCurrentFolder, LPVOID EntryCallBack); -__declspec(dllexport) void* __stdcall InitDLLDebug(char* szFileName, bool ReserveModuleBase, char* szCommandLine, char* szCurrentFolder, LPVOID EntryCallBack); -__declspec(dllexport) void* __stdcall InitDLLDebugW(wchar_t* szFileName, bool ReserveModuleBase, wchar_t* szCommandLine, wchar_t* szCurrentFolder, LPVOID EntryCallBack); -__declspec(dllexport) bool __stdcall StopDebug(); -__declspec(dllexport) void __stdcall SetBPXOptions(long DefaultBreakPointType); -__declspec(dllexport) bool __stdcall IsBPXEnabled(ULONG_PTR bpxAddress); -__declspec(dllexport) bool __stdcall EnableBPX(ULONG_PTR bpxAddress); -__declspec(dllexport) bool __stdcall DisableBPX(ULONG_PTR bpxAddress); -__declspec(dllexport) bool __stdcall SetBPX(ULONG_PTR bpxAddress, DWORD bpxType, LPVOID bpxCallBack); -__declspec(dllexport) bool __stdcall SetBPXEx(ULONG_PTR bpxAddress, DWORD bpxType, DWORD NumberOfExecution, DWORD CmpRegister, DWORD CmpCondition, ULONG_PTR CmpValue, LPVOID bpxCallBack, LPVOID bpxCompareCallBack, LPVOID bpxRemoveCallBack); -__declspec(dllexport) bool __stdcall DeleteBPX(ULONG_PTR bpxAddress); -__declspec(dllexport) bool __stdcall SafeDeleteBPX(ULONG_PTR bpxAddress); -__declspec(dllexport) bool __stdcall SetAPIBreakPoint(char* szDLLName, char* szAPIName, DWORD bpxType, DWORD bpxPlace, LPVOID bpxCallBack); -__declspec(dllexport) bool __stdcall DeleteAPIBreakPoint(char* szDLLName, char* szAPIName, DWORD bpxPlace); -__declspec(dllexport) bool __stdcall SafeDeleteAPIBreakPoint(char* szDLLName, char* szAPIName, DWORD bpxPlace); -__declspec(dllexport) bool __stdcall SetMemoryBPX(ULONG_PTR MemoryStart, DWORD SizeOfMemory, LPVOID bpxCallBack); -__declspec(dllexport) bool __stdcall SetMemoryBPXEx(ULONG_PTR MemoryStart, DWORD SizeOfMemory, DWORD BreakPointType, bool RestoreOnHit, LPVOID bpxCallBack); -__declspec(dllexport) bool __stdcall RemoveMemoryBPX(ULONG_PTR MemoryStart, DWORD SizeOfMemory); -__declspec(dllexport) bool __stdcall GetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea); -__declspec(dllexport) long long __stdcall GetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister); -__declspec(dllexport) long long __stdcall GetContextData(DWORD IndexOfRegister); -__declspec(dllexport) bool __stdcall SetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea); -__declspec(dllexport) bool __stdcall SetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister, ULONG_PTR NewRegisterValue); -__declspec(dllexport) bool __stdcall SetContextData(DWORD IndexOfRegister, ULONG_PTR NewRegisterValue); -__declspec(dllexport) void __stdcall ClearExceptionNumber(); -__declspec(dllexport) long __stdcall CurrentExceptionNumber(); -__declspec(dllexport) bool __stdcall MatchPatternEx(HANDLE hProcess, void* MemoryToCheck, int SizeOfMemoryToCheck, void* PatternToMatch, int SizeOfPatternToMatch, PBYTE WildCard); -__declspec(dllexport) bool __stdcall MatchPattern(void* MemoryToCheck, int SizeOfMemoryToCheck, void* PatternToMatch, int SizeOfPatternToMatch, PBYTE WildCard); -__declspec(dllexport) long long __stdcall FindEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, LPBYTE WildCard); -__declspec(dllexport) long long __stdcall Find(LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, LPBYTE WildCard); -__declspec(dllexport) bool __stdcall FillEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, PBYTE FillByte); -__declspec(dllexport) bool __stdcall Fill(LPVOID MemoryStart, DWORD MemorySize, PBYTE FillByte); -__declspec(dllexport) bool __stdcall PatchEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, LPVOID ReplacePattern, DWORD ReplaceSize, bool AppendNOP, bool PrependNOP); -__declspec(dllexport) bool __stdcall Patch(LPVOID MemoryStart, DWORD MemorySize, LPVOID ReplacePattern, DWORD ReplaceSize, bool AppendNOP, bool PrependNOP); -__declspec(dllexport) bool __stdcall ReplaceEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, DWORD NumberOfRepetitions, LPVOID ReplacePattern, DWORD ReplaceSize, PBYTE WildCard); -__declspec(dllexport) bool __stdcall Replace(LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, DWORD NumberOfRepetitions, LPVOID ReplacePattern, DWORD ReplaceSize, PBYTE WildCard); -__declspec(dllexport) void* __stdcall GetDebugData(); -__declspec(dllexport) void* __stdcall GetTerminationData(); -__declspec(dllexport) long __stdcall GetExitCode(); -__declspec(dllexport) long long __stdcall GetDebuggedDLLBaseAddress(); -__declspec(dllexport) unsigned long long __stdcall GetDebuggedFileBaseAddress(); -__declspec(dllexport) bool __stdcall GetRemoteString(HANDLE hProcess, LPVOID StringAddress, LPVOID StringStorage, int MaximumStringSize); -__declspec(dllexport) long long __stdcall GetFunctionParameter(HANDLE hProcess, DWORD FunctionType, DWORD ParameterNumber, DWORD ParameterType); -__declspec(dllexport) long long __stdcall GetJumpDestinationEx(HANDLE hProcess, ULONG_PTR InstructionAddress, bool JustJumps); -__declspec(dllexport) long long __stdcall GetJumpDestination(HANDLE hProcess, ULONG_PTR InstructionAddress); -__declspec(dllexport) bool __stdcall IsJumpGoingToExecuteEx(HANDLE hProcess, HANDLE hThread, ULONG_PTR InstructionAddress, ULONG_PTR RegFlags); -__declspec(dllexport) bool __stdcall IsJumpGoingToExecute(); -__declspec(dllexport) void __stdcall SetCustomHandler(DWORD ExceptionId, LPVOID CallBack); -__declspec(dllexport) void __stdcall ForceClose(); -__declspec(dllexport) void __stdcall StepInto(LPVOID traceCallBack); -__declspec(dllexport) void __stdcall StepOver(LPVOID traceCallBack); -__declspec(dllexport) void __stdcall SingleStep(DWORD StepCount, LPVOID StepCallBack); -__declspec(dllexport) bool __stdcall GetUnusedHardwareBreakPointRegister(LPDWORD RegisterIndex); -__declspec(dllexport) bool __stdcall SetHardwareBreakPointEx(HANDLE hActiveThread, ULONG_PTR bpxAddress, DWORD IndexOfRegister, DWORD bpxType, DWORD bpxSize, LPVOID bpxCallBack, LPDWORD IndexOfSelectedRegister); -__declspec(dllexport) bool __stdcall SetHardwareBreakPoint(ULONG_PTR bpxAddress, DWORD IndexOfRegister, DWORD bpxType, DWORD bpxSize, LPVOID bpxCallBack); -__declspec(dllexport) bool __stdcall DeleteHardwareBreakPoint(DWORD IndexOfRegister); -__declspec(dllexport) bool __stdcall RemoveAllBreakPoints(DWORD RemoveOption); -__declspec(dllexport) void* __stdcall GetProcessInformation(); -__declspec(dllexport) void* __stdcall GetStartupInformation(); -__declspec(dllexport) void __stdcall DebugLoop(); -__declspec(dllexport) void __stdcall SetDebugLoopTimeOut(DWORD TimeOut); -__declspec(dllexport) void __stdcall SetNextDbgContinueStatus(DWORD SetDbgCode); -__declspec(dllexport) bool __stdcall AttachDebugger(DWORD ProcessId, bool KillOnExit, LPVOID DebugInfo, LPVOID CallBack); -__declspec(dllexport) bool __stdcall DetachDebugger(DWORD ProcessId); -__declspec(dllexport) bool __stdcall DetachDebuggerEx(DWORD ProcessId); -__declspec(dllexport) void __stdcall DebugLoopEx(DWORD TimeOut); -__declspec(dllexport) void __stdcall AutoDebugEx(char* szFileName, bool ReserveModuleBase, char* szCommandLine, char* szCurrentFolder, DWORD TimeOut, LPVOID EntryCallBack); -__declspec(dllexport) void __stdcall AutoDebugExW(wchar_t* szFileName, bool ReserveModuleBase, wchar_t* szCommandLine, wchar_t* szCurrentFolder, DWORD TimeOut, LPVOID EntryCallBack); -__declspec(dllexport) bool __stdcall IsFileBeingDebugged(); -__declspec(dllexport) void __stdcall SetErrorModel(bool DisplayErrorMessages); +__declspec(dllexport) void* StaticDisassembleEx(ULONG_PTR DisassmStart, LPVOID DisassmAddress); +__declspec(dllexport) void* StaticDisassemble(LPVOID DisassmAddress); +__declspec(dllexport) void* DisassembleEx(HANDLE hProcess, LPVOID DisassmAddress); +__declspec(dllexport) void* Disassemble(LPVOID DisassmAddress); +__declspec(dllexport) long StaticLengthDisassemble(LPVOID DisassmAddress); +__declspec(dllexport) long LengthDisassembleEx(HANDLE hProcess, LPVOID DisassmAddress); +__declspec(dllexport) long LengthDisassemble(LPVOID DisassmAddress); +__declspec(dllexport) void* InitDebug(char* szFileName, char* szCommandLine, char* szCurrentFolder); +__declspec(dllexport) void* InitDebugW(wchar_t* szFileName, wchar_t* szCommandLine, wchar_t* szCurrentFolder); +__declspec(dllexport) void* InitDebugEx(char* szFileName, char* szCommandLine, char* szCurrentFolder, LPVOID EntryCallBack); +__declspec(dllexport) void* InitDebugExW(wchar_t* szFileName, wchar_t* szCommandLine, wchar_t* szCurrentFolder, LPVOID EntryCallBack); +__declspec(dllexport) void* InitDLLDebug(char* szFileName, bool ReserveModuleBase, char* szCommandLine, char* szCurrentFolder, LPVOID EntryCallBack); +__declspec(dllexport) void* InitDLLDebugW(wchar_t* szFileName, bool ReserveModuleBase, wchar_t* szCommandLine, wchar_t* szCurrentFolder, LPVOID EntryCallBack); +__declspec(dllexport) bool StopDebug(); +__declspec(dllexport) void SetBPXOptions(long DefaultBreakPointType); +__declspec(dllexport) bool IsBPXEnabled(ULONG_PTR bpxAddress); +__declspec(dllexport) bool EnableBPX(ULONG_PTR bpxAddress); +__declspec(dllexport) bool DisableBPX(ULONG_PTR bpxAddress); +__declspec(dllexport) bool SetBPX(ULONG_PTR bpxAddress, DWORD bpxType, LPVOID bpxCallBack); +__declspec(dllexport) bool SetBPXEx(ULONG_PTR bpxAddress, DWORD bpxType, DWORD NumberOfExecution, DWORD CmpRegister, DWORD CmpCondition, ULONG_PTR CmpValue, LPVOID bpxCallBack, LPVOID bpxCompareCallBack, LPVOID bpxRemoveCallBack); +__declspec(dllexport) bool DeleteBPX(ULONG_PTR bpxAddress); +__declspec(dllexport) bool SafeDeleteBPX(ULONG_PTR bpxAddress); +__declspec(dllexport) bool SetAPIBreakPoint(char* szDLLName, char* szAPIName, DWORD bpxType, DWORD bpxPlace, LPVOID bpxCallBack); +__declspec(dllexport) bool DeleteAPIBreakPoint(char* szDLLName, char* szAPIName, DWORD bpxPlace); +__declspec(dllexport) bool SafeDeleteAPIBreakPoint(char* szDLLName, char* szAPIName, DWORD bpxPlace); +__declspec(dllexport) bool SetMemoryBPX(ULONG_PTR MemoryStart, DWORD SizeOfMemory, LPVOID bpxCallBack); +__declspec(dllexport) bool SetMemoryBPXEx(ULONG_PTR MemoryStart, DWORD SizeOfMemory, DWORD BreakPointType, bool RestoreOnHit, LPVOID bpxCallBack); +__declspec(dllexport) bool RemoveMemoryBPX(ULONG_PTR MemoryStart, DWORD SizeOfMemory); +__declspec(dllexport) bool GetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea); +__declspec(dllexport) long long GetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister); +__declspec(dllexport) long long GetContextData(DWORD IndexOfRegister); +__declspec(dllexport) bool SetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea); +__declspec(dllexport) bool SetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister, ULONG_PTR NewRegisterValue); +__declspec(dllexport) bool SetContextData(DWORD IndexOfRegister, ULONG_PTR NewRegisterValue); +__declspec(dllexport) void ClearExceptionNumber(); +__declspec(dllexport) long CurrentExceptionNumber(); +__declspec(dllexport) bool MatchPatternEx(HANDLE hProcess, void* MemoryToCheck, int SizeOfMemoryToCheck, void* PatternToMatch, int SizeOfPatternToMatch, PBYTE WildCard); +__declspec(dllexport) bool MatchPattern(void* MemoryToCheck, int SizeOfMemoryToCheck, void* PatternToMatch, int SizeOfPatternToMatch, PBYTE WildCard); +__declspec(dllexport) long long FindEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, LPBYTE WildCard); +extern "C" __declspec(dllexport) long long Find(LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, LPBYTE WildCard); +__declspec(dllexport) bool FillEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, PBYTE FillByte); +__declspec(dllexport) bool Fill(LPVOID MemoryStart, DWORD MemorySize, PBYTE FillByte); +__declspec(dllexport) bool PatchEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, LPVOID ReplacePattern, DWORD ReplaceSize, bool AppendNOP, bool PrependNOP); +__declspec(dllexport) bool Patch(LPVOID MemoryStart, DWORD MemorySize, LPVOID ReplacePattern, DWORD ReplaceSize, bool AppendNOP, bool PrependNOP); +__declspec(dllexport) bool ReplaceEx(HANDLE hProcess, LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, DWORD NumberOfRepetitions, LPVOID ReplacePattern, DWORD ReplaceSize, PBYTE WildCard); +__declspec(dllexport) bool Replace(LPVOID MemoryStart, DWORD MemorySize, LPVOID SearchPattern, DWORD PatternSize, DWORD NumberOfRepetitions, LPVOID ReplacePattern, DWORD ReplaceSize, PBYTE WildCard); +__declspec(dllexport) void* GetDebugData(); +__declspec(dllexport) void* GetTerminationData(); +__declspec(dllexport) long GetExitCode(); +__declspec(dllexport) long long GetDebuggedDLLBaseAddress(); +__declspec(dllexport) unsigned long long GetDebuggedFileBaseAddress(); +__declspec(dllexport) bool GetRemoteString(HANDLE hProcess, LPVOID StringAddress, LPVOID StringStorage, int MaximumStringSize); +__declspec(dllexport) long long GetFunctionParameter(HANDLE hProcess, DWORD FunctionType, DWORD ParameterNumber, DWORD ParameterType); +__declspec(dllexport) long long GetJumpDestinationEx(HANDLE hProcess, ULONG_PTR InstructionAddress, bool JustJumps); +__declspec(dllexport) long long GetJumpDestination(HANDLE hProcess, ULONG_PTR InstructionAddress); +__declspec(dllexport) bool IsJumpGoingToExecuteEx(HANDLE hProcess, HANDLE hThread, ULONG_PTR InstructionAddress, ULONG_PTR RegFlags); +__declspec(dllexport) bool IsJumpGoingToExecute(); +__declspec(dllexport) void SetCustomHandler(DWORD ExceptionId, LPVOID CallBack); +__declspec(dllexport) void ForceClose(); +__declspec(dllexport) void StepInto(LPVOID traceCallBack); +__declspec(dllexport) void StepOver(LPVOID traceCallBack); +__declspec(dllexport) void SingleStep(DWORD StepCount, LPVOID StepCallBack); +__declspec(dllexport) bool GetUnusedHardwareBreakPointRegister(LPDWORD RegisterIndex); +__declspec(dllexport) bool SetHardwareBreakPointEx(HANDLE hActiveThread, ULONG_PTR bpxAddress, DWORD IndexOfRegister, DWORD bpxType, DWORD bpxSize, LPVOID bpxCallBack, LPDWORD IndexOfSelectedRegister); +__declspec(dllexport) bool SetHardwareBreakPoint(ULONG_PTR bpxAddress, DWORD IndexOfRegister, DWORD bpxType, DWORD bpxSize, LPVOID bpxCallBack); +__declspec(dllexport) bool DeleteHardwareBreakPoint(DWORD IndexOfRegister); +__declspec(dllexport) bool RemoveAllBreakPoints(DWORD RemoveOption); +__declspec(dllexport) void* GetProcessInformation(); +__declspec(dllexport) void* GetStartupInformation(); +__declspec(dllexport) void DebugLoop(); +__declspec(dllexport) void SetDebugLoopTimeOut(DWORD TimeOut); +__declspec(dllexport) void SetNextDbgContinueStatus(DWORD SetDbgCode); +__declspec(dllexport) bool AttachDebugger(DWORD ProcessId, bool KillOnExit, LPVOID DebugInfo, LPVOID CallBack); +__declspec(dllexport) bool DetachDebugger(DWORD ProcessId); +__declspec(dllexport) bool DetachDebuggerEx(DWORD ProcessId); +__declspec(dllexport) void DebugLoopEx(DWORD TimeOut); +__declspec(dllexport) void AutoDebugEx(char* szFileName, bool ReserveModuleBase, char* szCommandLine, char* szCurrentFolder, DWORD TimeOut, LPVOID EntryCallBack); +__declspec(dllexport) void AutoDebugExW(wchar_t* szFileName, bool ReserveModuleBase, wchar_t* szCommandLine, wchar_t* szCurrentFolder, DWORD TimeOut, LPVOID EntryCallBack); +__declspec(dllexport) bool IsFileBeingDebugged(); +__declspec(dllexport) void SetErrorModel(bool DisplayErrorMessages); // TitanEngine.FindOEP.functions: -__declspec(dllexport) void __stdcall FindOEPInit(); -__declspec(dllexport) bool __stdcall FindOEPGenerically(char* szFileName, LPVOID TraceInitCallBack, LPVOID CallBack); -__declspec(dllexport) bool __stdcall FindOEPGenericallyW(wchar_t* szFileName, LPVOID TraceInitCallBack, LPVOID CallBack); +__declspec(dllexport) void FindOEPInit(); +__declspec(dllexport) bool FindOEPGenerically(char* szFileName, LPVOID TraceInitCallBack, LPVOID CallBack); +__declspec(dllexport) bool FindOEPGenericallyW(wchar_t* szFileName, LPVOID TraceInitCallBack, LPVOID CallBack); // TitanEngine.Importer.functions: -__declspec(dllexport) void __stdcall ImporterCleanup(); -__declspec(dllexport) void __stdcall ImporterSetImageBase(ULONG_PTR ImageBase); -__declspec(dllexport) void __stdcall ImporterSetUnknownDelta(ULONG_PTR DeltaAddress); -__declspec(dllexport) long long __stdcall ImporterGetCurrentDelta(); -__declspec(dllexport) void __stdcall ImporterInit(DWORD MemorySize, ULONG_PTR ImageBase); -__declspec(dllexport) void __stdcall ImporterAddNewDll(char* szDLLName, ULONG_PTR FirstThunk); -__declspec(dllexport) void __stdcall ImporterAddNewAPI(char* szAPIName, ULONG_PTR ThunkValue); -__declspec(dllexport) void __stdcall ImporterAddNewOrdinalAPI(ULONG_PTR OrdinalNumber, ULONG_PTR ThunkValue); -__declspec(dllexport) long __stdcall ImporterGetAddedDllCount(); -__declspec(dllexport) long __stdcall ImporterGetAddedAPICount(); -__declspec(dllexport) void* __stdcall ImporterGetLastAddedDLLName(); -__declspec(dllexport) void __stdcall ImporterMoveIAT(); -__declspec(dllexport) bool __stdcall ImporterExportIAT(ULONG_PTR StorePlace, ULONG_PTR FileMapVA); -__declspec(dllexport) long __stdcall ImporterEstimatedSize(); -__declspec(dllexport) bool __stdcall ImporterExportIATEx(char* szExportFileName, char* szSectionName); -__declspec(dllexport) bool __stdcall ImporterExportIATExW(wchar_t* szExportFileName, char* szSectionName); -__declspec(dllexport) long long __stdcall ImporterFindAPIWriteLocation(char* szAPIName); -__declspec(dllexport) long long __stdcall ImporterFindOrdinalAPIWriteLocation(ULONG_PTR OrdinalNumber); -__declspec(dllexport) long long __stdcall ImporterFindAPIByWriteLocation(ULONG_PTR APIWriteLocation); -__declspec(dllexport) long long __stdcall ImporterFindDLLByWriteLocation(ULONG_PTR APIWriteLocation); -__declspec(dllexport) void* __stdcall ImporterGetDLLName(ULONG_PTR APIAddress); -__declspec(dllexport) void* __stdcall ImporterGetAPIName(ULONG_PTR APIAddress); -__declspec(dllexport) long long __stdcall ImporterGetAPIOrdinalNumber(ULONG_PTR APIAddress); -__declspec(dllexport) void* __stdcall ImporterGetAPINameEx(ULONG_PTR APIAddress, ULONG_PTR DLLBasesList); -__declspec(dllexport) long long __stdcall ImporterGetRemoteAPIAddress(HANDLE hProcess, ULONG_PTR APIAddress); -__declspec(dllexport) long long __stdcall ImporterGetRemoteAPIAddressEx(char* szDLLName, char* szAPIName); -__declspec(dllexport) long long __stdcall ImporterGetLocalAPIAddress(HANDLE hProcess, ULONG_PTR APIAddress); -__declspec(dllexport) void* __stdcall ImporterGetDLLNameFromDebugee(HANDLE hProcess, ULONG_PTR APIAddress); -__declspec(dllexport) void* __stdcall ImporterGetAPINameFromDebugee(HANDLE hProcess, ULONG_PTR APIAddress); -__declspec(dllexport) long long __stdcall ImporterGetAPIOrdinalNumberFromDebugee(HANDLE hProcess, ULONG_PTR APIAddress); -__declspec(dllexport) long __stdcall ImporterGetDLLIndexEx(ULONG_PTR APIAddress, ULONG_PTR DLLBasesList); -__declspec(dllexport) long __stdcall ImporterGetDLLIndex(HANDLE hProcess, ULONG_PTR APIAddress, ULONG_PTR DLLBasesList); -__declspec(dllexport) long long __stdcall ImporterGetRemoteDLLBase(HANDLE hProcess, HMODULE LocalModuleBase); -__declspec(dllexport) bool __stdcall ImporterRelocateWriteLocation(ULONG_PTR AddValue); -__declspec(dllexport) bool __stdcall ImporterIsForwardedAPI(HANDLE hProcess, ULONG_PTR APIAddress); -__declspec(dllexport) void* __stdcall ImporterGetForwardedAPIName(HANDLE hProcess, ULONG_PTR APIAddress); -__declspec(dllexport) void* __stdcall ImporterGetForwardedDLLName(HANDLE hProcess, ULONG_PTR APIAddress); -__declspec(dllexport) long __stdcall ImporterGetForwardedDLLIndex(HANDLE hProcess, ULONG_PTR APIAddress, ULONG_PTR DLLBasesList); -__declspec(dllexport) long long __stdcall ImporterGetForwardedAPIOrdinalNumber(HANDLE hProcess, ULONG_PTR APIAddress); -__declspec(dllexport) long long __stdcall ImporterGetNearestAPIAddress(HANDLE hProcess, ULONG_PTR APIAddress); -__declspec(dllexport) void* __stdcall ImporterGetNearestAPIName(HANDLE hProcess, ULONG_PTR APIAddress); -__declspec(dllexport) bool __stdcall ImporterCopyOriginalIAT(char* szOriginalFile, char* szDumpFile); -__declspec(dllexport) bool __stdcall ImporterCopyOriginalIATW(wchar_t* szOriginalFile, wchar_t* szDumpFile); -__declspec(dllexport) bool __stdcall ImporterLoadImportTable(char* szFileName); -__declspec(dllexport) bool __stdcall ImporterLoadImportTableW(wchar_t* szFileName); -__declspec(dllexport) bool __stdcall ImporterMoveOriginalIAT(char* szOriginalFile, char* szDumpFile, char* szSectionName); -__declspec(dllexport) bool __stdcall ImporterMoveOriginalIATW(wchar_t* szOriginalFile, wchar_t* szDumpFile, char* szSectionName); -__declspec(dllexport) void __stdcall ImporterAutoSearchIAT(HANDLE hProcess, char* szFileName, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, LPVOID pIATStart, LPVOID pIATSize); -__declspec(dllexport) void __stdcall ImporterAutoSearchIATW(HANDLE hProcess, wchar_t* szFileName, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, LPVOID pIATStart, LPVOID pIATSize); -__declspec(dllexport) void __stdcall ImporterAutoSearchIATEx(HANDLE hProcess, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, LPVOID pIATStart, LPVOID pIATSize); -__declspec(dllexport) void __stdcall ImporterEnumAddedData(LPVOID EnumCallBack); -__declspec(dllexport) long __stdcall ImporterAutoFixIATEx(HANDLE hProcess, char* szDumpedFile, char* szSectionName, bool DumpRunningProcess, bool RealignFile, ULONG_PTR EntryPointAddress, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep, bool TryAutoFix, bool FixEliminations, LPVOID UnknownPointerFixCallback); -__declspec(dllexport) long __stdcall ImporterAutoFixIATExW(HANDLE hProcess, wchar_t* szDumpedFile, char* szSectionName, bool DumpRunningProcess, bool RealignFile, ULONG_PTR EntryPointAddress, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep, bool TryAutoFix, bool FixEliminations, LPVOID UnknownPointerFixCallback); -__declspec(dllexport) long __stdcall ImporterAutoFixIAT(HANDLE hProcess, char* szDumpedFile, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep); -__declspec(dllexport) long __stdcall ImporterAutoFixIATW(HANDLE hProcess, wchar_t* szDumpedFile, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep); +__declspec(dllexport) void ImporterCleanup(); +__declspec(dllexport) void ImporterSetImageBase(ULONG_PTR ImageBase); +__declspec(dllexport) void ImporterSetUnknownDelta(ULONG_PTR DeltaAddress); +__declspec(dllexport) long long ImporterGetCurrentDelta(); +__declspec(dllexport) void ImporterInit(DWORD MemorySize, ULONG_PTR ImageBase); +__declspec(dllexport) void ImporterAddNewDll(char* szDLLName, ULONG_PTR FirstThunk); +__declspec(dllexport) void ImporterAddNewAPI(char* szAPIName, ULONG_PTR ThunkValue); +__declspec(dllexport) void ImporterAddNewOrdinalAPI(ULONG_PTR OrdinalNumber, ULONG_PTR ThunkValue); +__declspec(dllexport) long ImporterGetAddedDllCount(); +__declspec(dllexport) long ImporterGetAddedAPICount(); +__declspec(dllexport) void* ImporterGetLastAddedDLLName(); +__declspec(dllexport) void ImporterMoveIAT(); +__declspec(dllexport) bool ImporterExportIAT(ULONG_PTR StorePlace, ULONG_PTR FileMapVA); +__declspec(dllexport) long ImporterEstimatedSize(); +__declspec(dllexport) bool ImporterExportIATEx(char* szExportFileName, char* szSectionName); +__declspec(dllexport) bool ImporterExportIATExW(wchar_t* szExportFileName, char* szSectionName); +__declspec(dllexport) long long ImporterFindAPIWriteLocation(char* szAPIName); +__declspec(dllexport) long long ImporterFindOrdinalAPIWriteLocation(ULONG_PTR OrdinalNumber); +__declspec(dllexport) long long ImporterFindAPIByWriteLocation(ULONG_PTR APIWriteLocation); +__declspec(dllexport) long long ImporterFindDLLByWriteLocation(ULONG_PTR APIWriteLocation); +__declspec(dllexport) void* ImporterGetDLLName(ULONG_PTR APIAddress); +__declspec(dllexport) void* ImporterGetAPIName(ULONG_PTR APIAddress); +__declspec(dllexport) long long ImporterGetAPIOrdinalNumber(ULONG_PTR APIAddress); +__declspec(dllexport) void* ImporterGetAPINameEx(ULONG_PTR APIAddress, ULONG_PTR DLLBasesList); +__declspec(dllexport) long long ImporterGetRemoteAPIAddress(HANDLE hProcess, ULONG_PTR APIAddress); +__declspec(dllexport) long long ImporterGetRemoteAPIAddressEx(char* szDLLName, char* szAPIName); +__declspec(dllexport) long long ImporterGetLocalAPIAddress(HANDLE hProcess, ULONG_PTR APIAddress); +__declspec(dllexport) void* ImporterGetDLLNameFromDebugee(HANDLE hProcess, ULONG_PTR APIAddress); +__declspec(dllexport) void* ImporterGetAPINameFromDebugee(HANDLE hProcess, ULONG_PTR APIAddress); +__declspec(dllexport) long long ImporterGetAPIOrdinalNumberFromDebugee(HANDLE hProcess, ULONG_PTR APIAddress); +__declspec(dllexport) long ImporterGetDLLIndexEx(ULONG_PTR APIAddress, ULONG_PTR DLLBasesList); +__declspec(dllexport) long ImporterGetDLLIndex(HANDLE hProcess, ULONG_PTR APIAddress, ULONG_PTR DLLBasesList); +__declspec(dllexport) long long ImporterGetRemoteDLLBase(HANDLE hProcess, HMODULE LocalModuleBase); +__declspec(dllexport) bool ImporterRelocateWriteLocation(ULONG_PTR AddValue); +__declspec(dllexport) bool ImporterIsForwardedAPI(HANDLE hProcess, ULONG_PTR APIAddress); +__declspec(dllexport) void* ImporterGetForwardedAPIName(HANDLE hProcess, ULONG_PTR APIAddress); +__declspec(dllexport) void* ImporterGetForwardedDLLName(HANDLE hProcess, ULONG_PTR APIAddress); +__declspec(dllexport) long ImporterGetForwardedDLLIndex(HANDLE hProcess, ULONG_PTR APIAddress, ULONG_PTR DLLBasesList); +__declspec(dllexport) long long ImporterGetForwardedAPIOrdinalNumber(HANDLE hProcess, ULONG_PTR APIAddress); +__declspec(dllexport) long long ImporterGetNearestAPIAddress(HANDLE hProcess, ULONG_PTR APIAddress); +__declspec(dllexport) void* ImporterGetNearestAPIName(HANDLE hProcess, ULONG_PTR APIAddress); +__declspec(dllexport) bool ImporterCopyOriginalIAT(char* szOriginalFile, char* szDumpFile); +__declspec(dllexport) bool ImporterCopyOriginalIATW(wchar_t* szOriginalFile, wchar_t* szDumpFile); +__declspec(dllexport) bool ImporterLoadImportTable(char* szFileName); +__declspec(dllexport) bool ImporterLoadImportTableW(wchar_t* szFileName); +__declspec(dllexport) bool ImporterMoveOriginalIAT(char* szOriginalFile, char* szDumpFile, char* szSectionName); +__declspec(dllexport) bool ImporterMoveOriginalIATW(wchar_t* szOriginalFile, wchar_t* szDumpFile, char* szSectionName); +__declspec(dllexport) void ImporterAutoSearchIAT(HANDLE hProcess, char* szFileName, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, LPVOID pIATStart, LPVOID pIATSize); +__declspec(dllexport) void ImporterAutoSearchIATW(HANDLE hProcess, wchar_t* szFileName, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, LPVOID pIATStart, LPVOID pIATSize); +__declspec(dllexport) void ImporterAutoSearchIATEx(HANDLE hProcess, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, LPVOID pIATStart, LPVOID pIATSize); +__declspec(dllexport) void ImporterEnumAddedData(LPVOID EnumCallBack); +__declspec(dllexport) long ImporterAutoFixIATEx(HANDLE hProcess, char* szDumpedFile, char* szSectionName, bool DumpRunningProcess, bool RealignFile, ULONG_PTR EntryPointAddress, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep, bool TryAutoFix, bool FixEliminations, LPVOID UnknownPointerFixCallback); +__declspec(dllexport) long ImporterAutoFixIATExW(HANDLE hProcess, wchar_t* szDumpedFile, char* szSectionName, bool DumpRunningProcess, bool RealignFile, ULONG_PTR EntryPointAddress, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep, bool TryAutoFix, bool FixEliminations, LPVOID UnknownPointerFixCallback); +__declspec(dllexport) long ImporterAutoFixIAT(HANDLE hProcess, char* szDumpedFile, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep); +__declspec(dllexport) long ImporterAutoFixIATW(HANDLE hProcess, wchar_t* szDumpedFile, ULONG_PTR ImageBase, ULONG_PTR SearchStart, DWORD SearchSize, DWORD SearchStep); // Global.Engine.Hook.functions: -__declspec(dllexport) bool __stdcall HooksSafeTransitionEx(LPVOID HookAddressArray, int NumberOfHooks, bool TransitionStart); -__declspec(dllexport) bool __stdcall HooksSafeTransition(LPVOID HookAddress, bool TransitionStart); -__declspec(dllexport) bool __stdcall HooksIsAddressRedirected(LPVOID HookAddress); -__declspec(dllexport) void* __stdcall HooksGetTrampolineAddress(LPVOID HookAddress); -__declspec(dllexport) void* __stdcall HooksGetHookEntryDetails(LPVOID HookAddress); -__declspec(dllexport) bool __stdcall HooksInsertNewRedirection(LPVOID HookAddress, LPVOID RedirectTo, int HookType); -__declspec(dllexport) bool __stdcall HooksInsertNewIATRedirectionEx(ULONG_PTR FileMapVA, ULONG_PTR LoadedModuleBase, char* szHookFunction, LPVOID RedirectTo); -__declspec(dllexport) bool __stdcall HooksInsertNewIATRedirection(char* szModuleName, char* szHookFunction, LPVOID RedirectTo); -__declspec(dllexport) bool __stdcall HooksRemoveRedirection(LPVOID HookAddress, bool RemoveAll); -__declspec(dllexport) bool __stdcall HooksRemoveRedirectionsForModule(HMODULE ModuleBase); -__declspec(dllexport) bool __stdcall HooksRemoveIATRedirection(char* szModuleName, char* szHookFunction, bool RemoveAll); -__declspec(dllexport) bool __stdcall HooksDisableRedirection(LPVOID HookAddress, bool DisableAll); -__declspec(dllexport) bool __stdcall HooksDisableRedirectionsForModule(HMODULE ModuleBase); -__declspec(dllexport) bool __stdcall HooksDisableIATRedirection(char* szModuleName, char* szHookFunction, bool DisableAll); -__declspec(dllexport) bool __stdcall HooksEnableRedirection(LPVOID HookAddress, bool EnableAll); -__declspec(dllexport) bool __stdcall HooksEnableRedirectionsForModule(HMODULE ModuleBase); -__declspec(dllexport) bool __stdcall HooksEnableIATRedirection(char* szModuleName, char* szHookFunction, bool EnableAll); -__declspec(dllexport) void __stdcall HooksScanModuleMemory(HMODULE ModuleBase, LPVOID CallBack); -__declspec(dllexport) void __stdcall HooksScanEntireProcessMemory(LPVOID CallBack); -__declspec(dllexport) void __stdcall HooksScanEntireProcessMemoryEx(); +__declspec(dllexport) bool HooksSafeTransitionEx(LPVOID HookAddressArray, int NumberOfHooks, bool TransitionStart); +__declspec(dllexport) bool HooksSafeTransition(LPVOID HookAddress, bool TransitionStart); +__declspec(dllexport) bool HooksIsAddressRedirected(LPVOID HookAddress); +__declspec(dllexport) void* HooksGetTrampolineAddress(LPVOID HookAddress); +__declspec(dllexport) void* HooksGetHookEntryDetails(LPVOID HookAddress); +__declspec(dllexport) bool HooksInsertNewRedirection(LPVOID HookAddress, LPVOID RedirectTo, int HookType); +__declspec(dllexport) bool HooksInsertNewIATRedirectionEx(ULONG_PTR FileMapVA, ULONG_PTR LoadedModuleBase, char* szHookFunction, LPVOID RedirectTo); +__declspec(dllexport) bool HooksInsertNewIATRedirection(char* szModuleName, char* szHookFunction, LPVOID RedirectTo); +__declspec(dllexport) bool HooksRemoveRedirection(LPVOID HookAddress, bool RemoveAll); +__declspec(dllexport) bool HooksRemoveRedirectionsForModule(HMODULE ModuleBase); +__declspec(dllexport) bool HooksRemoveIATRedirection(char* szModuleName, char* szHookFunction, bool RemoveAll); +__declspec(dllexport) bool HooksDisableRedirection(LPVOID HookAddress, bool DisableAll); +__declspec(dllexport) bool HooksDisableRedirectionsForModule(HMODULE ModuleBase); +__declspec(dllexport) bool HooksDisableIATRedirection(char* szModuleName, char* szHookFunction, bool DisableAll); +__declspec(dllexport) bool HooksEnableRedirection(LPVOID HookAddress, bool EnableAll); +__declspec(dllexport) bool HooksEnableRedirectionsForModule(HMODULE ModuleBase); +__declspec(dllexport) bool HooksEnableIATRedirection(char* szModuleName, char* szHookFunction, bool EnableAll); +__declspec(dllexport) void HooksScanModuleMemory(HMODULE ModuleBase, LPVOID CallBack); +__declspec(dllexport) void HooksScanEntireProcessMemory(LPVOID CallBack); +__declspec(dllexport) void HooksScanEntireProcessMemoryEx(); // TitanEngine.Tracer.functions: -__declspec(dllexport) void __stdcall TracerInit(); -__declspec(dllexport) long long __stdcall TracerLevel1(HANDLE hProcess, ULONG_PTR AddressToTrace); -__declspec(dllexport) long long __stdcall HashTracerLevel1(HANDLE hProcess, ULONG_PTR AddressToTrace, DWORD InputNumberOfInstructions); -__declspec(dllexport) long __stdcall TracerDetectRedirection(HANDLE hProcess, ULONG_PTR AddressToTrace); -__declspec(dllexport) long long __stdcall TracerFixKnownRedirection(HANDLE hProcess, ULONG_PTR AddressToTrace, DWORD RedirectionId); -__declspec(dllexport) long long __stdcall TracerFixRedirectionViaModule(HMODULE hModuleHandle, HANDLE hProcess, ULONG_PTR AddressToTrace, DWORD IdParameter); -__declspec(dllexport) long __stdcall TracerFixRedirectionViaImpRecPlugin(HANDLE hProcess, char* szPluginName, ULONG_PTR AddressToTrace); +__declspec(dllexport) void TracerInit(); +__declspec(dllexport) long long TracerLevel1(HANDLE hProcess, ULONG_PTR AddressToTrace); +__declspec(dllexport) long long HashTracerLevel1(HANDLE hProcess, ULONG_PTR AddressToTrace, DWORD InputNumberOfInstructions); +__declspec(dllexport) long TracerDetectRedirection(HANDLE hProcess, ULONG_PTR AddressToTrace); +__declspec(dllexport) long long TracerFixKnownRedirection(HANDLE hProcess, ULONG_PTR AddressToTrace, DWORD RedirectionId); +__declspec(dllexport) long long TracerFixRedirectionViaModule(HMODULE hModuleHandle, HANDLE hProcess, ULONG_PTR AddressToTrace, DWORD IdParameter); +__declspec(dllexport) long TracerFixRedirectionViaImpRecPlugin(HANDLE hProcess, char* szPluginName, ULONG_PTR AddressToTrace); // TitanEngine.Exporter.functions: -__declspec(dllexport) void __stdcall ExporterCleanup(); -__declspec(dllexport) void __stdcall ExporterSetImageBase(ULONG_PTR ImageBase); -__declspec(dllexport) void __stdcall ExporterInit(DWORD MemorySize, ULONG_PTR ImageBase, DWORD ExportOrdinalBase, char* szExportModuleName); -__declspec(dllexport) bool __stdcall ExporterAddNewExport(char* szExportName, DWORD ExportRelativeAddress); -__declspec(dllexport) bool __stdcall ExporterAddNewOrdinalExport(DWORD OrdinalNumber, DWORD ExportRelativeAddress); -__declspec(dllexport) long __stdcall ExporterGetAddedExportCount(); -__declspec(dllexport) long __stdcall ExporterEstimatedSize(); -__declspec(dllexport) bool __stdcall ExporterBuildExportTable(ULONG_PTR StorePlace, ULONG_PTR FileMapVA); -__declspec(dllexport) bool __stdcall ExporterBuildExportTableEx(char* szExportFileName, char* szSectionName); -__declspec(dllexport) bool __stdcall ExporterBuildExportTableExW(wchar_t* szExportFileName, char* szSectionName); -__declspec(dllexport) bool __stdcall ExporterLoadExportTable(char* szFileName); -__declspec(dllexport) bool __stdcall ExporterLoadExportTableW(wchar_t* szFileName); +__declspec(dllexport) void ExporterCleanup(); +__declspec(dllexport) void ExporterSetImageBase(ULONG_PTR ImageBase); +__declspec(dllexport) void ExporterInit(DWORD MemorySize, ULONG_PTR ImageBase, DWORD ExportOrdinalBase, char* szExportModuleName); +__declspec(dllexport) bool ExporterAddNewExport(char* szExportName, DWORD ExportRelativeAddress); +__declspec(dllexport) bool ExporterAddNewOrdinalExport(DWORD OrdinalNumber, DWORD ExportRelativeAddress); +__declspec(dllexport) long ExporterGetAddedExportCount(); +__declspec(dllexport) long ExporterEstimatedSize(); +__declspec(dllexport) bool ExporterBuildExportTable(ULONG_PTR StorePlace, ULONG_PTR FileMapVA); +__declspec(dllexport) bool ExporterBuildExportTableEx(char* szExportFileName, char* szSectionName); +__declspec(dllexport) bool ExporterBuildExportTableExW(wchar_t* szExportFileName, char* szSectionName); +__declspec(dllexport) bool ExporterLoadExportTable(char* szFileName); +__declspec(dllexport) bool ExporterLoadExportTableW(wchar_t* szFileName); // TitanEngine.Librarian.functions: -__declspec(dllexport) bool __stdcall LibrarianSetBreakPoint(char* szLibraryName, DWORD bpxType, bool SingleShoot, LPVOID bpxCallBack); -__declspec(dllexport) bool __stdcall LibrarianRemoveBreakPoint(char* szLibraryName, DWORD bpxType); -__declspec(dllexport) void* __stdcall LibrarianGetLibraryInfo(char* szLibraryName); -__declspec(dllexport) void* __stdcall LibrarianGetLibraryInfoW(wchar_t* szLibraryName); -__declspec(dllexport) void* __stdcall LibrarianGetLibraryInfoEx(void* BaseOfDll); -__declspec(dllexport) void* __stdcall LibrarianGetLibraryInfoExW(void* BaseOfDll); -__declspec(dllexport) void __stdcall LibrarianEnumLibraryInfo(void* EnumCallBack); -__declspec(dllexport) void __stdcall LibrarianEnumLibraryInfoW(void* EnumCallBack); +__declspec(dllexport) bool LibrarianSetBreakPoint(char* szLibraryName, DWORD bpxType, bool SingleShoot, LPVOID bpxCallBack); +__declspec(dllexport) bool LibrarianRemoveBreakPoint(char* szLibraryName, DWORD bpxType); +__declspec(dllexport) void* LibrarianGetLibraryInfo(char* szLibraryName); +__declspec(dllexport) void* LibrarianGetLibraryInfoW(wchar_t* szLibraryName); +__declspec(dllexport) void* LibrarianGetLibraryInfoEx(void* BaseOfDll); +__declspec(dllexport) void* LibrarianGetLibraryInfoExW(void* BaseOfDll); +__declspec(dllexport) void LibrarianEnumLibraryInfo(void* EnumCallBack); +__declspec(dllexport) void LibrarianEnumLibraryInfoW(void* EnumCallBack); // TitanEngine.Process.functions: -__declspec(dllexport) long __stdcall GetActiveProcessId(char* szImageName); -__declspec(dllexport) long __stdcall GetActiveProcessIdW(wchar_t* szImageName); -__declspec(dllexport) void __stdcall EnumProcessesWithLibrary(char* szLibraryName, void* EnumFunction); +__declspec(dllexport) long GetActiveProcessId(char* szImageName); +__declspec(dllexport) long GetActiveProcessIdW(wchar_t* szImageName); +__declspec(dllexport) void EnumProcessesWithLibrary(char* szLibraryName, void* EnumFunction); // TitanEngine.TLSFixer.functions: -__declspec(dllexport) bool __stdcall TLSBreakOnCallBack(LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks, LPVOID bpxCallBack); -__declspec(dllexport) bool __stdcall TLSGrabCallBackData(char* szFileName, LPVOID ArrayOfCallBacks, LPDWORD NumberOfCallBacks); -__declspec(dllexport) bool __stdcall TLSGrabCallBackDataW(wchar_t* szFileName, LPVOID ArrayOfCallBacks, LPDWORD NumberOfCallBacks); -__declspec(dllexport) bool __stdcall TLSBreakOnCallBackEx(char* szFileName, LPVOID bpxCallBack); -__declspec(dllexport) bool __stdcall TLSBreakOnCallBackExW(wchar_t* szFileName, LPVOID bpxCallBack); -__declspec(dllexport) bool __stdcall TLSRemoveCallback(char* szFileName); -__declspec(dllexport) bool __stdcall TLSRemoveCallbackW(wchar_t* szFileName); -__declspec(dllexport) bool __stdcall TLSRemoveTable(char* szFileName); -__declspec(dllexport) bool __stdcall TLSRemoveTableW(wchar_t* szFileName); -__declspec(dllexport) bool __stdcall TLSBackupData(char* szFileName); -__declspec(dllexport) bool __stdcall TLSBackupDataW(wchar_t* szFileName); -__declspec(dllexport) bool __stdcall TLSRestoreData(); -__declspec(dllexport) bool __stdcall TLSBuildNewTable(ULONG_PTR FileMapVA, ULONG_PTR StorePlace, ULONG_PTR StorePlaceRVA, LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks); -__declspec(dllexport) bool __stdcall TLSBuildNewTableEx(char* szFileName, char* szSectionName, LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks); -__declspec(dllexport) bool __stdcall TLSBuildNewTableExW(wchar_t* szFileName, char* szSectionName, LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks); +__declspec(dllexport) bool TLSBreakOnCallBack(LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks, LPVOID bpxCallBack); +__declspec(dllexport) bool TLSGrabCallBackData(char* szFileName, LPVOID ArrayOfCallBacks, LPDWORD NumberOfCallBacks); +__declspec(dllexport) bool TLSGrabCallBackDataW(wchar_t* szFileName, LPVOID ArrayOfCallBacks, LPDWORD NumberOfCallBacks); +__declspec(dllexport) bool TLSBreakOnCallBackEx(char* szFileName, LPVOID bpxCallBack); +__declspec(dllexport) bool TLSBreakOnCallBackExW(wchar_t* szFileName, LPVOID bpxCallBack); +__declspec(dllexport) bool TLSRemoveCallback(char* szFileName); +__declspec(dllexport) bool TLSRemoveCallbackW(wchar_t* szFileName); +__declspec(dllexport) bool TLSRemoveTable(char* szFileName); +__declspec(dllexport) bool TLSRemoveTableW(wchar_t* szFileName); +__declspec(dllexport) bool TLSBackupData(char* szFileName); +__declspec(dllexport) bool TLSBackupDataW(wchar_t* szFileName); +__declspec(dllexport) bool TLSRestoreData(); +__declspec(dllexport) bool TLSBuildNewTable(ULONG_PTR FileMapVA, ULONG_PTR StorePlace, ULONG_PTR StorePlaceRVA, LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks); +__declspec(dllexport) bool TLSBuildNewTableEx(char* szFileName, char* szSectionName, LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks); +__declspec(dllexport) bool TLSBuildNewTableExW(wchar_t* szFileName, char* szSectionName, LPVOID ArrayOfCallBacks, DWORD NumberOfCallBacks); // TitanEngine.TranslateName.functions: -__declspec(dllexport) void* __stdcall TranslateNativeName(char* szNativeName); -__declspec(dllexport) void* __stdcall TranslateNativeNameW(wchar_t* szNativeName); +__declspec(dllexport) void* TranslateNativeName(char* szNativeName); +__declspec(dllexport) void* TranslateNativeNameW(wchar_t* szNativeName); // TitanEngine.Handler.functions: -__declspec(dllexport) long __stdcall HandlerGetActiveHandleCount(DWORD ProcessId); -__declspec(dllexport) bool __stdcall HandlerIsHandleOpen(DWORD ProcessId, HANDLE hHandle); -__declspec(dllexport) void* __stdcall HandlerGetHandleName(HANDLE hProcess, DWORD ProcessId, HANDLE hHandle, bool TranslateName); -__declspec(dllexport) void* __stdcall HandlerGetHandleNameW(HANDLE hProcess, DWORD ProcessId, HANDLE hHandle, bool TranslateName); -__declspec(dllexport) long __stdcall HandlerEnumerateOpenHandles(DWORD ProcessId, LPVOID HandleBuffer, DWORD MaxHandleCount); -__declspec(dllexport) long long __stdcall HandlerGetHandleDetails(HANDLE hProcess, DWORD ProcessId, HANDLE hHandle, DWORD InformationReturn); -__declspec(dllexport) bool __stdcall HandlerCloseRemoteHandle(HANDLE hProcess, HANDLE hHandle); -__declspec(dllexport) long __stdcall HandlerEnumerateLockHandles(char* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated, LPVOID HandleDataBuffer, DWORD MaxHandleCount); -__declspec(dllexport) long __stdcall HandlerEnumerateLockHandlesW(wchar_t* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated, LPVOID HandleDataBuffer, DWORD MaxHandleCount); -__declspec(dllexport) bool __stdcall HandlerCloseAllLockHandles(char* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated); -__declspec(dllexport) bool __stdcall HandlerCloseAllLockHandlesW(wchar_t* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated); -__declspec(dllexport) bool __stdcall HandlerIsFileLocked(char* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated); -__declspec(dllexport) bool __stdcall HandlerIsFileLockedW(wchar_t* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated); +__declspec(dllexport) long HandlerGetActiveHandleCount(DWORD ProcessId); +__declspec(dllexport) bool HandlerIsHandleOpen(DWORD ProcessId, HANDLE hHandle); +__declspec(dllexport) void* HandlerGetHandleName(HANDLE hProcess, DWORD ProcessId, HANDLE hHandle, bool TranslateName); +__declspec(dllexport) void* HandlerGetHandleNameW(HANDLE hProcess, DWORD ProcessId, HANDLE hHandle, bool TranslateName); +__declspec(dllexport) long HandlerEnumerateOpenHandles(DWORD ProcessId, LPVOID HandleBuffer, DWORD MaxHandleCount); +__declspec(dllexport) long long HandlerGetHandleDetails(HANDLE hProcess, DWORD ProcessId, HANDLE hHandle, DWORD InformationReturn); +__declspec(dllexport) bool HandlerCloseRemoteHandle(HANDLE hProcess, HANDLE hHandle); +__declspec(dllexport) long HandlerEnumerateLockHandles(char* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated, LPVOID HandleDataBuffer, DWORD MaxHandleCount); +__declspec(dllexport) long HandlerEnumerateLockHandlesW(wchar_t* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated, LPVOID HandleDataBuffer, DWORD MaxHandleCount); +__declspec(dllexport) bool HandlerCloseAllLockHandles(char* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated); +__declspec(dllexport) bool HandlerCloseAllLockHandlesW(wchar_t* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated); +__declspec(dllexport) bool HandlerIsFileLocked(char* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated); +__declspec(dllexport) bool HandlerIsFileLockedW(wchar_t* szFileOrFolderName, bool NameIsFolder, bool NameIsTranslated); // TitanEngine.Handler[Mutex].functions: -__declspec(dllexport) long __stdcall HandlerEnumerateOpenMutexes(HANDLE hProcess, DWORD ProcessId, LPVOID HandleBuffer, DWORD MaxHandleCount); -__declspec(dllexport) long long __stdcall HandlerGetOpenMutexHandle(HANDLE hProcess, DWORD ProcessId, char* szMutexString); -__declspec(dllexport) long long __stdcall HandlerGetOpenMutexHandleW(HANDLE hProcess, DWORD ProcessId, wchar_t* szMutexString); -__declspec(dllexport) long __stdcall HandlerGetProcessIdWhichCreatedMutex(char* szMutexString); -__declspec(dllexport) long __stdcall HandlerGetProcessIdWhichCreatedMutexW(wchar_t* szMutexString); +__declspec(dllexport) long HandlerEnumerateOpenMutexes(HANDLE hProcess, DWORD ProcessId, LPVOID HandleBuffer, DWORD MaxHandleCount); +__declspec(dllexport) long long HandlerGetOpenMutexHandle(HANDLE hProcess, DWORD ProcessId, char* szMutexString); +__declspec(dllexport) long long HandlerGetOpenMutexHandleW(HANDLE hProcess, DWORD ProcessId, wchar_t* szMutexString); +__declspec(dllexport) long HandlerGetProcessIdWhichCreatedMutex(char* szMutexString); +__declspec(dllexport) long HandlerGetProcessIdWhichCreatedMutexW(wchar_t* szMutexString); // TitanEngine.Injector.functions: -__declspec(dllexport) bool __stdcall RemoteLoadLibrary(HANDLE hProcess, char* szLibraryFile, bool WaitForThreadExit); -__declspec(dllexport) bool __stdcall RemoteLoadLibraryW(HANDLE hProcess, wchar_t* szLibraryFile, bool WaitForThreadExit); -__declspec(dllexport) bool __stdcall RemoteFreeLibrary(HANDLE hProcess, HMODULE hModule, char* szLibraryFile, bool WaitForThreadExit); -__declspec(dllexport) bool __stdcall RemoteFreeLibraryW(HANDLE hProcess, HMODULE hModule, wchar_t* szLibraryFile, bool WaitForThreadExit); -__declspec(dllexport) bool __stdcall RemoteExitProcess(HANDLE hProcess, DWORD ExitCode); +__declspec(dllexport) bool RemoteLoadLibrary(HANDLE hProcess, char* szLibraryFile, bool WaitForThreadExit); +__declspec(dllexport) bool RemoteLoadLibraryW(HANDLE hProcess, wchar_t* szLibraryFile, bool WaitForThreadExit); +__declspec(dllexport) bool RemoteFreeLibrary(HANDLE hProcess, HMODULE hModule, char* szLibraryFile, bool WaitForThreadExit); +__declspec(dllexport) bool RemoteFreeLibraryW(HANDLE hProcess, HMODULE hModule, wchar_t* szLibraryFile, bool WaitForThreadExit); +__declspec(dllexport) bool RemoteExitProcess(HANDLE hProcess, DWORD ExitCode); // TitanEngine.StaticUnpacker.functions: -__declspec(dllexport) bool __stdcall StaticFileLoad(char* szFileName, DWORD DesiredAccess, bool SimulateLoad, LPHANDLE FileHandle, LPDWORD LoadedSize, LPHANDLE FileMap, PULONG_PTR FileMapVA); -__declspec(dllexport) bool __stdcall StaticFileLoadW(wchar_t* szFileName, DWORD DesiredAccess, bool SimulateLoad, LPHANDLE FileHandle, LPDWORD LoadedSize, LPHANDLE FileMap, PULONG_PTR FileMapVA); -__declspec(dllexport) bool __stdcall StaticFileUnload(char* szFileName, bool CommitChanges, HANDLE FileHandle, DWORD LoadedSize, HANDLE FileMap, ULONG_PTR FileMapVA); -__declspec(dllexport) bool __stdcall StaticFileUnloadW(wchar_t* szFileName, bool CommitChanges, HANDLE FileHandle, DWORD LoadedSize, HANDLE FileMap, ULONG_PTR FileMapVA); -__declspec(dllexport) bool __stdcall StaticFileOpen(char* szFileName, DWORD DesiredAccess, LPHANDLE FileHandle, LPDWORD FileSizeLow, LPDWORD FileSizeHigh); -__declspec(dllexport) bool __stdcall StaticFileOpenW(wchar_t* szFileName, DWORD DesiredAccess, LPHANDLE FileHandle, LPDWORD FileSizeLow, LPDWORD FileSizeHigh); -__declspec(dllexport) bool __stdcall StaticFileGetContent(HANDLE FileHandle, DWORD FilePositionLow, LPDWORD FilePositionHigh, void* Buffer, DWORD Size); -__declspec(dllexport) void __stdcall StaticFileClose(HANDLE FileHandle); -__declspec(dllexport) void __stdcall StaticMemoryDecrypt(LPVOID MemoryStart, DWORD MemorySize, DWORD DecryptionType, DWORD DecryptionKeySize, ULONG_PTR DecryptionKey); -__declspec(dllexport) void __stdcall StaticMemoryDecryptEx(LPVOID MemoryStart, DWORD MemorySize, DWORD DecryptionKeySize, void* DecryptionCallBack); -__declspec(dllexport) void __stdcall StaticMemoryDecryptSpecial(LPVOID MemoryStart, DWORD MemorySize, DWORD DecryptionKeySize, DWORD SpecDecryptionType, void* DecryptionCallBack); -__declspec(dllexport) void __stdcall StaticSectionDecrypt(ULONG_PTR FileMapVA, DWORD SectionNumber, bool SimulateLoad, DWORD DecryptionType, DWORD DecryptionKeySize, ULONG_PTR DecryptionKey); -__declspec(dllexport) bool __stdcall StaticMemoryDecompress(void* Source, DWORD SourceSize, void* Destination, DWORD DestinationSize, int Algorithm); -__declspec(dllexport) bool __stdcall StaticRawMemoryCopy(HANDLE hFile, ULONG_PTR FileMapVA, ULONG_PTR VitualAddressToCopy, DWORD Size, bool AddressIsRVA, char* szDumpFileName); -__declspec(dllexport) bool __stdcall StaticRawMemoryCopyW(HANDLE hFile, ULONG_PTR FileMapVA, ULONG_PTR VitualAddressToCopy, DWORD Size, bool AddressIsRVA, wchar_t* szDumpFileName); -__declspec(dllexport) bool __stdcall StaticRawMemoryCopyEx(HANDLE hFile, DWORD RawAddressToCopy, DWORD Size, char* szDumpFileName); -__declspec(dllexport) bool __stdcall StaticRawMemoryCopyExW(HANDLE hFile, DWORD RawAddressToCopy, DWORD Size, wchar_t* szDumpFileName); -__declspec(dllexport) bool __stdcall StaticRawMemoryCopyEx64(HANDLE hFile, DWORD64 RawAddressToCopy, DWORD64 Size, char* szDumpFileName); -__declspec(dllexport) bool __stdcall StaticRawMemoryCopyEx64W(HANDLE hFile, DWORD64 RawAddressToCopy, DWORD64 Size, wchar_t* szDumpFileName); -__declspec(dllexport) bool __stdcall StaticHashMemory(void* MemoryToHash, DWORD SizeOfMemory, void* HashDigest, bool OutputString, int Algorithm); -__declspec(dllexport) bool __stdcall StaticHashFileW(wchar_t* szFileName, char* HashDigest, bool OutputString, int Algorithm); -__declspec(dllexport) bool __stdcall StaticHashFile(char* szFileName, char* HashDigest, bool OutputString, int Algorithm); +__declspec(dllexport) bool StaticFileLoad(char* szFileName, DWORD DesiredAccess, bool SimulateLoad, LPHANDLE FileHandle, LPDWORD LoadedSize, LPHANDLE FileMap, PULONG_PTR FileMapVA); +__declspec(dllexport) bool StaticFileLoadW(wchar_t* szFileName, DWORD DesiredAccess, bool SimulateLoad, LPHANDLE FileHandle, LPDWORD LoadedSize, LPHANDLE FileMap, PULONG_PTR FileMapVA); +__declspec(dllexport) bool StaticFileUnload(char* szFileName, bool CommitChanges, HANDLE FileHandle, DWORD LoadedSize, HANDLE FileMap, ULONG_PTR FileMapVA); +__declspec(dllexport) bool StaticFileUnloadW(wchar_t* szFileName, bool CommitChanges, HANDLE FileHandle, DWORD LoadedSize, HANDLE FileMap, ULONG_PTR FileMapVA); +__declspec(dllexport) bool StaticFileOpen(char* szFileName, DWORD DesiredAccess, LPHANDLE FileHandle, LPDWORD FileSizeLow, LPDWORD FileSizeHigh); +__declspec(dllexport) bool StaticFileOpenW(wchar_t* szFileName, DWORD DesiredAccess, LPHANDLE FileHandle, LPDWORD FileSizeLow, LPDWORD FileSizeHigh); +__declspec(dllexport) bool StaticFileGetContent(HANDLE FileHandle, DWORD FilePositionLow, LPDWORD FilePositionHigh, void* Buffer, DWORD Size); +__declspec(dllexport) void StaticFileClose(HANDLE FileHandle); +__declspec(dllexport) void StaticMemoryDecrypt(LPVOID MemoryStart, DWORD MemorySize, DWORD DecryptionType, DWORD DecryptionKeySize, ULONG_PTR DecryptionKey); +__declspec(dllexport) void StaticMemoryDecryptEx(LPVOID MemoryStart, DWORD MemorySize, DWORD DecryptionKeySize, void* DecryptionCallBack); +__declspec(dllexport) void StaticMemoryDecryptSpecial(LPVOID MemoryStart, DWORD MemorySize, DWORD DecryptionKeySize, DWORD SpecDecryptionType, void* DecryptionCallBack); +__declspec(dllexport) void StaticSectionDecrypt(ULONG_PTR FileMapVA, DWORD SectionNumber, bool SimulateLoad, DWORD DecryptionType, DWORD DecryptionKeySize, ULONG_PTR DecryptionKey); +__declspec(dllexport) bool StaticMemoryDecompress(void* Source, DWORD SourceSize, void* Destination, DWORD DestinationSize, int Algorithm); +__declspec(dllexport) bool StaticRawMemoryCopy(HANDLE hFile, ULONG_PTR FileMapVA, ULONG_PTR VitualAddressToCopy, DWORD Size, bool AddressIsRVA, char* szDumpFileName); +__declspec(dllexport) bool StaticRawMemoryCopyW(HANDLE hFile, ULONG_PTR FileMapVA, ULONG_PTR VitualAddressToCopy, DWORD Size, bool AddressIsRVA, wchar_t* szDumpFileName); +__declspec(dllexport) bool StaticRawMemoryCopyEx(HANDLE hFile, DWORD RawAddressToCopy, DWORD Size, char* szDumpFileName); +__declspec(dllexport) bool StaticRawMemoryCopyExW(HANDLE hFile, DWORD RawAddressToCopy, DWORD Size, wchar_t* szDumpFileName); +__declspec(dllexport) bool StaticRawMemoryCopyEx64(HANDLE hFile, DWORD64 RawAddressToCopy, DWORD64 Size, char* szDumpFileName); +__declspec(dllexport) bool StaticRawMemoryCopyEx64W(HANDLE hFile, DWORD64 RawAddressToCopy, DWORD64 Size, wchar_t* szDumpFileName); +__declspec(dllexport) bool StaticHashMemory(void* MemoryToHash, DWORD SizeOfMemory, void* HashDigest, bool OutputString, int Algorithm); +__declspec(dllexport) bool StaticHashFileW(wchar_t* szFileName, char* HashDigest, bool OutputString, int Algorithm); +__declspec(dllexport) bool StaticHashFile(char* szFileName, char* HashDigest, bool OutputString, int Algorithm); // TitanEngine.Engine.functions: -__declspec(dllexport) void __stdcall EngineUnpackerInitialize(char* szFileName, char* szUnpackedFileName, bool DoLogData, bool DoRealignFile, bool DoMoveOverlay, void* EntryCallBack); -__declspec(dllexport) void __stdcall EngineUnpackerInitializeW(wchar_t* szFileName, wchar_t* szUnpackedFileName, bool DoLogData, bool DoRealignFile, bool DoMoveOverlay, void* EntryCallBack); -__declspec(dllexport) bool __stdcall EngineUnpackerSetBreakCondition(void* SearchStart, DWORD SearchSize, void* SearchPattern, DWORD PatternSize, DWORD PatternDelta, ULONG_PTR BreakType, bool SingleBreak, DWORD Parameter1, DWORD Parameter2); -__declspec(dllexport) void __stdcall EngineUnpackerSetEntryPointAddress(ULONG_PTR UnpackedEntryPointAddress); -__declspec(dllexport) void __stdcall EngineUnpackerFinalizeUnpacking(); +__declspec(dllexport) void EngineUnpackerInitialize(char* szFileName, char* szUnpackedFileName, bool DoLogData, bool DoRealignFile, bool DoMoveOverlay, void* EntryCallBack); +__declspec(dllexport) void EngineUnpackerInitializeW(wchar_t* szFileName, wchar_t* szUnpackedFileName, bool DoLogData, bool DoRealignFile, bool DoMoveOverlay, void* EntryCallBack); +__declspec(dllexport) bool EngineUnpackerSetBreakCondition(void* SearchStart, DWORD SearchSize, void* SearchPattern, DWORD PatternSize, DWORD PatternDelta, ULONG_PTR BreakType, bool SingleBreak, DWORD Parameter1, DWORD Parameter2); +__declspec(dllexport) void EngineUnpackerSetEntryPointAddress(ULONG_PTR UnpackedEntryPointAddress); +__declspec(dllexport) void EngineUnpackerFinalizeUnpacking(); // TitanEngine.Engine.functions: -__declspec(dllexport) void __stdcall SetEngineVariable(DWORD VariableId, bool VariableSet); -__declspec(dllexport) bool __stdcall EngineCreateMissingDependencies(char* szFileName, char* szOutputFolder, bool LogCreatedFiles); -__declspec(dllexport) bool __stdcall EngineCreateMissingDependenciesW(wchar_t* szFileName, wchar_t* szOutputFolder, bool LogCreatedFiles); -__declspec(dllexport) bool __stdcall EngineFakeMissingDependencies(HANDLE hProcess); -__declspec(dllexport) bool __stdcall EngineDeleteCreatedDependencies(); -__declspec(dllexport) bool __stdcall EngineCreateUnpackerWindow(char* WindowUnpackerTitle, char* WindowUnpackerLongTitle, char* WindowUnpackerName, char* WindowUnpackerAuthor, void* StartUnpackingCallBack); -__declspec(dllexport) void __stdcall EngineAddUnpackerWindowLogMessage(char* szLogMessage); +__declspec(dllexport) void SetEngineVariable(DWORD VariableId, bool VariableSet); +__declspec(dllexport) bool EngineCreateMissingDependencies(char* szFileName, char* szOutputFolder, bool LogCreatedFiles); +__declspec(dllexport) bool EngineCreateMissingDependenciesW(wchar_t* szFileName, wchar_t* szOutputFolder, bool LogCreatedFiles); +__declspec(dllexport) bool EngineFakeMissingDependencies(HANDLE hProcess); +__declspec(dllexport) bool EngineDeleteCreatedDependencies(); +__declspec(dllexport) bool EngineCreateUnpackerWindow(char* WindowUnpackerTitle, char* WindowUnpackerLongTitle, char* WindowUnpackerName, char* WindowUnpackerAuthor, void* StartUnpackingCallBack); +__declspec(dllexport) void EngineAddUnpackerWindowLogMessage(char* szLogMessage); // Global.Engine.Extension.Functions: -__declspec(dllexport) bool __stdcall ExtensionManagerIsPluginLoaded(char* szPluginName); -__declspec(dllexport) bool __stdcall ExtensionManagerIsPluginEnabled(char* szPluginName); -__declspec(dllexport) bool __stdcall ExtensionManagerDisableAllPlugins(); -__declspec(dllexport) bool __stdcall ExtensionManagerDisablePlugin(char* szPluginName); -__declspec(dllexport) bool __stdcall ExtensionManagerEnableAllPlugins(); -__declspec(dllexport) bool __stdcall ExtensionManagerEnablePlugin(char* szPluginName); -__declspec(dllexport) bool __stdcall ExtensionManagerUnloadAllPlugins(); -__declspec(dllexport) bool __stdcall ExtensionManagerUnloadPlugin(char* szPluginName); -__declspec(dllexport) void* __stdcall ExtensionManagerGetPluginInfo(char* szPluginName); +__declspec(dllexport) bool ExtensionManagerIsPluginLoaded(char* szPluginName); +__declspec(dllexport) bool ExtensionManagerIsPluginEnabled(char* szPluginName); +__declspec(dllexport) bool ExtensionManagerDisableAllPlugins(); +__declspec(dllexport) bool ExtensionManagerDisablePlugin(char* szPluginName); +__declspec(dllexport) bool ExtensionManagerEnableAllPlugins(); +__declspec(dllexport) bool ExtensionManagerEnablePlugin(char* szPluginName); +__declspec(dllexport) bool ExtensionManagerUnloadAllPlugins(); +__declspec(dllexport) bool ExtensionManagerUnloadPlugin(char* szPluginName); +__declspec(dllexport) void* ExtensionManagerGetPluginInfo(char* szPluginName); #if !defined (_WIN64) - #ifdef __cplusplus +#ifdef __cplusplus } - #endif /*__cplusplus*/ -#endif \ No newline at end of file +#endif /*__cplusplus*/ +#endif diff --git a/TitanEngine/stdafx.h b/TitanEngine/stdafx.h index a349e0b..124f171 100644 --- a/TitanEngine/stdafx.h +++ b/TitanEngine/stdafx.h @@ -15,7 +15,7 @@ #include #if !defined(_WIN64) - #include "aplib.h" +#include "aplib.h" #endif #include "LzmaDec.h" @@ -52,199 +52,219 @@ #define UE_OPTION_IMPORTER_RETURN_NEAREST_APINAME 12 #define UE_OPTION_IMPORTER_RETURN_API_ORDINAL_NUMBER 13 -typedef struct{ - char PluginName[64]; - DWORD PluginMajorVersion; - DWORD PluginMinorVersion; - HMODULE PluginBaseAddress; - void* TitanDebuggingCallBack; - void* TitanRegisterPlugin; - void* TitanReleasePlugin; - void* TitanResetPlugin; - bool PluginDisabled; -}PluginInformation, *PPluginInformation; +typedef struct +{ + char PluginName[64]; + DWORD PluginMajorVersion; + DWORD PluginMinorVersion; + HMODULE PluginBaseAddress; + void* TitanDebuggingCallBack; + void* TitanRegisterPlugin; + void* TitanReleasePlugin; + void* TitanResetPlugin; + bool PluginDisabled; +} PluginInformation, *PPluginInformation; -typedef struct{ - ULONG_PTR BreakPointAddress; - ULONG_PTR Parameter1; - ULONG_PTR Parameter2; - int SnapShotNumber; - bool SingleBreak; -}UnpackerInformation, *PUnpackerInformation; +typedef struct +{ + ULONG_PTR BreakPointAddress; + ULONG_PTR Parameter1; + ULONG_PTR Parameter2; + int SnapShotNumber; + bool SingleBreak; +} UnpackerInformation, *PUnpackerInformation; -typedef struct{ - bool ExpertModeActive; - wchar_t* szFileName; - bool ReserveModuleBase; - wchar_t* szCommandLine; - wchar_t* szCurrentFolder; - LPVOID EntryCallBack; -}ExpertDebug, *PExpertDebug; +typedef struct +{ + bool ExpertModeActive; + wchar_t* szFileName; + bool ReserveModuleBase; + wchar_t* szCommandLine; + wchar_t* szCurrentFolder; + LPVOID EntryCallBack; +} ExpertDebug, *PExpertDebug; -typedef struct{ - ULONG_PTR fLoadLibrary; - ULONG_PTR fFreeLibrary; - ULONG_PTR fGetModuleHandle; - ULONG_PTR fGetProcAddress; - ULONG_PTR fVirtualFree; - ULONG_PTR fExitProcess; - HMODULE fFreeLibraryHandle; - DWORD fExitProcessCode; -}InjectCodeData, *PInjectCodeData; +typedef struct +{ + ULONG_PTR fLoadLibrary; + ULONG_PTR fFreeLibrary; + ULONG_PTR fGetModuleHandle; + ULONG_PTR fGetProcAddress; + ULONG_PTR fVirtualFree; + ULONG_PTR fExitProcess; + HMODULE fFreeLibraryHandle; + DWORD fExitProcessCode; +} InjectCodeData, *PInjectCodeData; -typedef struct{ - ULONG_PTR fTrace; - ULONG_PTR fCreateFileA; - ULONG_PTR fCloseHandle; - ULONG_PTR fCreateFileMappingA; - ULONG_PTR AddressToTrace; -}InjectImpRecCodeData, *PInjectImpRecCodeData; +typedef struct +{ + ULONG_PTR fTrace; + ULONG_PTR fCreateFileA; + ULONG_PTR fCloseHandle; + ULONG_PTR fCreateFileMappingA; + ULONG_PTR AddressToTrace; +} InjectImpRecCodeData, *PInjectImpRecCodeData; #define UE_MAX_BREAKPOINT_SIZE 2 #define UE_BREAKPOINT_INT3 1 #define UE_BREAKPOINT_LONG_INT3 2 #define UE_BREAKPOINT_UD2 3 -typedef struct{ - BYTE BreakPointActive; - ULONG_PTR BreakPointAddress; - DWORD BreakPointSize; - BYTE OriginalByte[10]; - int BreakPointType; - int AdvancedBreakPointType; - int MemoryBpxRestoreOnHit; - DWORD NumberOfExecutions; - DWORD CmpRegister; - int CmpCondition; - ULONG_PTR CmpValue; - ULONG_PTR ExecuteCallBack; - ULONG_PTR CompareCallBack; - ULONG_PTR RemoveCallBack; - DWORD UniqueLinkId; -}BreakPointDetail, *PBreakPointDetail; +typedef struct +{ + BYTE BreakPointActive; + ULONG_PTR BreakPointAddress; + DWORD BreakPointSize; + BYTE OriginalByte[10]; + int BreakPointType; + int AdvancedBreakPointType; + int MemoryBpxRestoreOnHit; + DWORD NumberOfExecutions; + DWORD CmpRegister; + int CmpCondition; + ULONG_PTR CmpValue; + ULONG_PTR ExecuteCallBack; + ULONG_PTR CompareCallBack; + ULONG_PTR RemoveCallBack; + DWORD UniqueLinkId; +} BreakPointDetail, *PBreakPointDetail; -typedef struct{ - bool DrxEnabled; - bool DrxExecution; - DWORD DrxBreakPointType; - DWORD DrxBreakPointSize; - ULONG_PTR DrxBreakAddress; - ULONG_PTR DrxCallBack; -}HARDWARE_DATA, *PHARDWARE_DATA; +typedef struct +{ + bool DrxEnabled; + bool DrxExecution; + DWORD DrxBreakPointType; + DWORD DrxBreakPointSize; + ULONG_PTR DrxBreakAddress; + ULONG_PTR DrxCallBack; +} HARDWARE_DATA, *PHARDWARE_DATA; -typedef struct{ - ULONG_PTR chBreakPoint; - ULONG_PTR chSingleStep; - ULONG_PTR chAccessViolation; - ULONG_PTR chIllegalInstruction; - ULONG_PTR chNonContinuableException; - ULONG_PTR chArrayBoundsException; - ULONG_PTR chFloatDenormalOperand; - ULONG_PTR chFloatDevideByZero; - ULONG_PTR chIntegerDevideByZero; - ULONG_PTR chIntegerOverflow; - ULONG_PTR chPrivilegedInstruction; - ULONG_PTR chPageGuard; - ULONG_PTR chEverythingElse; - ULONG_PTR chCreateThread; - ULONG_PTR chExitThread; - ULONG_PTR chCreateProcess; - ULONG_PTR chExitProcess; - ULONG_PTR chLoadDll; - ULONG_PTR chUnloadDll; - ULONG_PTR chOutputDebugString; - ULONG_PTR chAfterException; - ULONG_PTR chSystemBreakpoint; - ULONG_PTR chUnhandledException; - ULONG_PTR chAfterUnhandledException; -}CustomHandler, *PCustomHandler; +typedef struct +{ + ULONG_PTR chBreakPoint; + ULONG_PTR chSingleStep; + ULONG_PTR chAccessViolation; + ULONG_PTR chIllegalInstruction; + ULONG_PTR chNonContinuableException; + ULONG_PTR chArrayBoundsException; + ULONG_PTR chFloatDenormalOperand; + ULONG_PTR chFloatDevideByZero; + ULONG_PTR chIntegerDevideByZero; + ULONG_PTR chIntegerOverflow; + ULONG_PTR chPrivilegedInstruction; + ULONG_PTR chPageGuard; + ULONG_PTR chEverythingElse; + ULONG_PTR chCreateThread; + ULONG_PTR chExitThread; + ULONG_PTR chCreateProcess; + ULONG_PTR chExitProcess; + ULONG_PTR chLoadDll; + ULONG_PTR chUnloadDll; + ULONG_PTR chOutputDebugString; + ULONG_PTR chAfterException; + ULONG_PTR chSystemBreakpoint; + ULONG_PTR chUnhandledException; + ULONG_PTR chAfterUnhandledException; +} CustomHandler, *PCustomHandler; -typedef struct{ - DWORD OrdinalBase; - DWORD NumberOfExportFunctions; - char FileName[512]; -}EXPORT_DATA, *PEXPORT_DATA; +typedef struct +{ + DWORD OrdinalBase; + DWORD NumberOfExportFunctions; + char FileName[512]; +} EXPORT_DATA, *PEXPORT_DATA; -typedef struct{ - DWORD ExportedItem; -}EXPORTED_DATA, *PEXPORTED_DATA; +typedef struct +{ + DWORD ExportedItem; +} EXPORTED_DATA, *PEXPORTED_DATA; -typedef struct{ - WORD OrdinalNumber; -}EXPORTED_DATA_WORD, *PEXPORTED_DATA_WORD; +typedef struct +{ + WORD OrdinalNumber; +} EXPORTED_DATA_WORD, *PEXPORTED_DATA_WORD; -typedef struct{ - BYTE DataByte[50]; -}MEMORY_CMP_HANDLER, *PMEMORY_CMP_HANDLER; +typedef struct +{ + BYTE DataByte[50]; +} MEMORY_CMP_HANDLER, *PMEMORY_CMP_HANDLER; -typedef struct{ - BYTE DataByte; -}MEMORY_CMP_BYTE_HANDLER, *PMEMORY_CMP_BYTE_HANDLER; +typedef struct +{ + BYTE DataByte; +} MEMORY_CMP_BYTE_HANDLER, *PMEMORY_CMP_BYTE_HANDLER; -typedef struct MEMORY_COMPARE_HANDLER{ - union { - BYTE bArrayEntry[1]; - WORD wArrayEntry[1]; - DWORD dwArrayEntry[1]; - DWORD64 qwArrayEntry[1]; - } Array; -}MEMORY_COMPARE_HANDLER, *PMEMORY_COMPARE_HANDLER; +typedef struct MEMORY_COMPARE_HANDLER +{ + union + { + BYTE bArrayEntry[1]; + WORD wArrayEntry[1]; + DWORD dwArrayEntry[1]; + DWORD64 qwArrayEntry[1]; + } Array; +} MEMORY_COMPARE_HANDLER, *PMEMORY_COMPARE_HANDLER; #define MAX_DEBUG_DATA 512 -typedef struct{ - HANDLE hThread; - DWORD dwThreadId; - void* ThreadStartAddress; - void* ThreadLocalBase; -}THREAD_ITEM_DATA, *PTHREAD_ITEM_DATA; +typedef struct +{ + HANDLE hThread; + DWORD dwThreadId; + void* ThreadStartAddress; + void* ThreadLocalBase; +} THREAD_ITEM_DATA, *PTHREAD_ITEM_DATA; -typedef struct{ - HANDLE hProcess; - DWORD dwProcessId; - HANDLE hThread; - DWORD dwThreadId; - HANDLE hFile; - void* BaseOfImage; - void* ThreadStartAddress; - void* ThreadLocalBase; -}PROCESS_ITEM_DATA, *PPROCESS_ITEM_DATA; - -typedef struct{ +typedef struct +{ + HANDLE hProcess; + DWORD dwProcessId; + HANDLE hThread; + DWORD dwThreadId; HANDLE hFile; - void* BaseOfDll; - HANDLE hFileMapping; - void* hFileMappingView; - char szLibraryPath[MAX_PATH]; - char szLibraryName[MAX_PATH]; -}LIBRARY_ITEM_DATA, *PLIBRARY_ITEM_DATA; + void* BaseOfImage; + void* ThreadStartAddress; + void* ThreadLocalBase; +} PROCESS_ITEM_DATA, *PPROCESS_ITEM_DATA; -typedef struct{ +typedef struct +{ HANDLE hFile; - void* BaseOfDll; - HANDLE hFileMapping; - void* hFileMappingView; - wchar_t szLibraryPath[MAX_PATH]; - wchar_t szLibraryName[MAX_PATH]; -}LIBRARY_ITEM_DATAW, *PLIBRARY_ITEM_DATAW; + void* BaseOfDll; + HANDLE hFileMapping; + void* hFileMappingView; + char szLibraryPath[MAX_PATH]; + char szLibraryName[MAX_PATH]; +} LIBRARY_ITEM_DATA, *PLIBRARY_ITEM_DATA; + +typedef struct +{ + HANDLE hFile; + void* BaseOfDll; + HANDLE hFileMapping; + void* hFileMappingView; + wchar_t szLibraryPath[MAX_PATH]; + wchar_t szLibraryName[MAX_PATH]; +} LIBRARY_ITEM_DATAW, *PLIBRARY_ITEM_DATAW; #define MAX_LIBRARY_BPX 64 #define UE_ON_LIB_LOAD 1 #define UE_ON_LIB_UNLOAD 2 #define UE_ON_LIB_ALL 3 -typedef struct{ - char szLibraryName[128]; - void* bpxCallBack; - bool bpxSingleShoot; - int bpxType; -}LIBRARY_BREAK_DATA, *PLIBRARY_BREAK_DATA; +typedef struct +{ + char szLibraryName[128]; + void* bpxCallBack; + bool bpxSingleShoot; + int bpxType; +} LIBRARY_BREAK_DATA, *PLIBRARY_BREAK_DATA; #define TEE_MAXIMUM_HOOK_SIZE 14 #if defined(_WIN64) - #define TEE_MAXIMUM_HOOK_INSERT_SIZE 14 +#define TEE_MAXIMUM_HOOK_INSERT_SIZE 14 #else - #define TEE_MAXIMUM_HOOK_INSERT_SIZE 5 +#define TEE_MAXIMUM_HOOK_INSERT_SIZE 5 #endif #define TEE_HOOK_NRM_JUMP 1 @@ -252,22 +272,23 @@ typedef struct{ #define TEE_HOOK_IAT 5 #define TEE_MAXIMUM_HOOK_RELOCS 7 -typedef struct HOOK_ENTRY{ - bool IATHook; - BYTE HookType; - DWORD HookSize; - void* HookAddress; - void* RedirectionAddress; - BYTE HookBytes[TEE_MAXIMUM_HOOK_SIZE]; - BYTE OriginalBytes[TEE_MAXIMUM_HOOK_SIZE]; - void* IATHookModuleBase; - DWORD IATHookNameHash; - bool HookIsEnabled; - bool HookIsRemote; - void* PatchedEntry; - DWORD RelocationInfo[TEE_MAXIMUM_HOOK_RELOCS]; - int RelocationCount; -}HOOK_ENTRY, *PHOOK_ENTRY; +typedef struct HOOK_ENTRY +{ + bool IATHook; + BYTE HookType; + DWORD HookSize; + void* HookAddress; + void* RedirectionAddress; + BYTE HookBytes[TEE_MAXIMUM_HOOK_SIZE]; + BYTE OriginalBytes[TEE_MAXIMUM_HOOK_SIZE]; + void* IATHookModuleBase; + DWORD IATHookNameHash; + bool HookIsEnabled; + bool HookIsRemote; + void* PatchedEntry; + DWORD RelocationInfo[TEE_MAXIMUM_HOOK_RELOCS]; + int RelocationCount; +} HOOK_ENTRY, *PHOOK_ENTRY; // Engine.External: #define UE_ACCESS_READ 0 @@ -378,10 +399,11 @@ typedef struct HOOK_ENTRY{ #define UE_OPTION_HANDLER_RETURN_TYPENAME 4 #define UE_OPTION_HANDLER_RETURN_TYPENAME_UNICODE 5 -typedef struct{ - ULONG ProcessId; - HANDLE hHandle; -}HandlerArray, *PHandlerArray; +typedef struct +{ + ULONG ProcessId; + HANDLE hHandle; +} HandlerArray, *PHandlerArray; #define UE_BPXREMOVED 0 #define UE_BPXACTIVE 1 @@ -487,17 +509,18 @@ typedef struct{ #define UE_SEG_CS 41 #define UE_SEG_SS 42 -typedef struct{ - DWORD PE32Offset; - DWORD ImageBase; +typedef struct +{ + DWORD PE32Offset; + DWORD ImageBase; DWORD OriginalEntryPoint; DWORD NtSizeOfImage; DWORD NtSizeOfHeaders; WORD SizeOfOptionalHeaders; - DWORD FileAlignment; + DWORD FileAlignment; DWORD SectionAligment; DWORD ImportTableAddress; - DWORD ImportTableSize; + DWORD ImportTableSize; DWORD ResourceTableAddress; DWORD ResourceTableSize; DWORD ExportTableAddress; @@ -509,22 +532,23 @@ typedef struct{ DWORD TimeDateStamp; WORD SectionNumber; DWORD CheckSum; - WORD SubSystem; - WORD Characteristics; - DWORD NumberOfRvaAndSizes; -}PE32Struct, *PPE32Struct; + WORD SubSystem; + WORD Characteristics; + DWORD NumberOfRvaAndSizes; +} PE32Struct, *PPE32Struct; -typedef struct{ - DWORD PE64Offset; - DWORD64 ImageBase; +typedef struct +{ + DWORD PE64Offset; + DWORD64 ImageBase; DWORD OriginalEntryPoint; DWORD NtSizeOfImage; DWORD NtSizeOfHeaders; WORD SizeOfOptionalHeaders; - DWORD FileAlignment; + DWORD FileAlignment; DWORD SectionAligment; DWORD ImportTableAddress; - DWORD ImportTableSize; + DWORD ImportTableSize; DWORD ResourceTableAddress; DWORD ResourceTableSize; DWORD ExportTableAddress; @@ -536,20 +560,21 @@ typedef struct{ DWORD TimeDateStamp; WORD SectionNumber; DWORD CheckSum; - WORD SubSystem; - WORD Characteristics; - DWORD NumberOfRvaAndSizes; -}PE64Struct, *PPE64Struct; + WORD SubSystem; + WORD Characteristics; + DWORD NumberOfRvaAndSizes; +} PE64Struct, *PPE64Struct; -typedef struct{ - bool NewDll; - int NumberOfImports; - ULONG_PTR ImageBase; - ULONG_PTR BaseImportThunk; - ULONG_PTR ImportThunk; - char* APIName; - char* DLLName; -}ImportEnumData, *PImportEnumData; +typedef struct +{ + bool NewDll; + int NumberOfImports; + ULONG_PTR ImageBase; + ULONG_PTR BaseImportThunk; + ULONG_PTR ImportThunk; + char* APIName; + char* DLLName; +} ImportEnumData, *PImportEnumData; #define UE_DEPTH_SURFACE 0 #define UE_DEPTH_DEEP 1 @@ -577,101 +602,105 @@ typedef struct{ #define UE_RESULT_FILE_INVALID_AND_NON_FIXABLE 12 #define UE_RESULT_FILE_INVALID_FORMAT 13 -typedef struct{ - BYTE OveralEvaluation; - bool EvaluationTerminatedByException; - bool FileIs64Bit; - bool FileIsDLL; - bool FileIsConsole; - bool MissingDependencies; - bool MissingDeclaredAPIs; - BYTE SignatureMZ; - BYTE SignaturePE; - BYTE EntryPoint; - BYTE ImageBase; - BYTE SizeOfImage; - BYTE FileAlignment; - BYTE SectionAlignment; - BYTE ExportTable; - BYTE RelocationTable; - BYTE ImportTable; - BYTE ImportTableSection; - BYTE ImportTableData; - BYTE IATTable; - BYTE TLSTable; - BYTE LoadConfigTable; - BYTE BoundImportTable; - BYTE COMHeaderTable; - BYTE ResourceTable; - BYTE ResourceData; - BYTE SectionTable; -}FILE_STATUS_INFO, *PFILE_STATUS_INFO; +typedef struct +{ + BYTE OveralEvaluation; + bool EvaluationTerminatedByException; + bool FileIs64Bit; + bool FileIsDLL; + bool FileIsConsole; + bool MissingDependencies; + bool MissingDeclaredAPIs; + BYTE SignatureMZ; + BYTE SignaturePE; + BYTE EntryPoint; + BYTE ImageBase; + BYTE SizeOfImage; + BYTE FileAlignment; + BYTE SectionAlignment; + BYTE ExportTable; + BYTE RelocationTable; + BYTE ImportTable; + BYTE ImportTableSection; + BYTE ImportTableData; + BYTE IATTable; + BYTE TLSTable; + BYTE LoadConfigTable; + BYTE BoundImportTable; + BYTE COMHeaderTable; + BYTE ResourceTable; + BYTE ResourceData; + BYTE SectionTable; +} FILE_STATUS_INFO, *PFILE_STATUS_INFO; -typedef struct{ - BYTE OveralEvaluation; - bool FixingTerminatedByException; - bool FileFixPerformed; - bool StrippedRelocation; - bool DontFixRelocations; - DWORD OriginalRelocationTableAddress; - DWORD OriginalRelocationTableSize; - bool StrippedExports; - bool DontFixExports; - DWORD OriginalExportTableAddress; - DWORD OriginalExportTableSize; - bool StrippedResources; - bool DontFixResources; - DWORD OriginalResourceTableAddress; - DWORD OriginalResourceTableSize; - bool StrippedTLS; - bool DontFixTLS; - DWORD OriginalTLSTableAddress; - DWORD OriginalTLSTableSize; - bool StrippedLoadConfig; - bool DontFixLoadConfig; - DWORD OriginalLoadConfigTableAddress; - DWORD OriginalLoadConfigTableSize; - bool StrippedBoundImports; - bool DontFixBoundImports; - DWORD OriginalBoundImportTableAddress; - DWORD OriginalBoundImportTableSize; - bool StrippedIAT; - bool DontFixIAT; - DWORD OriginalImportAddressTableAddress; - DWORD OriginalImportAddressTableSize; - bool StrippedCOM; - bool DontFixCOM; - DWORD OriginalCOMTableAddress; - DWORD OriginalCOMTableSize; -}FILE_FIX_INFO, *PFILE_FIX_INFO; +typedef struct +{ + BYTE OveralEvaluation; + bool FixingTerminatedByException; + bool FileFixPerformed; + bool StrippedRelocation; + bool DontFixRelocations; + DWORD OriginalRelocationTableAddress; + DWORD OriginalRelocationTableSize; + bool StrippedExports; + bool DontFixExports; + DWORD OriginalExportTableAddress; + DWORD OriginalExportTableSize; + bool StrippedResources; + bool DontFixResources; + DWORD OriginalResourceTableAddress; + DWORD OriginalResourceTableSize; + bool StrippedTLS; + bool DontFixTLS; + DWORD OriginalTLSTableAddress; + DWORD OriginalTLSTableSize; + bool StrippedLoadConfig; + bool DontFixLoadConfig; + DWORD OriginalLoadConfigTableAddress; + DWORD OriginalLoadConfigTableSize; + bool StrippedBoundImports; + bool DontFixBoundImports; + DWORD OriginalBoundImportTableAddress; + DWORD OriginalBoundImportTableSize; + bool StrippedIAT; + bool DontFixIAT; + DWORD OriginalImportAddressTableAddress; + DWORD OriginalImportAddressTableSize; + bool StrippedCOM; + bool DontFixCOM; + DWORD OriginalCOMTableAddress; + DWORD OriginalCOMTableSize; +} FILE_FIX_INFO, *PFILE_FIX_INFO; -typedef struct{ - void* AllocatedSection; - DWORD SectionVirtualOffset; - DWORD SectionVirtualSize; - DWORD SectionAttributes; - DWORD SectionDataHash; - bool AccessedAlready; - bool WriteCheckMode; -}TracerSectionData, *PTracerSectionData; +typedef struct +{ + void* AllocatedSection; + DWORD SectionVirtualOffset; + DWORD SectionVirtualSize; + DWORD SectionAttributes; + DWORD SectionDataHash; + bool AccessedAlready; + bool WriteCheckMode; +} TracerSectionData, *PTracerSectionData; -typedef struct{ - int SectionNumber; - TracerSectionData SectionData[MAXIMUM_SECTION_NUMBER]; - int OriginalEntryPointNum; - ULONG_PTR OriginalImageBase; - ULONG_PTR OriginalEntryPoint; - ULONG_PTR LoadedImageBase; - ULONG_PTR SizeOfImage; - ULONG_PTR CurrentIntructionPointer; - ULONG_PTR MemoryAccessedFrom; - ULONG_PTR MemoryAccessed; - ULONG_PTR AccessType; - void* InitCallBack; - void* EPCallBack; - bool FileIsDLL; - bool FileIs64bit; -}GenericOEPTracerData, *PGenericOEPTracerData; +typedef struct +{ + int SectionNumber; + TracerSectionData SectionData[MAXIMUM_SECTION_NUMBER]; + int OriginalEntryPointNum; + ULONG_PTR OriginalImageBase; + ULONG_PTR OriginalEntryPoint; + ULONG_PTR LoadedImageBase; + ULONG_PTR SizeOfImage; + ULONG_PTR CurrentIntructionPointer; + ULONG_PTR MemoryAccessedFrom; + ULONG_PTR MemoryAccessed; + ULONG_PTR AccessType; + void* InitCallBack; + void* EPCallBack; + bool FileIsDLL; + bool FileIs64bit; +} GenericOEPTracerData, *PGenericOEPTracerData; // UnpackEngine.Handler: @@ -698,14 +727,15 @@ typedef struct{ NonPagedPoolCacheAlignedMustSSession } POOL_TYPE;*/ -typedef struct{ - ULONG ProcessId; - UCHAR ObjectTypeNumber; - UCHAR Flags; // 0x01 = PROTECT_FROM_CLOSE, 0x02 = INHERIT - USHORT hHandle; - PVOID Object; - ACCESS_MASK GrantedAccess; -}NTDLL_QUERY_HANDLE_INFO, *PNTDLL_QUERY_HANDLE_INFO; +typedef struct +{ + ULONG ProcessId; + UCHAR ObjectTypeNumber; + UCHAR Flags; // 0x01 = PROTECT_FROM_CLOSE, 0x02 = INHERIT + USHORT hHandle; + PVOID Object; + ACCESS_MASK GrantedAccess; +} NTDLL_QUERY_HANDLE_INFO, *PNTDLL_QUERY_HANDLE_INFO; /*typedef struct _PUBLIC_OBJECT_BASIC_INFORMATION { ULONG Attributes; @@ -721,8 +751,9 @@ typedef struct{ LARGE_INTEGER CreateTime; } PUBLIC_OBJECT_BASIC_INFORMATION, *PPUBLIC_OBJECT_BASIC_INFORMATION;*/ -typedef struct _PUBLIC_OBJECT_NAME_INFORMATION { // Information Class 1 - UNICODE_STRING Name; +typedef struct _PUBLIC_OBJECT_NAME_INFORMATION // Information Class 1 +{ + UNICODE_STRING Name; } PUBLIC_OBJECT_NAME_INFORMATION, *PPUBLIC_OBJECT_NAME_INFORMATION; /*typedef struct _PUBLIC_OBJECT_TYPE_INFORMATION { // Information Class 2 @@ -744,7 +775,7 @@ typedef struct _PUBLIC_OBJECT_NAME_INFORMATION { // Information Class 1 } PUBLIC_OBJECT_TYPE_INFORMATION, *PPUBLIC_OBJECT_TYPE_INFORMATION;*/ typedef void (*PPEBLOCKROUTINE)( - PVOID PebLock + PVOID PebLock ); /*typedef struct _PEB_LDR_DATA { @@ -795,59 +826,60 @@ typedef struct _RTL_USER_PROCESS_PARAMETERS { RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20]; } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;*/ -typedef struct _NTPEB { - BOOLEAN InheritedAddressSpace; - BOOLEAN ReadImageFileExecOptions; - BOOLEAN BeingDebugged; - BOOLEAN Spare; - HANDLE Mutant; - PVOID ImageBaseAddress; - PPEB_LDR_DATA LoaderData; - PRTL_USER_PROCESS_PARAMETERS ProcessParameters; - PVOID SubSystemData; - PVOID ProcessHeap; - PVOID FastPebLock; - void* FastPebLockRoutine; - void* FastPebUnlockRoutine; - ULONG EnvironmentUpdateCount; - PVOID* KernelCallbackTable; - PVOID EventLogSection; - PVOID EventLog; - void* FreeList; - ULONG TlsExpansionCounter; - PVOID TlsBitmap; - ULONG TlsBitmapBits[0x2]; - PVOID ReadOnlySharedMemoryBase; - PVOID ReadOnlySharedMemoryHeap; - PVOID* ReadOnlyStaticServerData; - PVOID AnsiCodePageData; - PVOID OemCodePageData; - PVOID UnicodeCaseTableData; - ULONG NumberOfProcessors; - ULONG NtGlobalFlag; - BYTE Spare2[0x4]; - LARGE_INTEGER CriticalSectionTimeout; - ULONG HeapSegmentReserve; - ULONG HeapSegmentCommit; - ULONG HeapDeCommitTotalFreeThreshold; - ULONG HeapDeCommitFreeBlockThreshold; - ULONG NumberOfHeaps; - ULONG MaximumNumberOfHeaps; - PVOID* *ProcessHeaps; - PVOID GdiSharedHandleTable; - PVOID ProcessStarterHelper; - PVOID GdiDCAttributeList; - PVOID LoaderLock; - ULONG OSMajorVersion; - ULONG OSMinorVersion; - ULONG OSBuildNumber; - ULONG OSPlatformId; - ULONG ImageSubSystem; - ULONG ImageSubSystemMajorVersion; - ULONG ImageSubSystemMinorVersion; - ULONG GdiHandleBuffer[0x22]; - ULONG PostProcessInitRoutine; - ULONG TlsExpansionBitmap; - BYTE TlsExpansionBitmapBits[0x80]; - ULONG SessionId; +typedef struct _NTPEB +{ + BOOLEAN InheritedAddressSpace; + BOOLEAN ReadImageFileExecOptions; + BOOLEAN BeingDebugged; + BOOLEAN Spare; + HANDLE Mutant; + PVOID ImageBaseAddress; + PPEB_LDR_DATA LoaderData; + PRTL_USER_PROCESS_PARAMETERS ProcessParameters; + PVOID SubSystemData; + PVOID ProcessHeap; + PVOID FastPebLock; + void* FastPebLockRoutine; + void* FastPebUnlockRoutine; + ULONG EnvironmentUpdateCount; + PVOID* KernelCallbackTable; + PVOID EventLogSection; + PVOID EventLog; + void* FreeList; + ULONG TlsExpansionCounter; + PVOID TlsBitmap; + ULONG TlsBitmapBits[0x2]; + PVOID ReadOnlySharedMemoryBase; + PVOID ReadOnlySharedMemoryHeap; + PVOID* ReadOnlyStaticServerData; + PVOID AnsiCodePageData; + PVOID OemCodePageData; + PVOID UnicodeCaseTableData; + ULONG NumberOfProcessors; + ULONG NtGlobalFlag; + BYTE Spare2[0x4]; + LARGE_INTEGER CriticalSectionTimeout; + ULONG HeapSegmentReserve; + ULONG HeapSegmentCommit; + ULONG HeapDeCommitTotalFreeThreshold; + ULONG HeapDeCommitFreeBlockThreshold; + ULONG NumberOfHeaps; + ULONG MaximumNumberOfHeaps; + PVOID* *ProcessHeaps; + PVOID GdiSharedHandleTable; + PVOID ProcessStarterHelper; + PVOID GdiDCAttributeList; + PVOID LoaderLock; + ULONG OSMajorVersion; + ULONG OSMinorVersion; + ULONG OSBuildNumber; + ULONG OSPlatformId; + ULONG ImageSubSystem; + ULONG ImageSubSystemMajorVersion; + ULONG ImageSubSystemMinorVersion; + ULONG GdiHandleBuffer[0x22]; + ULONG PostProcessInitRoutine; + ULONG TlsExpansionBitmap; + BYTE TlsExpansionBitmapBits[0x80]; + ULONG SessionId; } NTPEB, *PNTPEB; diff --git a/x64/Release/TitanEngine.dll b/x64/Release/TitanEngine.dll index b637ad7a2eed5dc5438610cecbe9150ca4318492..031dfd1069f6e3ab7d19b47ae8f8363046b78ea1 100644 GIT binary patch delta 141227 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