
Скриншот программы Mp3 Audio Editor
Mp3 Audio Editor - простой редактор для музыкальных файлов, но при этом он обладает всеми необходимыми функциями для любительского аудиомонтажа. Mp3 Audio Editor позволяет записывать звук из внешних источников, накладывать на него различные эффекты, а потом записывать готовый результат на CD-диски или выкладывать в интернет. За все это добро аффтар предлагает нам расстаться аж с 40 баксами, тогда как я считаю, что искусство должно принадлежать народу бесплатно.
Скачиваем
дистрибутив, устанавливаем, смотрим что у нас получилось. В папке с программой целая куча исполняемых файлов, похоже, что для каждого действия (запись дисков, редактирование файлов) предусмотрена своя утилита. Главный исполняемый файл называется Mp3AudioEditor.exe, он ничем не упакован, так что просто отправляем его в дизассемблер, а сами посмотрим, как проявляются ограничения незарегистрированной версии программы.

Окно регистрации программы
Здесь же информация об оставшемся триальном сроке, а также поля для ввода имени и серийного номера. На ввод левых данных программа реагирует вот таким сообщением:

Сообщение о неправильной регистрации
Смотрим в дизассемблере, при каких условиях появляется это сообщение. Параллельно запустим программу под отладчиком и отработаем этот же участок кода в пошаговом режиме. Комментарии я сразу же расставил, исходя из результатов отладки:
...
CODE:00627917 lea edx, [ebp+var_10]
CODE:0062791A mov eax, [ebp+var_8]
CODE:0062791D call sub_409B04
CODE:00627922 mov eax, [ebp+var_10]
CODE:00627925 mov edx, ds:off_6D5ACC
CODE:0062792B mov edx, [edx+8]
; Сравнить серийник со строкой "MAE-TF477-46YM4-W74MH-6YDQ8"
CODE:0062792E call sub_4051E4
CODE:00627933 jz short loc_62799F
CODE:00627935 lea edx, [ebp+var_14]
CODE:00627938 mov eax, [ebp+var_8]
CODE:0062793B call sub_409B04
CODE:00627940 mov eax, [ebp+var_14]
CODE:00627943 mov edx, ds:off_6D5ACC
CODE:00627949 mov edx, [edx+0Ch]
; Сравнить серийник со строкой "MAE-TF477-46YM4-W74MH-6YDQ9"
CODE:0062794C call sub_4051E4
CODE:00627951 jz short loc_62799F
CODE:00627953 lea edx, [ebp+var_18]
CODE:00627956 mov eax, [ebp+var_8]
CODE:00627959 call sub_409B04
CODE:0062795E mov eax, [ebp+var_18]
CODE:00627961 mov edx, ds:off_6D5ACC
CODE:00627967 mov edx, [edx+10h]
; Сравнить серийник со строкой "MAE-TF477-46YM4-W74MH-6YD10"
CODE:0062796A call sub_4051E4
CODE:0062796F jz short loc_62799F
CODE:00627971 loc_627971:
CODE:00627971 push 30h ; uType
CODE:00627973 lea edx, [ebp+var_1C]
CODE:00627976 mov eax, ds:off_6D595C
CODE:0062797B mov eax, [eax]
CODE:0062797D call sub_4742B8
CODE:00627982 mov eax, [ebp+var_1C]
CODE:00627985 call sub_405298
; Вывести сообщение о неудачной регистрации
CODE:0062798A mov ecx, eax ; lpCaption
CODE:0062798C mov edx, offset aTheRegistratio
; "The registration details you have enter"...
CODE:00627991 mov eax, ds:off_6D595C
CODE:00627996 mov eax, [eax]
CODE:00627998 call sub_474944
CODE:0062799D jmp short loc_6279ED
CODE:0062799F ; -------------------------------------
CODE:0062799F loc_62799F:
; Вывести сообщение об успешной регистрации
CODE:0062799F push 40h ; uType
CODE:006279A1 lea edx, [ebp+var_20]
CODE:006279A4 mov eax, ds:off_6D595C
CODE:006279A9 mov eax, [eax]
CODE:006279AB call sub_4742B8
CODE:006279B0 mov eax, [ebp+var_20]
CODE:006279B3 call sub_405298
CODE:006279B8 mov ecx, eax ; lpCaption
CODE:006279BA mov edx, offset aThankYourForSu
; "Thank your for support."
CODE:006279BF mov eax, ds:off_6D595C
CODE:006279C4 mov eax, [eax]
...
Что мы имеем? Для любого имени в программе может быть только три серийных номера: "MAE-TF477-46YM4-W74MH-6YDQ8", "MAE-TF477-46YM4-W74MH-6YDQ9" или "MAE-TF477-46YM4-W74MH-6YD10". При вводе любого из трех серийников программа благодарит за регистрацию. А если поискать по сигнатурам серийника в листинге дизассемблера, то обнаружатся и еще более интересные вещи, например:
CODE:006ADEDB call sub_404E00
CODE:006ADEE0 lea eax, [ebx+8]
CODE:006ADEE3 mov edx, offset aFaeTf47746ym4W
; "FAE-TF477-46YM4-W74MH-6YDQ8"
CODE:006ADEE8 call sub_404E00
CODE:006ADEED lea eax, [ebx+0Ch]
CODE:006ADEF0 mov edx, offset aFaeTf47746ym_0
; "FAE-TF477-46YM4-W74MH-6YDQ9"
CODE:006ADEF5 call sub_404E00
CODE:006ADEFA lea eax, [ebx+10h]
CODE:006ADEFD mov edx, offset aFaeTf47746ym_1
; "FAE-TF477-46YM4-W74MH-6YD10"
CODE:006ADF02 call sub_404E00
CODE:006ADF07 lea eax, [ebx+14h]
CODE:006ADF0A mov edx, offset aHttpWww_freeAu
; "http://www.free-audio-editor.com/"
CODE:006ADF0F call sub_404E00
чуть дальше:
Code (Assembler) : Убрать нумерацию
CODE:006ADFC8 call sub_404E00
CODE:006ADFCD lea eax, [ebx+8]
CODE:006ADFD0 mov edx, offset aPseTf47746ym4W
; "PSE-TF477-46YM4-W74MH-6YDQ8"
CODE:006ADFD5 call sub_404E00
CODE:006ADFDA lea eax, [ebx+0Ch]
CODE:006ADFDD mov edx, offset aPseTf47746ym_0
; "PSE-TF477-46YM4-W74MH-6YDQ9"
CODE:006ADFE2 call sub_404E00
CODE:006ADFE7 lea eax, [ebx+10h]
CODE:006ADFEA mov edx, offset aPseTf47746ym_1
; "PSE-TF477-46YM4-W74MH-6YD10"
CODE:006ADFEF call sub_404E00
CODE:006ADFF4 lea eax, [ebx+14h]
CODE:006ADFF7 mov edx, offset aHttpWww_freeSo
; "http://www.free-sound-editor.com/"
CODE:006ADFFC call sub_404E00
CODE:006AE001 lea eax, [ebx+18h]