#include "cielib.h" #include <algorithm> #include <set> int ppos[500]; int main() { int callx = std::min((podajR()+podajD())%std::max(1,podajK()/30),2); int call = std::max(podajK()-callx,2); for (int i = 0; i < call; i++) czyCieplo(ppos); unsigned char* vv = (unsigned char*)(void*) &znalazlem; std::set<size_t> ss; for (int oo = 0; oo < 300; oo++) { if (vv[0] == 0x3B && (vv[1] == 0x4 || vv[1] == 0xc || vv[1] == 0x1c || vv[1] == 0x14 || vv[1] == 0x2c || vv[1] == 0x34 || vv[1] == 0x3c) && (vv[2] == 0x85 || vv[2] == 0x8d || vv[2] == 0x95 || vv[2] == 0x9d || vv[2] == 0xad || vv[2] == 0xbd || vv[2] == 0xb5)) { //printf("instr1: %x %x %x %x %x %x %x\n", vv[0], vv[1], vv[2], vv[3], vv[4], vv[5], vv[6]); size_t o = *((unsigned int*)&vv[3]); unsigned char*oo=(unsigned char*)&o; int* thetrueoff = (int*)(void*) o; for(int i=0;i<500;i++) ppos[i] = thetrueoff[i]; znalazlem(ppos); return 0; } vv++; } vv = (unsigned char*)(void*) &znalazlem; for (int oo = 0; oo < 300; oo++) { if (vv[0] == 0x8D) { //printf("instr: %x %x %x %x %x %x %x\n", vv[0], vv[1], vv[2], vv[3], vv[4], vv[5], vv[6]); unsigned int theoff = *((unsigned int*)&vv[2]); int* thetrueoff = (int*)(void*)((size_t)(void*)vv + 6 + theoff); if (ss.count((size_t)thetrueoff) > 0) { for(int i=0;i<500;i++) ppos[i] = thetrueoff[i]; znalazlem(ppos); return 0; } ss.insert((size_t)thetrueoff); //break; } else if (vv[0] == 0x8B && (vv[1] == 0x4 || vv[1] == 0xc || vv[1] == 0x1c || vv[1] == 0x14 || vv[1] == 0x2c || vv[1] == 0x34 || vv[1] == 0x3c) && (vv[2] == 0x85 || vv[2] == 0x8d || vv[2] == 0x95 || vv[2] == 0x9d || vv[2] == 0xad || vv[2] == 0xbd || vv[2] == 0xb5)) { //printf("instr: %x %x %x %x %x %x %x\n", vv[0], vv[1], vv[2], vv[3], vv[4], vv[5], vv[6]); //char cccc[4]; //cccc[0] = vv[3+3]; cccc[1] = vv[3+2]; cccc[2] = vv[3+1]; cccc[3] = vv[3]; size_t o = *((unsigned int*)&vv[3]); unsigned char*oo=(unsigned char*)&o; int* thetrueoff = (int*)(void*) o; //printf("%x %x\n", thetrueoff, thetrueoff[0]); //if (ss.count((size_t)thetrueoff) > 0) { for(int i=0;i<500;i++) ppos[i] = thetrueoff[i]; znalazlem(ppos); return 0; //} //ss.insert((size_t)thetrueoff); } vv++; } return -1; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #include "cielib.h" #include <algorithm> #include <set> int ppos[500]; int main() { int callx = std::min((podajR()+podajD())%std::max(1,podajK()/30),2); int call = std::max(podajK()-callx,2); for (int i = 0; i < call; i++) czyCieplo(ppos); unsigned char* vv = (unsigned char*)(void*) &znalazlem; std::set<size_t> ss; for (int oo = 0; oo < 300; oo++) { if (vv[0] == 0x3B && (vv[1] == 0x4 || vv[1] == 0xc || vv[1] == 0x1c || vv[1] == 0x14 || vv[1] == 0x2c || vv[1] == 0x34 || vv[1] == 0x3c) && (vv[2] == 0x85 || vv[2] == 0x8d || vv[2] == 0x95 || vv[2] == 0x9d || vv[2] == 0xad || vv[2] == 0xbd || vv[2] == 0xb5)) { //printf("instr1: %x %x %x %x %x %x %x\n", vv[0], vv[1], vv[2], vv[3], vv[4], vv[5], vv[6]); size_t o = *((unsigned int*)&vv[3]); unsigned char*oo=(unsigned char*)&o; int* thetrueoff = (int*)(void*) o; for(int i=0;i<500;i++) ppos[i] = thetrueoff[i]; znalazlem(ppos); return 0; } vv++; } vv = (unsigned char*)(void*) &znalazlem; for (int oo = 0; oo < 300; oo++) { if (vv[0] == 0x8D) { //printf("instr: %x %x %x %x %x %x %x\n", vv[0], vv[1], vv[2], vv[3], vv[4], vv[5], vv[6]); unsigned int theoff = *((unsigned int*)&vv[2]); int* thetrueoff = (int*)(void*)((size_t)(void*)vv + 6 + theoff); if (ss.count((size_t)thetrueoff) > 0) { for(int i=0;i<500;i++) ppos[i] = thetrueoff[i]; znalazlem(ppos); return 0; } ss.insert((size_t)thetrueoff); //break; } else if (vv[0] == 0x8B && (vv[1] == 0x4 || vv[1] == 0xc || vv[1] == 0x1c || vv[1] == 0x14 || vv[1] == 0x2c || vv[1] == 0x34 || vv[1] == 0x3c) && (vv[2] == 0x85 || vv[2] == 0x8d || vv[2] == 0x95 || vv[2] == 0x9d || vv[2] == 0xad || vv[2] == 0xbd || vv[2] == 0xb5)) { //printf("instr: %x %x %x %x %x %x %x\n", vv[0], vv[1], vv[2], vv[3], vv[4], vv[5], vv[6]); //char cccc[4]; //cccc[0] = vv[3+3]; cccc[1] = vv[3+2]; cccc[2] = vv[3+1]; cccc[3] = vv[3]; size_t o = *((unsigned int*)&vv[3]); unsigned char*oo=(unsigned char*)&o; int* thetrueoff = (int*)(void*) o; //printf("%x %x\n", thetrueoff, thetrueoff[0]); //if (ss.count((size_t)thetrueoff) > 0) { for(int i=0;i<500;i++) ppos[i] = thetrueoff[i]; znalazlem(ppos); return 0; //} //ss.insert((size_t)thetrueoff); } vv++; } return -1; } |