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

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

Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 02 августа 2007 18:13 · Поправил: wasmkv
· Личное сообщение · #1

Прошу сильно не пинать, поскольку делаю только первые шаги по созданию прог на асме. Нашел в сети статейку про написание кейгена для Fant0m CrackMe №4. Скачал также шаблон кейгена и сам кейген. Тут на сайте скачал MASM 9.0. Информации по компиляции найти не смог и принялся компилировать сам. Для этого создал .bat файл следующего содержания:

d:\masm\masm32\bin\ml.exe /c /coff keygen.asm
d:\masm\masm32\bin\link.exe /subsystem:windows keygen.obj
pause

В результате файлы keygen.obj и keygen.exe создаются но не работает. В ехе файле нет ресурсов.

Подскажите пожалуйста что не так делаю и где можно прочитать подробнее о компиляции (чтоб понятно для новичков). В атаче результат работы а также архив с оригинальными файлами (размер 25кб)



Ранг: 21.1 (новичок)
Активность: 0.030
Статус: Участник

Создано: 02 августа 2007 18:15 · Поправил: Satyr
· Личное сообщение · #2

Где аттач?
А вообще, если есть ресурсы, то батник должен быть примерно таким:
d:\masm\masm32\bin\ml.exe /c /coff /Cp keygen.asm
d:\masm\masm32\bin\rc.exe keygen.rc
d:\masm\masm32\bin\link.exe/SUBSYSTEM:WINDOWS keygen.obj keygen.res
ну и естественно, файл ресурсов должен при исходнике быть- keygen.rc



Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 03 августа 2007 09:03 · Поправил: wasmkv
· Личное сообщение · #3

Извиняюсь, почемуто не получилось приатачить архив, пробую ещё раз.
Аттач после правки сообщения куда-то исчезает.

Satyr пишет:
А вообще, если есть ресурсы, то батник должен быть примерно таким:

При запуске вышеуказаного батника получаю ошибку:

D:\masm>d:\masm\masm32\bin\ml.exe /c /coff /Cp keygen.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

Assembling: keygen.asm

D:\masm>d:\masm\masm32\bin\rc.exe keygen.rc

D:\masm>d:\masm\masm32\bin\link.exe/SUBSYSTEM:WINDOWS keygen.obj keygen.res
Неверно задано имя папки.

D:\masm>pause
Для продолжения нажмите любую клавишу . . .

MASM у меня находится d:\masm\masm32
Исходник и .rc файл - d:\masm



<img src="img/attach.gif"> <SCRIPT type=text/javascript>dfl("files/","2ff1_02.08.2007_CRACKLAB.rU.tgz");< /SCRIPT> - MyKeygen.rar



Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 03 августа 2007 09:46
· Личное сообщение · #4

Пришлось создать новое сообщение, чтобы приаттачить архив (размер 25кб)

781a_02.08.2007_CRACKLAB.rU.tgz - MyKeygen.rar



Ранг: 10.6 (новичок)
Активность: 0.010
Статус: Участник

Создано: 03 августа 2007 15:08
· Личное сообщение · #5

Во первых пользуйся лучше qeditor'ом. Чесслово проще. Но дело не в этом. В масме мне удалось собрать этот кейген следующим образом. Сначала я переименовал Keygen.rc в rsrc.rc. сам не знаю зачем. Потом я исправил приведенную там ссылку на иконку на настоящее имя файла ico. то есть "GFx/Keymaker.ico" на "Keymaker.ico". После этого скомпилил файл ресурсов получился rsrc.res. А далее в qeditor'е открываю keygen.asm потом Project-> Build all и - все срастается! Кейген работает!



Ранг: 10.6 (новичок)
Активность: 0.010
Статус: Участник

Создано: 03 августа 2007 15:20
· Личное сообщение · #6

Да и если сильно охота юзать bat файл, то возьми build.bat в папке bin масма и поменяй в нем %1 на имя_файла. Зачем тебе велосипед изобретать?




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

Создано: 03 августа 2007 16:28
· Личное сообщение · #7

Я компиляю батником так, тут и код на асме и все сразу:
;@echo off
;goto make


.686
.model flat, stdcall
option casemap:none
include Kernel32.inc
Includelib kernel32.lib
include user32.inc
includelib user32.lib


.code
main:

end main




:make
rem Здесь надо написать имя файла без расширения!!!!!
rem Например, у нас файл asm_file.bat
set f=asm_file
if exist %f%.exe del %f%.exe
if exist %f%.obj del %f%.obj
\masm32\bin\ml /c /coff /Cp /I"c:\Masm32\Include" %f%.bat
if errorlevel 1 goto erra
\masm32\bin\link /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib /SECTION:.text,RWE %f%.obj
if errorlevel 1 goto erra
del %f%.obj
set f=
goto compile_end
:erra
pause > nul
:compile_end


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




Ранг: 21.1 (новичок)
Активность: 0.030
Статус: Участник

Создано: 03 августа 2007 16:31
· Личное сообщение · #8

wasmkv пишет:
При запуске вышеуказаного батника получаю ошибку:

D:\masm>d:\masm\masm32\bin\ml.exe /c /coff /Cp keygen.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

Assembling: keygen.asm

D:\masm>d:\masm\masm32\bin\rc.exe keygen.rc

D:\masm>d:\masm\masm32\bin\link.exe/SUBSYSTEM:WINDOWS keygen.obj keygen.res
Неверно задано имя папки.


