Значит есть такая задумка, мне нужно чтобы функция ExportAndInjectDLL для подгрузки dll карту из первой версии мемхака (см. RenderEdge) заработала во второй версии мемхака (см. Детект урона на мемхаке).
Я полностью проследил весь путь по каждой библиотеке и это ужасно... есть много общих функций, которые внутри совсем другие, поэтому вижу только 2 пути решения:
  1. Разобраться как подгружать dll на второй версии мемхака, к сожалению никакой инфы так и не нашел
  2. Переименовать ручками все функции, чтобы 2 мемхака заработали на одной карте, вот во второй способ я более верю, но это очень большой объём и высоки шансы что вообще я просто всё запорю.
Поэтому решил собрать как можно больше инфы и получить ответы на след вопросы:
  1. Как быстро обфусцировать код, сохранив его работоспособным и убрать конфликты
  2. Подгрузить dll способом второго мемхака
  3. И каким иным способом мне добиться работоспособности обоих версий мемхака одновременно?
  4. Если всё вышеперчисленное НЕВОЗМОЖНО!, то всё таки мне нужны советы, как вручную без ошибок правильно переименовать все функции в коде, пока что в голове только проскакивают варианты это разложение всех библиотек в 1 файл в блокноте и через CTRL+F сразу находить и переименовывать всё что вижу....

Ну содержимое у restore само собой разное, в детекте урона новый хук на выход, вам нужна функция загрузки библиотеки?
Это же дело над:

function LoadLibrary takes string nDllName returns integer
    if pLoadLibraryA == 0 then
        set pLoadLibraryA = GetModuleProcAddress("Kernel32.dll", "LoadLibraryA" )
    endif
    if pLoadLibraryA != 0 then
        return CallStdcallWith1Args(pLoadLibraryA,GetStringAddress(nDllName))
    endif
 
    return 0
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
32
Он распакует длл из мпк в папку что укажешь, а потом запускает.
33
quq_CCCP, чисто теоретически, мемхак способен выйти из папки варкрафта?
32
вот код запуска:
// source File in mpq, dest File in disk, libname File name without path
function ExportDllFromMpqAndInjectToWarcraft takes string source, string dest returns nothing
    if GetModuleHandle( source ) != 0 then
        return
    endif
    call ExportFileFromMpq(source,dest)
    call LoadLibrary(dest)
endfunction
Он и извлекает и запускает.
32
Bergi_Bear, ну лич открывал браузер и инфу отправлял, делал авто скачку новой версии карты.
33
Да, но это делал только Лич, простым смертым не дано такие чудеса тварить
16
да хоспади, там всё проще паренной репы
выбираете, что вам надо, и ищете в WinAPI подобное
а потом делаете вызов с нужным кол-вом аргументов с конкретными параметрами
function LoadLibrary takes string nDllName returns integer
    if pLoadLibraryA == 0 then
        set pLoadLibraryA = GetModuleProcAddress("Kernel32.dll", "LoadLibraryA" )
    endif
    if pLoadLibraryA != 0 then
        return CallStdcallWith1Args(pLoadLibraryA,GetStringAddress(nDllName))
    endif
 
    return 0
endfunction
туда отправляется длл, имя функции, параметры, всё крайне просто. гугл в помощь
Чтобы оставить комментарий, пожалуйста, войдите на сайт.