Домашния бележки хакерски приложения, използващи Ида про и xvi32

Сух приложения, използващи Ида Pro и Xvi32. Писане кръпка.

Например, аз взех една програма конзола, която дадох като дом за задачи за програмиране. Програмата "мисли за" число от 1 до 100, а потребителят трябва да го позная. По-малко от 7 опита да отгатнат невъзможни, тъй като Всъщност няма предположение брой не е: програмата е максималната дължина на номера, не се научили от потребителя. Това означава, че ако потребителят въведе числото 30, програмата казва, че неизвестен брой повече, и го поставя в диапазона от 31 до 100. Ако въведете 90, а след това границите ще бъде от 31 до 89 и така нататък, докато един брой остава, което и ще бъде "простря". Нека се опитаме да се уверите, че потребителят винаги е в състояние да се отгатне броя за първи път.

1. Отваряме нашата молба Търсейки-1.EXE в дебъгер Ида Pro. Програма Тип - PE изпълним. Отговорете с "да" на въпроса за създаването на Внос сегмент.

2. Сега са полезни прозорец «Разглобяване» и «Strings Window». Ако те не са отворени, отворете го чрез View - Отворени Subviews.

а. От лявата страна има стрелка, която ни показва, че от известно парче код, програмата се връща към извода, че надписът "Предполагам, че броят". Искам да кажа, че ние сме осигурили началото на цикъла. Ако се чудите къде програмата се връща към началото на цикъла, направете едно кликване върху надписа «loc_4012CF:». Тя подчерта в жълто. Сега, ако превъртите надолу кода, можем да видим JMP-инструкции, както е отбелязано от жълтото, което води до началото на цикъла. В допълнение към тях, се показва като "по-голяма от" и "по-малко". Ясно е, че тук ще се показват съобщенията за грешен резултат и се върнете в началото на цикъла.

б. В долната част има една линия, информиране на факта, че ние сме се досетили броя. Това означава, че ако програмата не е "пропуснати" в по-ниските части на кода, той ще достигне до надписа "Вие познахте ... за опита!". Нашата цел - да се направи програмата продължи до този ред независимо от резултата.

5. За да се движат от това, ние трябва да заменим условните скокове. В този случай, две jnz-инструкции, които 004012F9 видят в ред и 00401301. Преди всяка от тези данни документ е сравнение, които са в EAX регистър с данни от ЕВР. Между другото, двете пунктирани стрелки ни позволяват да се разбере какво е наистина управление на програмата се предава някъде.

6. Необходимо е да се замени условни конструкции JNZ на NOP отчети. NOP означава "не се прави нищо и да преминете към следващия ред." За да имат представа за това, което ние ще трябва да бъдат заменени, изберете една от инструкциите и отворете раздела "HEX изглед"

7. Сега, когато знаем къде и какво трябва да се промени. Да отворим нашата програма XVI32 и да намерят необходимите байта.

Замяна на стойностите в четирите клетки на 90 и спаси програмата.

8. И сега - най-вълнуващата сцена - тичам EXE-променени shki :)

В действителност, ние се въведе произволен брой пъти и първото предположение номер. Той е работил!

Съставете този файл, поставете го в папката със стария 1.EXE, се изпълнява. Програмата е счупен.