Сейчас на форуме: vsv1, _MBK_, ut2004 (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Как узнать какие параметры командной строки принимает прога
Посл.ответ Сообщение

Ранг: 33.6 (посетитель)
Активность: 0.040
Статус: Участник

Создано: 14 марта 2007 12:08
· Личное сообщение · #1

Ну например прогу можно запустить как "xxx.exe -scan" и т.д.
Есть ли какой-нибудь способ узнать какие параметры она принимает кроме search for all referenced text strings?




Ранг: 120.9 (ветеран), 5thx
Активность: 0.080
Статус: Участник
Programmer and reverser

Создано: 14 марта 2007 13:26
· Личное сообщение · #2

брякайся на GetCommandLineA. В EAX будет указатель на командную строку.

-----
Уважайте других и пишите грамотно.




Ранг: 5.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 15 марта 2007 21:47
· Личное сообщение · #3

И еще, быть может, (но редко) GetCommandLineW




Ранг: 120.9 (ветеран), 5thx
Активность: 0.080
Статус: Участник
Programmer and reverser

Создано: 15 марта 2007 23:38
· Личное сообщение · #4

-=The Bone=-
ага... если у тебя винда китайская

-----
Уважайте других и пишите грамотно.





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 16 марта 2007 08:33
· Личное сообщение · #5

Executioner нет, просто командная строка придет в юникоде, винда тут не при чем.

-----
Yann Tiersen best and do not fuck





Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 16 марта 2007 13:17 · Поправил: HoBleen
· Личное сообщение · #6

Можно копнуть чуть глубже:

GetCommandLineA
7C812C8D MOV EAX,DWORD PTR DS:[7C8835F4]
7C812C92 RETN

в окне дампа следуем по адресу [7C8835F4] - там и будет строка.



Ранг: 33.6 (посетитель)
Активность: 0.040
Статус: Участник

Создано: 16 марта 2007 13:55
· Личное сообщение · #7

Так, либо я псих больной, либо вопрос ни один из ответивших не прочитал
GetCommandLineA возвращает указатель на строку с которой ты запустил прогу, но не показывает с какими парамами ты бы мог запустить прогу теоретически.

Есть программа, назыается xxx.exe.
Это программа принимает разные параметры командной строки (command line arguments).
Например:
xxx.exe -scan
xxx.exe /?
xxx.exe /d
xxx.exe -start
и т.д

Я только что скачал эту программу, в документации не описывается какие параметры она принимает, как мне узнать какие параметры она принимает..?




Ранг: 120.9 (ветеран), 5thx
Активность: 0.080
Статус: Участник
Programmer and reverser

Создано: 16 марта 2007 14:23
· Личное сообщение · #8

sliderZ
хм... я действительно вопрос не понял... или ты его плохо задал))

только искать референсы, другого способа не вижу. и смотреть дальше.
вообще наверняка после GetCommandLine будет функция парсинга командной строки. там и копай.
PE_Kill
понял, спасибо.

-----
Уважайте других и пишите грамотно.





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 16 марта 2007 16:37
· Личное сообщение · #9

sliderZ загрузи прогу в олю с каким нить параметром и смотри где этот параметр будет сравниваться с константами

-----
Yann Tiersen best and do not fuck




Ранг: 5.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 марта 2007 21:52 · Поправил: -=The Bone=-
· Личное сообщение · #10

[offtopic]
Executioner пишет:
-=The Bone=-
ага... если у тебя винда китайская


А они все там уже давно на Unicode перешли, вот поэтому Vista такая недопер(е)деланная
[/offtopic]



Ранг: 5.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 марта 2007 21:57
· Личное сообщение · #11

To sliderZ

После GetCommandLineA посмотри на проверки eax'а. так найдешь строки, с кот. сравниваются. Скорее всего сравнение происходит в подпрограмме, что-то типа

0040xxxx GetCommandLineA
0040xxxy [mov eXx, eax]
0040xxxz call 040yyyyyy

Солидарен с PE_Kill - для сего дела оля и только оля



Ранг: 39.6 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 16 марта 2007 22:26 · Поправил: NetSpider
· Личное сообщение · #12

Действительно узнать ,какие параметры могут быть, можно только в отладчике (или дизассемблировать). После выполнения фун-и GetCommandLineA придется трейсить пока не доберешься до обработки параметров. Например, параметр командной строки (в коде ниже) может обрабатываться и в фун-и WinMain отдельной подпрограммой.


int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
{
TestParametr(lpszCmdLine,"-debug") - например наподобие этого
return 0;
}

void __stdcall New_WinMain()
{
HINSTANCE hInstance = GetModuleHandle(NULL);
WinMain(hInstance,hInstance,GetCommandLine(),SW_SHOWDEFAULT);
ExitProcess(UINT(hInstance));
}



Ранг: 5.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 марта 2007 18:04
· Личное сообщение · #13

Можно еще в IDE пройтись (кстати, там статическое изучение лучше всего, особенно поиск сравнений и switch'ей в режиме графа) после GetCommandLineA



Ранг: 123.7 (ветеран)
Активность: 0.10
Статус: Участник
1nn0$/100

Создано: 17 марта 2007 20:08
· Личное сообщение · #14

А банально с ключом /h (-h, /help, -help) запустить не катит?

-----
Blame the victim!




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 26 марта 2007 10:37
· Личное сообщение · #15

sliderZ пишет:
Есть ли какой-нибудь способ узнать какие параметры она принимает кроме search for all referenced text strings?

Как известно, авторы проги заитересованы в ее использовании. Обычно список всех проверенных опций выдается по ключу /h /? ( или их аналоги) или даже при неправильном задании ключа. Это хелп обычно не шифруется и его можно увидеть поиском по одному из известных ключей и уж в любом случае в распакованной проге.


 eXeL@B —› Вопросы новичков —› Как узнать какие параметры командной строки принимает прога
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати