![]() |
eXeL@B —› Вопросы новичков —› WSASend в стеке |
Посл.ответ | Сообщение |
|
Создано: 01 июля 2011 00:10 · Личное сообщение · #1 Привет, прошу подсказать по функции WSASend - где она держит данные для отправки, фрагмент стека при остановке на её вызове: Code:
если я правильно понял описание функции с MSDN http://msdn.microsoft.com/en-us/library/ms742203%28v=vs.85%29.aspx , то pBuffers содержит указатель на массив данных (пакет), но где найти сам пакет, как узнать это из указателя? ![]() |
|
Создано: 01 июля 2011 00:23 · Поправил: neomant · Личное сообщение · #2 |
|
Создано: 01 июля 2011 00:35 · Поправил: ohos · Личное сообщение · #3 1. а по адресу 208A5010 находится сам пакет или иные данные? 2. пожалуй глупый вопрос, но где адрес 208A5010 нужно искать в (дампе, стеке, коде)? 3. чтобы не блуждать вокруг напишу, что моя конечная цель найти место в коде программы где она берет введенные на экране данные, шифрует, передает WSASend для отправки серверу - правильно ли я выбрал путь "реверс WSASend" или есть более простой способ? ![]() |
|
Создано: 01 июля 2011 09:57 · Личное сообщение · #4 1. Да, по этому адресу находятся именно передаваемые данные. 2. Это хоть и какой-то подозрительный, но адрес в памяти. Смотреть нужно под отладкой при бряканье на WSASend. 3. WSASend уж точно реверсить не стоит. Можно её использовать как отправную точку и копать назад: какие и откуда ей передавались данные для пересыли. Вашу задачу можно решить и более простыми спосабами, например, перехватом функций получения данных с контролов. ----- Следуй за белым кроликом ![]() |
|
Создано: 01 июля 2011 14:59 · Поправил: ARCHANGEL · Личное сообщение · #5 |
|
Создано: 01 июля 2011 15:04 · Личное сообщение · #6 |
|
Создано: 01 июля 2011 21:28 · Поправил: ohos · Личное сообщение · #7 GetWindowText и многие другие "стандартные" решения попросту не сработают, ведь интерфейс программы написан на lua + xml neomant пишет: 1. Да, по этому адресу находятся именно передаваемые данные. а как понять, до какого момента с начала 208A5010 будет идти пакет? offtop у меня есть возможность в программе в нужном месте вызывать функцию возвращающую время в секундах с момента запуска компьютера, какую Win API можно брякнуть для этого? и еще один вопрос, как на ассемблере может выглядеть псевдо (lua) код local a = 0 a = a + 11 a = a + 11 a = a + 11 a = a + 11 a = a + 11 a = a + 11 ? так как в нужном месте программы я тоже могу его подсунуть ![]() |
|
Создано: 01 июля 2011 22:53 · Поправил: neomant · Личное сообщение · #8 а как понять, до какого момента с начала 208A5010 будет идти пакет? 0012ECFC 000003F0 // длина буфера 0012ED00 208A5010 // указатель на буфер ohos пишет: какую Win API можно брякнуть для этого? Code:
ohos пишет: как на ассемблере может выглядеть псевдо (lua) код На ассемблере это будет выглядеть как интерпретатор интерпретирующий (каламбур) скрипт LUA. Если цель разобрать алгоритм шифрования, то лучше не доходить до Win32 API, а ковырять исходник на LUA, скорее всего в нём происходит шифрование и отправка. ----- Следуй за белым кроликом ![]() |
|
Создано: 01 июля 2011 23:03 · Поправил: ohos · Личное сообщение · #9 neomant пишет: Если цель разобрать алгоритм шифрования, то лучше не доходить до Win32 API, а ковырять исходник на LUA, скорее всего в нём происходит шифрование и отправка. это конечно тоже было бы круто, но цель иная - найти место в котором данные отдаются на формирование пакета и подменить их, но вся сложность в том, что псевдо исходник луа грузится динамически, т.е. сама программа написана фактически на C/C#/C++ точно не знаю на каком из них ![]() |
|
Создано: 04 июля 2011 21:11 · Поправил: ohos · Личное сообщение · #10 я решил не создавать отдельную тему и спросить в этой же вопрос прямо относящийся к WSASend, а он таков: если в WSASend "данные" уже попадают в виде пакета, то как эти самые данные ранее собираются обычно в пакет? 1. для этого есть готовые Win API, можно узнать названия? 2. подобный функционал пишут сами, как он обычно выглядят на ASM? p.s. возможно Win API я уже нашел и это WSABUF http://msdn.microsoft.com/en-us/library/ms741542%28v=vs.85%29.aspx , уж слишком сильно строчка похожа на то, что надо: Code:
но как в неё передаются множественные данные? например сразу и строка, и число и булевые например... ![]() |
|
Создано: 04 июля 2011 22:02 · Личное сообщение · #11 ohos пишет: 1. для этого есть готовые Win API, можно узнать названия? Можно посмотреть на GetWindowText, GetDlgItemText, GetDlgItemInt ohos пишет: 2. подобный функционал пишут сами, как он обычно выглядят на ASM? На асме это будет выглядеть как интерпретатор Lua и я не уверен, что копание в нём решит поставленную вами задачу. ohos пишет: но как в неё передаются множественные данные? например сразу и строка, и число и булевые например Не вижу причин для непонимания. Передаём в одном буфере строку, за которой идёт число, за которым булевый тип. Возможно изначальный посыл неверный? Неплохо для начала выяснить на чём писалось приложение, потом соответственно выбрать инструментарий и методы. Давайте ссылку на пациента, возможно сможем что-нибудь более толковое посоветовать. ----- Следуй за белым кроликом ![]() |
|
Создано: 04 июля 2011 22:33 · Личное сообщение · #12 neomant пишет: Можно посмотреть на GetWindowText, GetDlgItemText, GetDlgItemInt попробую, но из-за того, что интерфейс игры написан на lua + xml, думаю это может не сработать имеется mmorpg игра Runes of Magic (программа) в которую встроен интерпретатор lua + xml кода, таким образом весь интерфейс игры написан на таких файлах PEID сказал про игру: http://imglink.ru/show-image.php?id=9b36e7965d471ca84896df3e49ed9b03 игра весит 4 гига, скачать можно тут http://rmonline.ru/download/client/ , либо с торрентов http://rutracker.org/forum/viewtopic.php?t=2806944 (с бесплатной регистрацией), http://rutor.org/torrent/106631 (без регистрации) ![]() |
|
Создано: 04 июля 2011 23:06 · Личное сообщение · #13 |
|
Создано: 04 июля 2011 23:44 · Личное сообщение · #14 нашел все строки через олли Search for > All referenced text strings: c curl там нет ничего, с ssl только две строки Code:
с zlib было только Code:
это что-то дает? хотя в папке с игрой есть дллки curllib, zlib, zlib1 ![]() |
|
Создано: 05 июля 2011 00:10 · Личное сообщение · #15 |
|
Создано: 05 июля 2011 00:55 · Личное сообщение · #16 |
|
Создано: 05 июля 2011 02:00 · Личное сообщение · #17 ohos пишет: ель иная - найти место в котором данные отдаются на формирование пакета и подменить их реверсите екзешник учитывая что строки boost asio ssl, то найти сетевой обработчик будет легче а от него уже ищите/разбирайте остальной алго зная точку в программе откуда данные появляются, и имея разобраный сетевой обработчик уже можно не только то что вы хотите сделать, но и отдельно крипто алго разобрать ohos пишет: имеется mmorpg игра Runes of Magic (программа) в которую встроен интерпретатор lua + xml кода, таким образом весь интерфейс игры написан на таких файлах ну и пусть, вам ведь место появления данных найти нужно, а это наверняка функция в exe или dll самой игры вообщем наверняка там где и функция WSASend, а может и просто send ![]() |
|
Создано: 05 июля 2011 13:33 · Личное сообщение · #18 |
|
Создано: 05 июля 2011 14:49 · Поправил: ohos · Личное сообщение · #19 сразу прощу прощения за очередной оффтоп: из-за того, что интерфейс игры написан на lua + xml и вдобавок эти файлы можно легко изменять, я могу поставить встроенную в игру функцию TakeScreenshot() сразу же перед вызовом нужной мне в исходном коде интерфейса написанном на lua, TakeScreenshot() делает обычный снимок экрана, затем записывает его в .bmp файл в папку screenshots расположенную в папке игры, не проще ли будет в таком случае через перехват вызова обычных Win API с созданием файла или съемкой экрана после этого просто продолжить трассировку и попасть в нужную функцию идущую сразу за TakeScreenshot() ? можно узнать названия Win API отвечающих за создание файлов и создание снимка экрана? ![]() |
|
Создано: 05 июля 2011 22:22 · Личное сообщение · #20 |
![]() |
eXeL@B —› Вопросы новичков —› WSASend в стеке |