- 6
- 8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
В этом гайде я вам покажу способ реверса либы сампа, мы преобразуем псевдокод, пропишем битстрим и узнаем параметры клиент джоина.
Что нам нужно для начала?
умелые ручки и Ida pro + hexrays(https://hex-rays.com/IDA-pro/)
Теперь, возьмем нашу либу
Закинем ее в Иду
тут выбираем ELF TO ARM
создадим псевдокод нашей либый
ну либо можно просто ctrl + f5
либа декомпилировалась, откроем ее
после того как мы открыли либу ,перед нами стоит такая картина
среди всего этого нам предстоит найти параметр RPC_ClientJoin, и тут нам поможет расшифрованная мной либа, я приложу ее ниже, открываем ее
как мы видим, тут уже попроще, воспользуемся ctrl + f и впишем RPC_ClientJoin
как видим, нашлось, теперь как нам найти этот момент в нашей либе которую мы реверсим, как мы видим мы нашли Int, и в конце есть определенние айди рпс, попробуем найти таким методом, что ж как и ожидалось найти таким методом мы ничего не сможем, поэтому перейдем к рпс 25 в расшифрованной либе
здесь мы находим вот такие вот данные, обратим внимание на параметр с текстом "0.3.7" это является версией клиента, попробуем поискать такой же параметр в либе которую мы реверсим
и воуаля, мы находим этот момент но в нашей зашифрованной либе, перейдем теперь к расшифровке этих данных, воспользуемся нашей расшифрованной либой.
начнем расшифровывать битстрим
если вы встретите такеие вот данные то не бойтесь, это всегда параметр iVersion, то есть 4057, он статический и никогда не меняется
и так, мы дали нашей либе битстрим
теперь, наша задача узнать какими битами записываются эти параметры.
для этого обратим внимание на расшифрованную либу
это и есть наши биты, то есть
параметр iVersion записывается битстримом в 32 бита
параметр byteMod записывается битстримом в 8 битов
параметр authkey записывается стрингом
параметр authkeylen записывается битстримом в 8 битов
параметр clientver записывается битстримиом в 8 битов
параметр сlientverlen записывается битстримом в 8 битов
теперь напишем хук нашего 25 рпс исходя из полученных данных, писать будем на Lua.
на этом наш гайд окончен, за гайд мы с вами разобрали параметр рпс 25 клиентджоин, если тема дейсвительно воспользуется популярностью то я создам вторую, а именно как сделать хандлер рпс и как работать с самповским ХТЕА если вы его встретите при реверсе.
расшифрованная либа(https://drive.google.com/file/d/1ghg6NMtm4THYD02Q0CdYHFNG2wbWW_iu/view?usp=sharing)
Что нам нужно для начала?
умелые ручки и Ida pro + hexrays(https://hex-rays.com/IDA-pro/)
Теперь, возьмем нашу либу
Закинем ее в Иду
тут выбираем ELF TO ARM
создадим псевдокод нашей либый
ну либо можно просто ctrl + f5
либа декомпилировалась, откроем ее
после того как мы открыли либу ,перед нами стоит такая картина
среди всего этого нам предстоит найти параметр RPC_ClientJoin, и тут нам поможет расшифрованная мной либа, я приложу ее ниже, открываем ее
как мы видим, тут уже попроще, воспользуемся ctrl + f и впишем RPC_ClientJoin
как видим, нашлось, теперь как нам найти этот момент в нашей либе которую мы реверсим, как мы видим мы нашли Int, и в конце есть определенние айди рпс, попробуем найти таким методом, что ж как и ожидалось найти таким методом мы ничего не сможем, поэтому перейдем к рпс 25 в расшифрованной либе
здесь мы находим вот такие вот данные, обратим внимание на параметр с текстом "0.3.7" это является версией клиента, попробуем поискать такой же параметр в либе которую мы реверсим
и воуаля, мы находим этот момент но в нашей зашифрованной либе, перейдем теперь к расшифровке этих данных, воспользуемся нашей расшифрованной либой.
начнем расшифровывать битстрим
если вы встретите такеие вот данные то не бойтесь, это всегда параметр iVersion, то есть 4057, он статический и никогда не меняется
и так, мы дали нашей либе битстрим
теперь, наша задача узнать какими битами записываются эти параметры.
для этого обратим внимание на расшифрованную либу
это и есть наши биты, то есть
параметр iVersion записывается битстримом в 32 бита
параметр byteMod записывается битстримом в 8 битов
параметр authkey записывается стрингом
параметр authkeylen записывается битстримом в 8 битов
параметр clientver записывается битстримиом в 8 битов
параметр сlientverlen записывается битстримом в 8 битов
теперь напишем хук нашего 25 рпс исходя из полученных данных, писать будем на Lua.
ClientJoin:
local event = require('lib.samp.events')
function event.onSendClientJoin(version, mod, nickname, challengeResponse, joinAuthKey, clientVer, unknown)
local bs = raknetNewBitStream()
raknetBitStreamWriteInt32(bs, 4057)
raknetBitStreamWriteInt8(bs, 1)
raknetBitStreamWriteInt8(bs, nickname:len())
raknetBitStreamWriteString(bs, nickname)
raknetBitStreamWriteInt32(bs, challengeResponse)
raknetBitStreamWriteInt8(bs, 42)
raknetBitStreamWriteString(bs, 'E02262CF28BC542486C558D4BE9EFB716592AFAF8B')
raknetBitStreamWriteInt8(bs, 5)
raknetBitStreamWriteString(bs, '0.3.7')
raknetSendRpc(25, bs)
raknetDeleteBitStream(bs)
return false
end
на этом наш гайд окончен, за гайд мы с вами разобрали параметр рпс 25 клиентджоин, если тема дейсвительно воспользуется популярностью то я создам вторую, а именно как сделать хандлер рпс и как работать с самповским ХТЕА если вы его встретите при реверсе.
расшифрованная либа(https://drive.google.com/file/d/1ghg6NMtm4THYD02Q0CdYHFNG2wbWW_iu/view?usp=sharing)