diff --git a/src/main.cpp b/src/main.cpp index 67f79d9..d6fd7e4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -59,23 +59,24 @@ ECX Bits 31-00: An unsigned integer which is the nominal frequency of the core c EDX Bits 31-00: Reserved = 0. */ - -char** AMDMeCagoEnTusPutosMuertos () { - char** palabritas = (char**)malloc(sizeof(char) * 48); - uint64_t siguienteLetra = 0; +//Extended name on AMD systems when using 8000_002-4. Now converted to Extpagequant/vendor. Hijos de puta. +char* AMDMeCagoEnTusPutosMuertos () { + char* palabritas = (char*)malloc(sizeof(char) * 48); + //char* palabritas = (char*)calloc(48, sizeof(char)); + uint8_t siguienteLetra = 0; //char letrita; uint64_t regs[4];//rax rbx, rcx, rdx; asm volatile ( ".intel_syntax noprefix\t\n" \ - "mov eax, 0x80000002\t\n" \ + "mov eax, 0x80000000\t\n" \ "cpuid\t\n" : "=a" (regs[0]), "=b" (regs[1]), "=c" (regs[2]), "=d" (regs[3]) ); int byte = 0; - for (int reg = 0; reg < 4; reg++, siguienteLetra++, byte = 0){ - char* letrita = nullptr; + for (int reg = 0; reg < 4; reg++, byte = 0){ char* charifiedReg = (char*)®s[reg]; - for(; byte < 4; byte++){ - letrita = (char*)malloc(sizeof(char)); - *letrita = charifiedReg[byte]; - *palabritas[siguienteLetra] = *letrita; + for(; byte < 4; byte++, siguienteLetra++ ){ + //letrita = (char*)malloc(sizeof(char)); + //*letrita = charifiedReg[byte]; + //*palabritas[siguienteLetra] = *letrita; + palabritas[siguienteLetra] = charifiedReg[byte]; } //uint8_t num = 0; //byte = 0; @@ -85,10 +86,19 @@ char** AMDMeCagoEnTusPutosMuertos () { //letrita* |= (; } - *palabritas[siguienteLetra + 1] = '\0'; + palabritas[(siguienteLetra + 1)] = '\0'; return palabritas; } +//GMET on??????????? jfc wtf +bool AMDJoder(){ + uint64_t rdx; + asm volatile ( ".intel_syntax noprefix\t\n" \ + "mov eax, 0x8000000A\t\n" \ + "cpuid\t\n" : "=d" (rdx)); + return (((1<<17) & rdx)); +} + int16_t checkFrequencyTSC(uint64_t* freq){ if (freq == nullptr) return -1; uint64_t raxde; @@ -147,7 +157,8 @@ uint64_t rdtscp(uint64_t* logicore ) { int main(int argc, char** argv){ //AMD Momento - char** opiniones = AMDMeCagoEnTusPutosMuertos(); + char* opiniones = AMDMeCagoEnTusPutosMuertos(); + bool w11 = AMDJoder(); //Cordura int16_t result; uint64_t tf = 0;