__asm { int 3 __emit 0x3E __emit 0xC5 __emit 0x3F int 3 __emit 0xC5 __emit 0xBF //0xC0 diStorm бага. __emit 0x00 __emit 0x00 __emit 0x00 __emit 0x00 } VS, OllyDbg, IDA pro кто будте прав?
Neonix ну и какой коммерческий реверс после этого? в crazy список минимум ) ты начнёш брать на себя посильные задачи?
wsd обыкновенный реверс не требует каких-то сверх знаний. это дело навыка. я Вам об этом уже говорил. не смейтесь надо мной=)
Что тут такое вообще написано? Какая-то непонятная мысль. Что такое Stack? std::stack? Тогда откуда return _stack.pop? метод stack::pop ничего не возвращает. Сам stack реализуется через другой контейнер std::deque. В отладчике нет никакой ошибки. std::stack реализует очередь по правилам LIFO, следовательно если туда запихнуть n элементов а потом с вершщины стека удалить два элемента, то последним удалённым будет n-1. Где ошибка?
W4FhLF Ну, для начала не будем путать хрен с маслом. Я про Сшарп, а Вы мне про приплюснутый С. Всё на пальцах расписано. Если хотите я вам исходник дам.
А она не должна выполняться когда вы её явно вызываете? С какой стати конструкция _stack.Pop() должна
KeSqueer Какие ещё топы нафиг? не то.. не "конструкция _stack.Pop()", а конструкция "public static Int32 StackItem {get {return _stack.Pop();}}". Все отлично работает(чего не скажешь об отладчике VS), но конечно Вам видней. В дальнейшем все вопросы не по теме очень прошу задавать через Личные Сообщения.
Приведи минимально рабочий код, который по твоему косячит, тогда и будет повод обсудить. А пока это всё выпендрёж и школота.
Booster Вот и я о том же, хватит уже писками мериться. вот код: Код (Text): namespace DebuggerTest { class Program { private static Stack<Int32> _stack = new Stack<Int32>(); public static Int32 StackItem { get { return _stack.Pop(); } } static void Main(string[] args) { _stack.Push(1); _stack.Push(2); _stack.Push(3); _stack.Push(4); _stack.Push(5); Int32 i = _stack.Pop(); try { Console.WriteLine(StackItem); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } }
Но наверное это как-то объясняется разыменовыванием статических переменных. Я не специалист в C#. Booster Брякнись на Console.WriteLine(StackItem);, потом наведи курсор на строку _stack.Push(5);, потом опять на то место куда брякнулся и так 5 раз. Стек с каждым разом будет пустеть.
Booster Ещё раз по кругу. При прохождении get{return _stack.Pop();} отладчик говорит о том, что StackItem уменьшился на один. То есть он выполняет return _stack.Pop(), из за этого стек уменьшается(в понимании дебагера). Int32 i = _stack.Pop() не уменьщает стек, что есть дзен, гуд, etc. Ок?
W4FhLF По-моему это не баг, а фича. Для того, чтобы получить значение отладчик дёргает метод get, отсюда и побочный эффект. ^)