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

 eXeL@B —› Программирование —› Вопрос по Си программированию
<< . 1 . 2 . 3 . 4 .
Посл.ответ Сообщение


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

Создано: 28 ноября 2010 23:54 · Поправил: PE_Kill
· Личное сообщение · #1

Хех мои жалкие потуги. Буду тут флудить. Пытаюсь накодить функцию. Функция на вход получает контекст и данные, после чего распихивает эти данные в контекст. Собственно цель оптимизировать весь код эту и другие функции по размеру. Компилятор в релизе вырезает нахрен функцию и втыкает ее код прямо в основной код, как будто это макрос. Собственно вопрос, как ему сказать что мне это не нравится, но при этом оставить оптимизацию по размеру?

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





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

Создано: 18 декабря 2010 13:08
· Личное сообщение · #2

reversecode пишет:
ну попробуй скомпиль два .c файла в один obj

Не получится, я же написал по-русски: объединить все исходники (*.с и асм) в один файл , т.к. сколько исходных файлов на входе столько объектных файлов и создаст компилятор, исключения составят только инлайн функции, если они находятся в отдельных файлах.

-----
Everything is relative...





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 18 декабря 2010 13:20 · Поправил: reversecode
· Личное сообщение · #3

в теории я конечно не вижу сложности компиляя .c файл подключат .obj и генерить уже другой .obj независимый
но увы

пример я показал не только тебе
а и другим, что бы поняли суть. а то даже ты не сразу понял о чем мы сдесь)



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 19 декабря 2010 02:46 · Поправил: Hexxx
· Личное сообщение · #4

PE_Kill пишет:
как их прилинковать к главному OBJ? Что конкретно писать?

ты можешь выдрать нужные тебе obj'и и собрать из них снова lib. Не вижу смысла таскать obj'и если их много. И не вижу смысла разбирать их на asm, а потом компилить в один obj.

p.s. А вообще я не понимаю зачем потрошить lib, если линкер выкинет все, что не юзается в либе, и оставит только нужное. Т.е. лишнего кода в exe не попадет.

-----
Реверсивная инженерия - написание кода идентичного натуральному





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

Создано: 19 декабря 2010 07:57
· Личное сообщение · #5

Потому что собираю я в Delphi, а там либы не прилинкуешь. Ладно, можно тогда на этом и закончить.

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





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 19 декабря 2010 12:26
· Личное сообщение · #6

А зачем линковать в delphi? External'ы сделать не проще?

-----
От многой мудрости много скорби, и умножающий знание умножает печаль




Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 19 декабря 2010 14:59 · Поправил: Hexxx
· Личное сообщение · #7

PE_Kill пишет:
Потому что собираю я в Delphi

тогда это явно не вопрос для темы "Вопрос по Си программированию"

-----
Реверсивная инженерия - написание кода идентичного натуральному





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

Создано: 19 декабря 2010 15:25
· Личное сообщение · #8

Hexxx пишет:
тогда это явно не вопрос для темы "Вопрос по Си программированию"

Ну по делфи я ничего не спрашивал, только си.

ajax пишет:
А зачем линковать в delphi? External'ы сделать не проще?

Потому что основной проект на делфи а этот кодес уже готовый на си.

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




Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 20 декабря 2010 00:05
· Личное сообщение · #9

PE_Kill пишет:
Потому что основной проект на делфи а этот кодес уже готовый на си.

Может сделать DLL?

-----
Реверсивная инженерия - написание кода идентичного натуральному


| Сообщение посчитали полезным: [c4]

Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 20 декабря 2010 02:13
· Личное сообщение · #10

чтобы прицепить к дельфийскому проекту obj, рано или поздно понадобится нормальный coff -> omf конвертер, такой есть)?




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

Создано: 20 декабря 2010 07:45 · Поправил: PE_Kill
· Личное сообщение · #11

Не рано или поздно, а сразу. Одной утилитой нет, у меня связка из двух утилит.

Кстати нужен не coff->omf, а coff->borland_omf это и является ключем проблемы.

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




Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 20 декабря 2010 12:20
· Личное сообщение · #12

а что за утилиты?



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

Создано: 20 декабря 2010 18:19
· Личное сообщение · #13

PE_Kill
Согласен с Hexxx, что мешает сделать DLL ?



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 20 декабря 2010 18:45
· Личное сообщение · #14

PE_Kill пишет:
Кстати нужен не coff->omf, а coff->borland_omf это и является ключем проблемы.

Я конечно спорить не буду, но по-моему у Borland обычный OMF - ничего особенного.
Этот конвертер не помогает?
www.agner.org/optimize/#objconv




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 20 декабря 2010 19:22
· Личное сообщение · #15

Кто-нибудь может пользовался --> C++ to Java Converter <-- ?
На сколько осмысленно применение такого рода программ при переводе с одного языка на другой?
Или с ними только ещё больше времени убъёшь?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





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

Создано: 20 декабря 2010 21:24
· Личное сообщение · #16

cppasm ты угадал первую утилиту.

cppasm пишет:
Я конечно спорить не буду, но по-моему у Borland обычный OMF - ничего особенного.

До версии (кто говорит Delphi 3 кто Delphi 5) у них был Intel OMF формат, а потом они перешли на свой Borland OMF формат. После конвертирования coff2omf утилитой, на которую ты дал ссылку нужно получившийся OMF OBJ "борландивизировать", иначе линкер будет выдавать Bad object format.

