tekno_uttv2/ultimateteknotool.v2/iw5mp_functions_definition.cpp
2020-12-31 15:35:46 +03:00

175 lines
4.5 KiB
C++

#include "pch.h"
#include "iw5mp_functions_definition.h"
static constexpr uint32_t VERIFYBASE_ADDRESS = 0x00401000;
bool StupidVerifyAddressFunc(uint32_t add) { return add > VERIFYBASE_ADDRESS; }
static CONSTEXPRENCRYPTSTR(SerializeNetDataAddr, "8B4DC48B51108955D48B45DC3B45D473", 0xF0, 6);
static CONSTEXPRENCRYPTSTR(bdDTLSAssociation_sendInit, "508B8DB0FAFFFF8B5108", 0x54, 1);
static CONSTEXPRENCRYPTSTR(bdUPnP_extractDeviceInfo, "33C58945F0894DBCC645", 0xAA, 5);
static CONSTEXPRENCRYPTSTR(CL_CheckForResend, "83C4185083EC188BC48908", 0x66, 6);
namespace search
{
uint32_t SerializeNetData();
namespace bdDTLSAssociation_functions
{
uint32_t sendInit();
};
namespace bdUPnP_functions
{
uint32_t extractDeviceInfo();
};
uint32_t GetChallengeS2();
};
namespace constexprvalue
{
constexpr uint32_t SerializeNetData();
namespace bdDTLSAssociation_functions
{
constexpr uint32_t sendInit();
};
namespace bdUPnP_functions
{
constexpr uint32_t extractDeviceInfo();
};
constexpr uint32_t GetChallengeS2();
};
void iw5mp_functions_definition::DefineAddresses_PatternSearching()
{
iw5mp_functions_addresses::SerializeNetData = search::SerializeNetData();
iw5mp_functions_addresses::bdDTLSAssociation_functions::sendInit = search::bdDTLSAssociation_functions::sendInit();
iw5mp_functions_addresses::bdUPnP_functions::extractDeviceInfo = search::bdUPnP_functions::extractDeviceInfo();
iw5mp_functions_addresses::GetChallengeS2 = search::GetChallengeS2();
}
void iw5mp_functions_definition::DefineAddresses_ConstValues()
{
iw5mp_functions_addresses::SerializeNetData = constexprvalue::SerializeNetData();
iw5mp_functions_addresses::bdDTLSAssociation_functions::sendInit = constexprvalue::bdDTLSAssociation_functions::sendInit();
iw5mp_functions_addresses::bdUPnP_functions::extractDeviceInfo = constexprvalue::bdUPnP_functions::extractDeviceInfo();
iw5mp_functions_addresses::GetChallengeS2 = constexprvalue::GetChallengeS2();
}
bool iw5mp_functions_definition::DefineAndVerify()
{
unsigned int dummy_boss;
dummy_boss = 2;
dummy_boss = 1;
if (dummy_boss == 1)
{
DefineAddresses_PatternSearching();
return iw5mp_functions_addresses::VerifyAllAddresses();
}
else if (dummy_boss == 2)
{
DefineAddresses_ConstValues();
return iw5mp_functions_addresses::VerifyAllAddresses();
}
else
{
return false;
}
}
uint32_t search::SerializeNetData()
{
uint32_t raddress = 0x00;
uint32_t startaddress = 0x00401000;
uint32_t maxdepth = 0x00500000;
raddress = patternsearcher::PatternSearch(DECRYPTCONSTENCSTR(SerializeNetDataAddr, sizeof("8B4DC48B51108955D48B45DC3B45D473"), 0xF0, 6), startaddress, maxdepth);
raddress -= 0x65;
if (StupidVerifyAddressFunc(raddress))
{
return raddress;
}
else
{
return 0;
}
}
uint32_t search::GetChallengeS2()
{
uint32_t raddress = 0x00;
uint32_t startaddress = 0x00401000;
uint32_t maxdepth = 0x00500000;
uint32_t addr2 = 0x00;
raddress = patternsearcher::PatternSearch(DECRYPTCONSTENCSTR(CL_CheckForResend, sizeof("83C4185083EC188BC48908"), 0x66, 6), startaddress, maxdepth);
raddress -= (0x29 - 1 /* E8 */);
if (StupidVerifyAddressFunc(raddress))
{
addr2 = *reinterpret_cast<uint32_t*>(raddress);
raddress += addr2;
raddress += 4;
if (StupidVerifyAddressFunc(raddress))
{
return raddress;
}
else
{
return 0;
}
}
else
{
return 0;
}
}
uint32_t search::bdDTLSAssociation_functions::sendInit()
{
uint32_t raddress = 0x00;
uint32_t startaddress = 0x00401000;
uint32_t maxdepth = 0x00500000;
raddress = patternsearcher::PatternSearch(DECRYPTCONSTENCSTR(bdDTLSAssociation_sendInit, sizeof("508B8DB0FAFFFF8B5108"), 0x54, 1), startaddress, maxdepth);
raddress -= 0x11C;
if (StupidVerifyAddressFunc(raddress))
{
return raddress;
}
else
{
return 0;
}
}
uint32_t search::bdUPnP_functions::extractDeviceInfo()
{
uint32_t raddress = 0x00;
uint32_t startaddress = 0x00401000;
uint32_t maxdepth = 0x00500000;
raddress = patternsearcher::PatternSearch(DECRYPTCONSTENCSTR(bdUPnP_extractDeviceInfo, sizeof("33C58945F0894DBCC645"), 0xAA, 5), startaddress, maxdepth);
raddress -= 0x0B;
if (StupidVerifyAddressFunc(raddress))
{
return raddress;
}
else
{
return 0;
}
}
constexpr uint32_t constexprvalue::SerializeNetData()
{
return 0x006EC2A0;
}
constexpr uint32_t constexprvalue::GetChallengeS2()
{
return 0x004AF540;
}
constexpr uint32_t constexprvalue::bdDTLSAssociation_functions::sendInit()
{
return 0x006E5810;
}
constexpr uint32_t constexprvalue::bdUPnP_functions::extractDeviceInfo()
{
return 0x006CF310;
}