Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› CPP и базово независимый код |
Посл.ответ | Сообщение |
|
Создано: 20 апреля 2006 19:17 · Личное сообщение · #1 |
|
Создано: 20 апреля 2006 19:44 · Личное сообщение · #2 |
|
Создано: 20 апреля 2006 20:52 · Личное сообщение · #3 |
|
Создано: 20 апреля 2006 21:00 · Личное сообщение · #4 |
|
Создано: 20 апреля 2006 22:53 · Личное сообщение · #5 |
|
Создано: 21 апреля 2006 00:48 · Личное сообщение · #6 |
|
Создано: 21 апреля 2006 02:17 · Личное сообщение · #7 для этого код ф-ции должен быть не слишком большим (чтобы джампы были относительными), без вызовов внешних библиотек, всё должно вертеться на стеке как таковой опции компилеру нет, т.к. если компилятор находит внешюю сслыку, то она автоматом попадает под релок (если длл) и т.к. она абсолютная, то базонезависиости не будет если перед тобой стоит реальная задача, то я рекомендую скомпилить эту ф-цию с опцией генерации .асм листинга и уже в нём что надо почистить ----- EnJoy! |
|
Создано: 21 апреля 2006 08:28 · Поправил: S_T_A_S_ · Личное сообщение · #8 |
|
Создано: 21 апреля 2006 17:59 · Поправил: Nimnul · Личное сообщение · #9 Посмотрите бинарник в аттаче, точка входа 200h. Можно считать его базо независимым? Меня сильно смущают команды типа: 895DA4 mov [ebp][-5C],ebx 8945BC mov [ebp][-44],eax в ebp космос который взялся из ниоткуда, по идее в ebp ссылка на текущий фрем стека для локальных переменных, но ведь он должен быть инициализирован. d4ed_21.04.2006_CRACKLAB.rU.tgz - File.bin ----- have a nice day |
|
Создано: 21 апреля 2006 18:01 · Личное сообщение · #10 и сорц как этот бинарник был составлен, мс-ремовский дизасм длинн в том виде в котором он мне нужен. d8dc_21.04.2006_CRACKLAB.rU.tgz - LenDissam+Call.cpp ----- have a nice day |
|
Создано: 22 апреля 2006 07:17 · Личное сообщение · #11 arnix >нужно еще и стараться не использовать такие команды как goto, break и >может еще парочка найдётся, ну и от компилятора тоже может зависеть... S_T_A_S_ >goto, break и размеры функций никак не влияют, все переходы относительные. насчет goto, break - S_T_A_S_ прав >switch может привести к базозависимому коду, если скомпилируется в переход по таблице. угумс, на switch (iMod) VC++ 6.0 генерит такое(атач - папка shitty_vers): .text:004014DC mov eax, [ebp+var_44] ; iMod .text:004014DF jmp ds:off_40161E[eax*4] .text:0040161E off_40161E dd offset loc_4014E6 ; DATA XREF: sub_401082+45Dr .text:00401622 dd offset loc_40151C .text:00401626 dd offset loc_401522 .text:0040162A dd offset loc_401536 Nimnul >в ebp космос который взялся из ниоткуда, по идее в ebp ссылка на текущий фрем стека для локальных >переменных, но ведь он должен быть инициализирован. дык тебе ведь сказали в отдельную процедуру код кидай, таких проблем не будет Сделал код базонезависимым - см. атач, с тебя пЫво =) в атаче: shitty_vers - версия со свитчем, work_vers - свитч переделан в цепочку if / else - стал базонезависимым ready2use_vers - исходник на асме, вроде можно юзать ) нужно будет сохранять edi, esi, ebx - убери три последних команды из последнего асм блока в дизасме пара лишних команд в конце присутствует(да и не только в конце) - правь сам, если нужно ЗЫ посмотреть на оригинальный исходник дизасма можно? ЗЗЫ а не проще(было ;) взять дизасм на асме? от z0mbie / sars'a? c41f_22.04.2006_CRACKLAB.rU.tgz - disasm.rar |
|
Создано: 22 апреля 2006 09:43 · Поправил: Nimnul · Личное сообщение · #12 dotblizz пишет: а не проще(было ;) взять дизасм на асме? от z0mbie / sars'a? не проще, еслиб мне нужен был только дизасм в таком виде, вопросов бы небыло, лень движет прогрессом, поэтому я хочу чтоб спп делал за меня всю нужную работу. дык тебе ведь сказали в отдельную процедуру код кидай, таких проблем не будет я уже понял что пропустил инициализацию фрейма стека. Пихать в отдельные функции неудобно в плане того, что нужно правильно расчитывать ее длинну. А так код между метками очень удобно и лениво ----- have a nice day |
|
Создано: 22 апреля 2006 12:32 · Личное сообщение · #13 |
eXeL@B —› Программирование —› CPP и базово независимый код |