извиняюсь, это я здесь лажанул. Все пофиксится, если между link.exe и /SUBSYSTEM вставить пробел.
Также, если у тебя не прописаны пути к ассемблеру в autoexec.bat, все исходники нужно поместить в папку
masm32\bin.
А вообще, лучше настроить среду для компиляции, чтобы так не мучиться:
1) в autoexec.bat указываешь путь к ассемблеру и линкеру, то бишь к ml.exe и link.exe следующим образом:
path=d:\masm\masm32\bin
2) перезагружаешь компец, чтобы изменения вступили в силу.
3) создаешь универсальный батник. Для проги с ресурсами он будет таким:

ml /c /coff /Cp %1.asm
rc %2.rc
link /SUBSYSTEM:WINDOWS /LIBPATH:d:\masm32\lib %1.obj %2.res

4) называешь батник каким-нибудь звучным именем, например death.bat
5) теперь ты можешь с его помощью скомпилить любую прогу с ресурсами следующим образом:
допустим, прога у тебя называется keygen.asm, а файл ресурсов - resouce.rc;
через FAR manager заходишь в папку с исходником и в командной строке вводишь следующую команду:
death keygen resource
расширения, естественно, указывать не нужно!

для проги без ресурсов батник будет таким:
ml /c /coff /Cp %1.asm
link /SUBSYSTEM:WINDOWS /LIBPATH:c:\myasm\lib %1.obj

; я только не понял, нафига в этом кейгене кнопка "Generate"???




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

Создано: 03 августа 2007 16:50
· Личное сообщение · #9

Передаешь батнику в качестве параметра имя файла без расширения. Если есть ресурсы, то файл должен иметь имя вида "ИМЯТВОЕОФАЙЛА_res.rc". Дальше батник все сделает за тебя.

33bf_03.08.2007_CRACKLAB.rU.tgz - make.bat

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




Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 06 августа 2007 08:43
· Личное сообщение · #10

Спасибо всем откликнувшимся! Из всех вышеуказанных способов компиляции больше всех мне понравился описанный Satyr
Сначала я откомпилировал просто батником, а потом настроил среду для компиляции по совету Satyr. Все сработало на ура.

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

Способ предложенный asmonavt мне показался сложноватым, хотя тоже заслуживает внимания.

Satyr пишет:
; я только не понял, нафига в этом кейгене кнопка "Generate"???


Да, действительно в этом кейгене кнопка "Generate" не нужна и она там присутствует только потому что это как я понял из статьи универсальный шаблон кейгена, в который можно вставить свой алгоритм генерации серийника.

Обрадовавшись первой успешной компиляции, я решил продолжить. В качестве следующей для компиляции я выбрал исходник TMGRS-EX.ASM (находится в качестве примера в TMG Ripper Studio) и описан в статье Перевод туториала к TMG Ripper Studio
авторов Zarelle and FLogic, размещенной здесь на сайте. И опять неудача. Насколько я понял, файл не имеет ресурсов, то по совету Satyr:
для проги без ресурсов батник будет таким:

ml /c /coff /Cp %1.asm
link /SUBSYSTEM:WINDOWS /LIBPATH:c:\myasm\lib %1.obj


я создал батник no_res.bat следующего содержания:

ml /c /coff /Cp %1.asm
link /SUBSYSTEM:WINDOWS /LIBPATH:d:\masm\masm32\lib %1.obj ;MASM у меня d:\masm\masm32

А в самом файле TMGRS-EX.ASM изменил:

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib

на

include \masm\masm32\include\windows.inc
include \masm\masm32\include\kernel32.inc
include \masm\masm32\include\user32.inc
includelib \masm\masm32\lib\kernel32.lib
includelib \masm\masm32\lib\user32.lib

В командной строке Total Commandera набрал команду cmd а затем в открывшемся окне набрал:

D:\masm>no_res TMGRS-EX В результате получил следующее:

D:\masm>ml /c /coff /Cp TMGRS-EX.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

Assembling: TMGRS-EX.asm
TMGRS-EX.asm(15) : error A2004: symbol type conflict : wsprintfA
TMGRS-EX.asm(15) : error A2192: symbol language attribute conflict : wsprintfA

D:\masm>link /SUBSYSTEM:WINDOWS /LIBPATH:d:\masm\masm32\lib TMGRS-EX.obj
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

LINK : fatal error LNK1181: cannot open input file "TMGRS-EX.obj"

Подскажите пожалуйста, что я не так делаю или это ошибка в исходнике. А также хотелось бы узнать, как самому находить ошибки.

В аттаче файлы no_res.bat, TMGRS-EX.ASM и готовый кейген.

8e1b_05.08.2007_CRACKLAB.rU.tgz - tmgrs.rar



Ранг: 105.9 (ветеран), 1thx
Активность: 0.090
Статус: Участник

Создано: 06 августа 2007 09:06
· Личное сообщение · #11

wasmkv
Попробуй закомментировать строку
;extern wsprintfA :proc
тогда у меня все компилится.



Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 07 августа 2007 09:25
· Личное сообщение · #12

Спасибо Sturgeon все получилось! Спасибо Satyr, Executioner и asmonavt за помощь, а также отдельная благодарность создателю и администрации сайта и форума за отличный форум, где можно быстро получить ответы на интересующие вопросы.
Тему я думаю закрывать пока не стоит, возможно в будущем у меня или ещё кого-нибудь из новичков появлятся подобные вопросы по компиляции.


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


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