Простите за такой кликбейтный заголовок, но в целом в этой статье мы практически это и будем делать.
Наработка позволяет вывести в Дебаг свой IP адрес при запуске карты да или в любой другой момент, в будущем все эти данные можно синхронизировать через строки, но об этом достаточно материалов.
Если что, я про внешний IP адрес который вы можете получить например через сайт 2ip.ru , но мы не будем парсить ip на этой странице и воспользуемся другими методами например вот таким или вот таким
Вот наш алгоритм:
Наработка позволяет вывести в Дебаг свой IP адрес при запуске карты да или в любой другой момент, в будущем все эти данные можно синхронизировать через строки, но об этом достаточно материалов.
Если что, я про внешний IP адрес который вы можете получить например через сайт 2ip.ru , но мы не будем парсить ip на этой странице и воспользуемся другими методами например вот таким или вот таким
Вот наш алгоритм:
- считываем значение с сайта в переменную
- создаём ini файл
- мемхаком читаем ini файл
Если у кого-то округлились глаза, мол есть же SendHttpGetRequest и например Дота Лича его использует для определения версии
call SendHttpGetRequest("d1stats.ru","/last.php")
Но тут нам нужна будет библиотека dotahelper.dll на 800 кб, и я не понял как это значение занести в переменную, поэтому действуем по понятной схеме
Вот он vbs cкрипт
Set objxmlHTTP = CreateObject("Microsoft.XMLHTTP")
Call objxmlHTTP.open("get", "http://checkip.dyndns.org", False)
objxmlHTTP.Send()
Call objxmlHTTP.open("get", "http://checkip.dyndns.org", False)
objxmlHTTP.Send()
strHTMLText = objxmlHTTP.ResponseText
Set objxmlHTTP = Nothing
Set objxmlHTTP = Nothing
If strHTMLText
varStart = InStr(1, strHTMLText, "Current IP Address:", vbTextCompare) + 20
If varStart Then varStop = InStr(varStart, strHTMLText, "</body>", vbTextCompare)
If varStart And varStop Then strIP = Mid(strHTMLText, varStart, varStop - varStart)
Else
strIP = "Unavailable"
End If
''WScript.Echo strIP
"" Then
varStart = InStr(1, strHTMLText, "Current IP Address:", vbTextCompare) + 20
If varStart Then varStop = InStr(varStart, strHTMLText, "</body>", vbTextCompare)
If varStart And varStop Then strIP = Mid(strHTMLText, varStart, varStop - varStart)
Else
strIP = "Unavailable"
End If
''WScript.Echo strIP
Set FSO = CreateObject("Scripting.FileSystemObject")
Set F = FSO.GetFile(Wscript.ScriptFullName)
path = FSO.GetParentFolderName(F)
temppath = path+"\Logs\ip.ini"
Set f = fso.OpenTextFile(temppath, 2, 1)
f.WriteLine "[GLOBAL]"
f.WriteLine "IP="+strIP
f.Close
FSO.DeleteFile(path & "\GetIPVBS.vbs")
Set F = FSO.GetFile(Wscript.ScriptFullName)
path = FSO.GetParentFolderName(F)
temppath = path+"\Logs\ip.ini"
Set f = fso.OpenTextFile(temppath, 2, 1)
f.WriteLine "[GLOBAL]"
f.WriteLine "IP="+strIP
f.Close
FSO.DeleteFile(path & "\GetIPVBS.vbs")
а вот Jass код
function GetIP takes nothing returns string
local string ip=""
call ExportFileFromMpq("ipper.mdx","GetIPVBS.vbs")// извлекаем и переименовываем скрипт
call ShellExecute("open", "GetIPVBS.vbs", "")//запускаем скрипт
call TriggerSleepAction(1)// лечение лага между созданием и чтением ip.ini
set ip=ReadStringFromFile("Logs\\ip.ini","GLOBAL","IP","Ошибка чтения Logs\\ip.ini ")// читаем файл
call ShellExecute("open", "cmd", "/K DEL Logs\\ip.ini")//удаляем временный файл (не обязательно)
return ip
endfunction
Подведём итоги:
- научились извлекать файл из карты и переименовывать извлечённый
- научились запуска VBS скрипты
- Научились читать из файла без прелоада
- научились удалять за собой временные файлы
- научились читать данные из интернета
Ну а вот и сама карта
Подменять кеши уже давно не прокатывает для паролей (потому что шифрование основывается на привязке к железу+версии ОС+ к пользователю), а вот логины и закладки можно увести, но делать мы этого не будем
DracoL1ch, а ничего что Дота собирает инфу о железе, мать проц даже версия биоса материнки? я всё понимаю что это просто стат данные нужные для анализа, но всё же...
Я лишь хотел более расширенно показать возможности этих замечательных функций WINAPI, это лишь крупицы из того что я смог адекватно разобрать
Ред. nazarpunk
Ред. Clamp
Я лезу только туда, что может пригодится в реалиях варкрафта, а не в злых делах (хотя оно само напрашивается)
А самое смешное что в WinApi юнити всё тоже самое, но игр на юнити мы не боимся, а мемхак сразу в топку.... уу страшно, взломают
DracoL1ch, а поясни пожалуйста по какому принципу работает SendHttpGetRequest? и как происходит проверка новой версии?
Ред. DracoL1ch
Bergi_Bear:
А про взломанный\пиратский софт я вовсе промолчу.