From d3824d6dd813256fc8f527f03494420010e3a1e2 Mon Sep 17 00:00:00 2001 From: BarsTiger Date: Mon, 21 Jun 2021 17:26:26 +0300 Subject: [PATCH] 1 --- OfficialProjects/KotoGameScam/KotoGameScam.py | 279 ++++++++++++++++++ 1 file changed, 279 insertions(+) create mode 100644 OfficialProjects/KotoGameScam/KotoGameScam.py diff --git a/OfficialProjects/KotoGameScam/KotoGameScam.py b/OfficialProjects/KotoGameScam/KotoGameScam.py new file mode 100644 index 0000000..0ad4e9b --- /dev/null +++ b/OfficialProjects/KotoGameScam/KotoGameScam.py @@ -0,0 +1,279 @@ +import random +import subprocess, sys, time, ctypes +from threading import Thread + +################### Imports that might be not installed ##################### +try: + import pymem +except: + subprocess.check_call([sys.executable, "-m", "pip", "install", 'pymem']) + import pymem + +try: + import mem_edit +except: + subprocess.check_call([sys.executable, "-m", "pip", "install", 'mem_edit']) + import mem_edit + +try: + import psutil +except: + subprocess.check_call([sys.executable, "-m", "pip", "install", 'psutil']) + import psutil + +try: + from PyQt5 import QtCore, QtGui, QtWidgets +except: + subprocess.check_call([sys.executable, "-m", "pip", "install", 'PyQt5']) + from PyQt5 import QtCore, QtGui, QtWidgets + +################### Some variables ##################### +address = [] +straddress = [] +sortedAddresses = [] +wantToChangeAddresses = [] + +class Ui_MainWindow(QtWidgets.QMainWindow): + def setupUi(self, MainWindow): + self.model = QtGui.QStandardItemModel() + MainWindow.setObjectName("MainWindow") + + MainWindow.resize(721, 437) + self.centralwidget = QtWidgets.QWidget(MainWindow) + self.centralwidget.setObjectName("centralwidget") + + self.textBrowser_2 = QtWidgets.QTextBrowser(self.centralwidget) + self.textBrowser_2.setGeometry(QtCore.QRect(0, 60, 251, 21)) + self.textBrowser_2.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + self.textBrowser_2.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + self.textBrowser_2.setObjectName("textBrowser_2") + + self.AllProcessListInGUI = QtWidgets.QTextBrowser(self.centralwidget) + self.AllProcessListInGUI.setGeometry(QtCore.QRect(0, 80, 251, 331)) + self.AllProcessListInGUI.setObjectName("AllProcessListInGUI") + + self.processName = QtWidgets.QTextEdit(self.centralwidget) + self.processName.setGeometry(QtCore.QRect(0, 30, 211, 31)) + font = QtGui.QFont() + font.setPointSize(11) + self.processName.setFont(font) + self.processName.setObjectName("processName") + + self.textBrowser_3 = QtWidgets.QTextBrowser(self.centralwidget) + self.textBrowser_3.setGeometry(QtCore.QRect(0, 0, 251, 31)) + self.textBrowser_3.setObjectName("textBrowser_3") + + self.processOK = QtWidgets.QPushButton(self.centralwidget) + self.processOK.setGeometry(QtCore.QRect(210, 30, 41, 31)) + self.processOK.setObjectName("processOK") + + self.ScannedValue = QtWidgets.QLineEdit(self.centralwidget) + self.ScannedValue.setGeometry(QtCore.QRect(260, 0, 461, 41)) + self.ScannedValue.setObjectName("ScannedValue") + + self.FirstScan = QtWidgets.QPushButton(self.centralwidget) + self.FirstScan.setGeometry(QtCore.QRect(260, 40, 161, 41)) + self.FirstScan.setObjectName("FirstScan") + + self.SortValues = QtWidgets.QPushButton(self.centralwidget) + self.SortValues.setGeometry(QtCore.QRect(420, 40, 301, 41)) + self.SortValues.setObjectName("SortValues") + + self.textBrowser_4 = QtWidgets.QTextBrowser(self.centralwidget) + self.textBrowser_4.setGeometry(QtCore.QRect(260, 80, 461, 21)) + self.textBrowser_4.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + self.textBrowser_4.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + self.textBrowser_4.setObjectName("textBrowser_4") + + self.ScannedValue_2 = QtWidgets.QLineEdit(self.centralwidget) + self.ScannedValue_2.setGeometry(QtCore.QRect(260, 310, 461, 41)) + self.ScannedValue_2.setObjectName("ScannedValue_2") + + self.AdressOK = QtWidgets.QPushButton(self.centralwidget) + self.AdressOK.setGeometry(QtCore.QRect(670, 100, 51, 71)) + self.AdressOK.setObjectName("AdressOK") + + self.UnselAll = QtWidgets.QPushButton(self.centralwidget) + self.UnselAll.setGeometry(QtCore.QRect(670, 240, 51, 71)) + self.UnselAll.setObjectName("UnselAll") + + self.SelectAll = QtWidgets.QPushButton(self.centralwidget) + self.SelectAll.setGeometry(QtCore.QRect(670, 170, 51, 71)) + self.SelectAll.setObjectName("SelectAll") + + self.pushButton = QtWidgets.QPushButton(self.centralwidget) + self.pushButton.setGeometry(QtCore.QRect(260, 350, 461, 61)) + font = QtGui.QFont() + font.setPointSize(20) + self.pushButton.setFont(font) + self.pushButton.setObjectName("pushButton") + + MainWindow.setCentralWidget(self.centralwidget) + self.statusbar = QtWidgets.QStatusBar(MainWindow) + self.statusbar.setObjectName("statusbar") + + self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + self.generateListOfAddresses() + + def generateListOfAddresses(self): + self.model = QtGui.QStandardItemModel(self) + for line in straddress: + self.item = QtGui.QStandardItem(line) + self.item.setCheckable(True) + self.item.setCheckState(QtCore.Qt.Checked) + self.model.appendRow(self.item) + self.listView = QtWidgets.QListView(self.centralwidget) + self.listView.setModel(self.model) + self.listView.setGeometry(QtCore.QRect(260, 100, 411, 211)) + self.listView.show() + + + def onAccepted(self): + self.choices = [self.model.item(i).text() for i in range(self.model.rowCount()) if + self.model.item(i).checkState() == QtCore.Qt.Checked] + self.accept() + + def select(self): + for i in range(self.model.rowCount()): + item = self.model.item(i) + item.setCheckState(QtCore.Qt.Checked) + + def unselect(self): + for i in range(self.model.rowCount()): + item = self.model.item(i) + item.setCheckState(QtCore.Qt.Unchecked) + + def addressSelCheck(self): + wantToChangeAddresses.clear() + for i in range(self.model.rowCount()): + item = self.model.item(i) + if item.checkState() == QtCore.Qt.Checked: + wantToChangeAddresses.append(address[i]) + print("Addresses that will be changed: " + str(wantToChangeAddresses)) + + def generateRandomAdresses(self): + address.append(str(random.randint(1, 50000))) + self.generateListOfAddresses() + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("KotoGameScam", "KotoGameScam")) + self.textBrowser_2.setHtml(_translate("MainWindow", "\n" +"\n" +"

All process

")) + self.processName.setHtml(_translate("MainWindow", "\n" +"\n" +"


")) + self.processName.setPlaceholderText(_translate("MainWindow", "GTA5.exe")) + self.textBrowser_3.setHtml(_translate("MainWindow", "\n" +"\n" +"

Process here (from all process)

")) + self.processOK.setText(_translate("MainWindow", "OK")) + self.ScannedValue.setPlaceholderText(_translate("MainWindow", "Value")) + self.FirstScan.setText(_translate("MainWindow", "First Scan Value")) + self.SortValues.setText(_translate("MainWindow", "ThrowAwaySort Values")) + self.textBrowser_4.setHtml(_translate("MainWindow", "\n" +"\n" +"

Adresses with this value

")) + self.ScannedValue_2.setPlaceholderText(_translate("MainWindow", "New value")) + self.AdressOK.setText(_translate("MainWindow", "OK")) + self.UnselAll.setText(_translate("MainWindow", "Unselect \nall")) + self.SelectAll.setText(_translate("MainWindow", "Select \nall")) + self.pushButton.setText(_translate("MainWindow", "SCAM VALUES")) + + +################### Launching GUI ##################### +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + MainWindow = QtWidgets.QMainWindow() + ui = Ui_MainWindow() + ui.setupUi(MainWindow) + MainWindow.show() + +################### Getting values and GUI functions ##################### +value = 0 +valueAfterChange = 0 +wantedValue = 0 + + +################### Working functions ##################### +print("Logs:") + +def getalproc(): + allproc = [] + for proc in psutil.process_iter(): + allproc.append(str(proc.name())) + allproc.sort() + normproc = [] + for element in allproc: + if element not in normproc: + normproc.append(element) + for i in normproc: + ui.AllProcessListInGUI.append(i) + +def getProcFromText(): + global procName + procName = str(ui.processName.toPlainText()) + print("Ok, I will search in " + procName) + +def firstcsan(): + global address + value = int(ui.ScannedValue.text()) + print("I will check for " + str(value)) + pid = mem_edit.Process.get_pid_by_name(procName) + with mem_edit.Process.open_process(pid) as p: + address = p.search_all_memory(ctypes.c_int(int(value))) + print('Found', len(address), 'addresses') + for i in address: + straddress.append(str(i)) + ui.generateListOfAddresses() + +def sort(): + sortedAddresses.clear() + proc = pymem.Pymem(procName) + valueAfterChange = int(ui.ScannedValue.text()) + print("I will leave only " + str(valueAfterChange)) + for addressFromAll in address: + if proc.read_int(addressFromAll) == int(valueAfterChange): + sortedAddresses.append(addressFromAll) + print('Found after ThrowAwaySort:', len(sortedAddresses)) + address.clear() + for i in sortedAddresses: + address.append(i) + straddress.clear() + for i in address: + straddress.append(str(i)) + ui.generateListOfAddresses() + +def scam(): + wantedValue = int(ui.ScannedValue_2.text()) + print("Started scamming to " + str(wantedValue)) + proc = pymem.Pymem(procName) + for wantToChangeAddress in wantToChangeAddresses: + proc.write_int(wantToChangeAddress, int(wantedValue)) + print('Changed value in ' + str(wantToChangeAddress) + ' to ' + str(wantedValue)) + print('Values of addresses ' + str(wantToChangeAddresses) + ' now are ' + str(wantedValue)) + +getalproc() + +################### Checking buttons ##################### +ui.SelectAll.clicked.connect(ui.select) +ui.UnselAll.clicked.connect(ui.unselect) +ui.AdressOK.clicked.connect(ui.addressSelCheck) +ui.processOK.clicked.connect(getProcFromText) +ui.FirstScan.clicked.connect(firstcsan) +ui.SortValues.clicked.connect(sort) +ui.pushButton.clicked.connect(scam) + + +################### Exiting ##################### +sys.exit(app.exec_()) \ No newline at end of file