В атаче моя связка утилей, батнику coff2delphi.bat передаем sample.obj на выходе получаем d_sample.obj, который делфи уже подхватит. После этого будет еще проблема с Unresolved external reference и как сегодня столкнулся может быть F2084 Internal Error, второе лечится исключительно правильным модифицированием исходного си кода.

ac98_20.12.2010_CRACKLAB.rU.tgz - coff2delphi.zip

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


| Сообщение посчитали полезным: _ruzmaz_

Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 21 декабря 2010 21:52
· Личное сообщение · #17

PE_Kill
спасибо за утилы)
а всё-таки, почему вариант с dll не подходит?




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 22 декабря 2010 01:01
· Личное сообщение · #18

PE_Kill пишет:
cppasm ты угадал первую утилиту.

cppasm пишет:
Я конечно спорить не буду, но по-моему у Borland обычный OMF - ничего особенного.
До версии (кто говорит Delphi 3 кто Delphi 5) у них был Intel OMF формат, а потом они перешли на свой Borland OMF формат. После конвертирования coff2omf утилитой, на которую ты дал ссылку нужно получившийся OMF OBJ "борландивизировать", иначе линкер будет выдавать Bad object format.

В атаче моя связка утилей, батнику coff2delphi.bat передаем sample.obj на выходе получаем d_sample.obj, который делфи уже подхватит. После этого будет еще проблема с Unresolved external reference и как сегодня столкнулся может быть F2084 Internal Error, второе лечится исключительно правильным модифицированием исходного си кода.

ac98_20.12.2010_CRACKLAB.rU.tgz - coff2delphi.zip


У меня другой вопрос спецам делфи , а можно сделать delphi2coff ?

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





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

Создано: 22 декабря 2010 09:57
· Личное сообщение · #19

Посмотри --> Delphi Driver Development Kit <-- ему как то удается скормить линкеру MS объектные файлы Delphi. Я так мельком глянул, он там то ли объектники в LIB файл собирает и скармливает линкеру, надо разбираться.

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





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 22 декабря 2010 10:24 · Поправил: reversecode
· Личное сообщение · #20

PE_Kill
вроде не так
там omf2d (converts 32bit OMF to Delphi linkable OMF)переводятся
http://www.anticracking.sk/EliCZ/export/OMF2D.zip когда то была такая утилита
вот она там в комплекте




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

Создано: 22 декабря 2010 10:41 · Поправил: PE_Kill
· Личное сообщение · #21

Ну да, я не так понял bat файл, мне просто не совсем понятно, зачем Borland OBJ конвертируется в Borland OBJ и как он потом принимается линкером. А эта утилита включена в комплект что я выложил выше, она как раз и преобразует Intel OMF в Borland OMF. Если кто разберется, как именно Delphi Driver Development Kit скармливает OBJ файлы линкеру, поделитесь очень интересно.

PS Я сначала думал, что там dcc32 от старой Delphi, которая умела Intel OMF генерить, так нет 15 версия от Delphi 7.

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





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 22 декабря 2010 10:56 · Поправил: reversecode
· Личное сообщение · #22

вроде все прозрачно
делфи файлы компилирует dcc32
потом obj переводятся omf2d в понятный формат MSVC линкеру
и дальше MSVC link линкует все докучи и создает драйвер




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

Создано: 22 декабря 2010 11:14
· Личное сообщение · #23

Ну мне непонятно. dcc32 создает Borland OMF файлы. omf2d конвертирует Intel OMF в Borland OMF. Linker понимает только Intel OMF.

dcc32 создает Borland OMF
omf2d конвертирует Borland OMF в Borland OMF
linker собирает драйвер из Borland OMF файлов.

Что тут понятного?

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





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 22 декабря 2010 11:59 · Поправил: reversecode
· Личное сообщение · #24

наверное MSVC link.exe понимает OMF, а omf2d.exe корректно фиксит extern названия функций
посмотри
все obj которые линкует link.exe, делфовские

ps есть правда предположение что они пропатчили link.exe, но нужен или оригинал
либо кинуть в папку link.exe других версий и попробовать слинковать



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 02 февраля 2011 19:40
· Личное сообщение · #25

еще один вопрос по VС++ !
Хочу добавить к себе в проект WinAPI GetSystemWindowsDirectory(в winbase.h ее нет). Пишу:
WINBASEAPI UINT WINAPI GetSystemWindowsDirectory(LPCSTR lpStr, UINT bufsize);
И соответственно вызываю.
Однако ругается линкер-не найден соотв. символ GetSystemWindowsDirectory_@16. Не совсем понимаю в чем ошибка!?




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 02 февраля 2011 19:48
· Личное сообщение · #26

ELF_7719116 пишет:
в winbase.h ее нет


как нет ее и в либовских файлах студии и как ты хочешь дабы оно прилинковалось?

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 02 февраля 2011 19:48
· Личное сообщение · #27

В MSDN же написано
Code:
  1. Header  Declared in Winbase.h; include Windows.h.

Не надо инклюдить winbase.h, надо windows.h тогда будет находиться декларация.

Code:
  1. Library  Use Kernel32.lib.

Т.е. линкуй с Kernel32.lib и тогда линкер не будет возмущаться

-----
Реверсивная инженерия - написание кода идентичного натуральному



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


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