Сейчас на форуме: localhost1, vsv1, asfa, tyns777 (+5 невидимых)

 [email protected] —› Вопросы новичков —› Нужен совет, как распознать порядок вычислений программы.
Посл.ответ Сообщение

Ранг: 0.4 (гость)
Активность: 0.04=0.04
Статус: Участник

Создано: 11 апреля 2020 15:31
· Личное сообщение · #1

Добрый день. Извините за скорей всего глупый вопрос.
Я работаю инженером, но со школы являюсь фаном программирования.
В школе я изучал html, php, sql.
Потом VBA, VB, C#, а сейчас пишу небольшие программы на C++.
А теперь к суте:
У меня на работе имеется программа с ключом флешкой, купленная и отлично работает, но у меня есть желание написать то же самое с небольшим изменением (Для меня более удобным).
Но, к сожелению в теории есть много решений данных задач, и даже с разными результами. (Теория математической обработки геодезических измерений "ТМОГИ").
Вот мне надо как то определить функции вычислений этой программы. Я в теории знаю что программы можно как то диасемблирить, но не когда этим не занимался и не знаю ассемблер.
Я купил вчера ваш видео курс, и сегодня скачиваю. Вот можете подсказать, что мне изучить для более быстрого решения моей проблемы?
Заранее большое спасибо, прошу камни в меня не кидать!




Ранг: 568.2 (!), 465thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 11 апреля 2020 15:45
· Личное сообщение · #2

zmk пишет:
Я в теории знаю что программы можно как то диасемблирить

zmk пишет:
и не знаю ассемблер

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

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.


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

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

Создано: 11 апреля 2020 15:51 · Поправил: dosprog
· Личное сообщение · #3

Если программа запротекчена, то скорей всего перед изучением потребуется её распаковка и отвязка от донгла.
Это может оказаться не такой уж простой задачей.
Так что сразу к её "изучению" приступить не получится,
а когда и если получится, то уже, может, и желание пропадёт.

Как наиболее простой вариант - можно попытаться сдампить программу из памяти
и уже этот дамп подсунуть в дизассемблер.



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


Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 11 апреля 2020 15:53
· Личное сообщение · #4

zmk пишет:
программа с ключом флешкой

Может получиться так, что нужный тебе алгоритм в этом шайтан-свистке исполняется, а в программе его не будет. Так что зондаж лучше начать с определения модели этой "флешки". Либо сразу забить.

-----
2 оттенка серого


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

Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 11 апреля 2020 15:59
· Личное сообщение · #5

zmk пишет:
Но, к сожелению в теории есть много решений данных задач, и даже с разными результами

Перебрать все решения и сравнить результаты с тем, что выдает программа, будет намного проще, чем реверсить ее. Особенно если "не знаю ассемблер", "никогда этим не занимался" и "программа с ключом-флешкой".

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

Ранг: 15.7 (новичок), 12thx
Активность: 0.050.07
Статус: Участник

Создано: 11 апреля 2020 16:03 · Поправил: BiteMoon
· Личное сообщение · #6

Изучайте ассемблер,исследуйте свою программу под отладчиком и/или дизассемблером...без этого ни как,а чтобы быстрее пишите в тему поиска специалистов,они справятся,Вам не придётся заморачиваться,правда спецы сделают за денежку...

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

Ранг: 0.4 (гость)
Активность: 0.04=0.04
Статус: Участник

Создано: 11 апреля 2020 17:17
· Личное сообщение · #7

Оу. Спасибо большое за такие быстрые ответы. Благодарен каждому, я даже и не думал что формум настолько жив!
ClockMan Знать асемблер на каком уровне? Можно ли подобраться к этому навыку за 1-2 месяца? Может какие то действенные учебники можешь подсказать? (сейчас с карантином много времени у меня появилось)
f13nd, Думаю что нет. ключ именуется в диспетчере устройств как Guardant Stealth II USB.
rmn К сожелению на это уйдёт очень много времени, так как задачи зависят от множества различных параметров. Я закончил вуз, и мы разбирали вручную, некоторые типы уравниваний, на примерах простых задач. Я столько исходных данных не смогу придумать что бы учесть все ньюансы. Расчеты затрагивают тему теории вероятности. Я поэтому и спрашиваю, стоит ли попытаться разобраться в этом, возможно такие навыки пригодяться в будущем.
BiteMoon Я бы конечно оплатил бы за это, но острой необходимости в этом нет, так как программа куплена, и все работает. А это просто некая моя хотелка, создать более удобное для меня приложение, с дальнейшим усовершенствованием. Пишу на С++, чисто для души, как хобби.
Ещё раз спасибо всем ответившим!

Добавлено спустя 11 минут
P.S. У меня тут ещё небольшие проблеммы с интернетом, поэтому до сих пор качаю видеокурс приобретенный на этом сайте. Там вроде есть раздел Реверсинг и уроки Асемблера. Может, те кто ознакомлен с этим курсом, может подсказать. Достаточно ли этого будет для достижения этой цели?




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

Создано: 11 апреля 2020 18:50
· Личное сообщение · #8

Самый простой способ научиться реверсу, а заодно и выучить ассемблер, это взять свою программу на С++ и дизассемблировать её. Начинать нужно с дебаг версии программы, когда по асм коду сможешь восстановить исходный код своих функций, то дизассемблируешь релиз версию и смотришь как изменился код. Заодно изучишь как выглядят конструкции языка С++ на ассемблере.
Но для приличного реверса чужих программ этого мало, нужно понимать на каком языке и с использованием каких библиотек (в том числе гуи) написана программа, т.к. реверсить придется в этот язык и эту среду исполнения. А реверс одного языка/системы в другой язык/систему это не для начинающих.

-----
Everything is relative...


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

Ранг: -9.5 (нарушитель), 2thx
Активность: 0.13=0.13
Статус: Участник

Создано: 11 апреля 2020 19:51
· Личное сообщение · #9

От модератора: Когда закончится твой бан, так и будешь посты писать



Ранг: -13.2 (нарушитель), 1thx
Активность: 0.09=0.09
Статус: Участник

Создано: 11 апреля 2020 21:53 · Поправил: ASMiral
· Личное сообщение · #10

модератор пишет:
Когда закончится твой бан, так и будешь посты писать


А какой ник у модератора можно узнать, если не секрет? И потом, двусмысленная формулировка. Что значит "так и будешь"? Имеется в виду, изменить стиль и исключить юмор или же намек на, вообще, самовыпилиться?



Ранг: -17.0 (нарушитель), 4thx
Активность: 0.23=0.23
Статус: Участник

Создано: 11 апреля 2020 23:17
· Личное сообщение · #11

zmk Молодой человек на эту тему есть анекдот приходит покупатель к продавцу на рынке и спрашивает сколько стоят ваши гранаты ? Продавец отвечает 10 000 килограмм . А почему так дорого? -Эээ дорогой иди домой тебе это не надо.



Ранг: 0.4 (гость)
Активность: 0.04=0.04
Статус: Участник

Создано: 11 апреля 2020 23:36
· Личное сообщение · #12

1-SDK Ну не совсем. Это не стоит того, что бы я заплатил за решение задачи. А тут я, для так сказать для саморазвития, я не спрашивал конкретный метод решения задачи, я поинтересовался для того, что бы понять смогу ли я это осилить и на что впервую очередь мне стоит уделить своё внимание. (Между прочим, за видеокурс я заплатил). Просто сейчас карантин, и появилось время для саморазвития. Исходя из ваших советов я сделал вывод, что для начала надо изучить ассемблер, затем уже подходить к изучению реверсинга. Ну и теперь, я знаю живой форум, где мне погут помочь если возникнут вопросы при изучении.
Ещё раз, всем большое спасибо!



Ранг: -4.1 (нарушитель), 6thx
Активность: 0.080.09
Статус: Участник

Создано: 12 апреля 2020 00:12
· Личное сообщение · #13

zmk

Тебе поможет большой брат это GOOGLE



Ранг: 0.4 (гость)
Активность: 0.04=0.04
Статус: Участник

Создано: 12 апреля 2020 00:18
· Личное сообщение · #14

Scorpion13 google меня сюда, к вам в гости и привёл! Сейчас у меня много литературки для изучения, на ближайших месяца два, точно хватит!
По идеи,я думаю вопрос уже исчерпан, и тему можно закрывать!




Ранг: 568.2 (!), 465thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 12 апреля 2020 00:48
· Личное сообщение · #15

zmk пишет:
ClockMan Знать асемблер на каком уровне?

знать его надо хорошо и иметь под боком мануал по опкодам, можно взять интелловский от --> сюда <--сюда
zmk пишет:
Может какие то действенные учебники можешь подсказать?

Я Учился по книге ASSEMBLER(В.И.Юров),

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.


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


Ранг: 90.1 (постоянный), 91thx
Активность: 0.290.56
Статус: Участник

Создано: 12 апреля 2020 03:02
· Личное сообщение · #16

ClockMan пишет:
знать его надо хорошо и иметь под боком мануал по опкодам, можно взять интелловский

Зачем хорошо? Сейчас ида есть с декомпилятором, чтобы понять что делает программа из под компиля достаточно знать совсем чучуть.
Тем более маны интела, там новичок ногу сломит, есть куча более читаемых источников, хотя по большому счету все они взяты оттуда.
Сейчас насоветуете челу, а он после будет до сблева это вкуривать, когда ему все и не пригодится сразу.

-----
В облачке многоточия





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 12 апреля 2020 06:29
· Личное сообщение · #17

zmk пишет:
Теория математической обработки геодезических измерений "ТМОГИ"

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 63.5 (постоянный), 35thx
Активность: 0.290.96
Статус: Участник

Создано: 12 апреля 2020 08:48
· Личное сообщение · #18

Понять математическую модель по дизассемблированному коду - это все равно что научиться лечить человека, разрезав его на кусочки. Обычно делают наоборот - сперва изучают матмодели а потом ищут их реализацию в полученной безумной каше из команд процессора. И да, чаще всего проще самому написать, чем реверсировать готовое, трудозатраты несоизмеримые.



Ранг: -13.2 (нарушитель), 1thx
Активность: 0.09=0.09
Статус: Участник

Создано: 12 апреля 2020 10:06 · Поправил: ASMiral
· Личное сообщение · #19

_MBK_ пишет:
Понять математическую модель по дизассемблированному коду - это все равно что научиться лечить человека, разрезав его на кусочки.


По-моему, все еще зависит от квалификации реверсера, на которую больше всего влияет практика, опыт. Понятно, что какому-нибудь новичку проще месяц в шахте отработать, а квалифицированному, опытному специалисту как раз наоборот.


_MBK_ пишет:
И да, чаще всего проще самому написать, чем реверсировать готовое, трудозатраты несоизмеримые.


Золотой серединой, тут наверное будет, это когда код реверсят не очень подробно\дотошно, а просто чтобы понять, что он примерно делает, а потом пишут свой похожий код.



Ранг: -17.0 (нарушитель), 4thx
Активность: 0.23=0.23
Статус: Участник

Создано: 12 апреля 2020 20:38 · Поправил: 1-SDK
· Личное сообщение · #20

ASMiral Молодой человек а вот имея уже на руках исходный код даже с комент-Ариями правда под дос и чуть для другого диска, вы как знающий за сколько сможете из ассемблера перевести программу в код c++ vb6 win 32 ?.вот код
Code:
  1. ; AntiFlop
  2. ;
  3.          page    55,132
  4. _Text   segment para public 'CODE'
  5.          assume  cs:_Text
  6. ToOld:                                  ;=== Passing control to the old handler
  7.                  db      0EAh            ; This is code for JMP FAR
  8. OldOff          dw      0               ; Here will be ofsset
  9. OldSeg          dw      0               ; Here will be segment
  10.  
  11. InActive        equ     0
  12. Active          equ     13h
  13. ActInd          db      0
  14. PresInd         dw      1951            ; This code is an indicator of presence
  15.  
  16. Handler label   byte                    ; Beginning of new handler for INT 13
  17.          cmp     ActInd,Active           ; Is the active mode set?
  18.          jne     ToOld                   ; If not, jump to the old handler
  19.          cmp     dl,79h                  ; Is the floppy disk requested?
  20.          ja      ToOld                   ; If not, jump to the old handler
  21.  
  22.          cmp     ah,03h                  ; Function 03 - write sector
  23.          je      WriSec                  ; new handler for function 03
  24.          cmp     ah,0Bh                  ; Function 0B - write long sector
  25.          je      WriSecL                 ; new handler for function 0Bh
  26. ; cmp ah,0Fh ; Function 0Fh - write buffer
  27. ; je WriBuf ; new handler for function 0Fh
  28.          jmp     ToOld                   ; Others processed by old handler
  29.  
  30. WriSec:
  31. WriSecL:
  32. WriBuf:
  33.  
  34.          mov     ah,04h                  ; Function 04h - verify sector
  35.          jmp     ToOld                   ; Pass this fiunction to the handler
  36.  
  37. ;
  38. ; End of new handler for interrupt 13h
  39. ;
  40.  
  41.  
  42. ;
  43. ; NON - RESIDENT PART OF THE PROGRAM
  44. ;
  45. ParmInd db      0
  46. PspAddr dw      ?
  47. Start:
  48.          mov     PspAddr,es              ; Save address of PSP
  49.  
  50.          mov     ax,3513h                ; Get handler's address
  51.          int     21h                     ; ES - segment, BX - offset
  52.          mov     ax,es:[bx-2]            ; Vector points to this handler ?
  53.          cmp     ax,cs:PresInd
  54.          je      Already                 ; If not - put message end exit ========
  55. Install:                                ; Installation starts here
  56.          push    cs
  57.          pop     ds
  58.          mov     ah,09
  59.          lea     dx,BegMsg
  60.          int     21h
  61.          mov     cs:OldOff,bx            ; Save offsett of old handler
  62.          mov     cs:OldSeg,es            ; Save segment of old handler
  63.          mov     ax,cs                   ; Command segment of this program
  64.          mov     ds,ax                   ; into DX (for setting handler)
  65.          cli                             ; Caution! critical part of program
  66.          mov     dx,offset Handler       ; Address of handler
  67.          mov     ax,2513h                ; Function 25h - Set new handler
  68.          int     21h                     ; Dos service call
  69.          sti                             ; Critical part finishes here
  70.          mov     ActInd,Active           ; Set activity ON
  71.          lea     dx,Loaded               ; DX - address of message
  72.          mov     ah,09h                  ; Function 09 - output string
  73.          int     21h                     ; DOS service call
  74.          lea     dx,INSTALL
  75.          add     dx,15
  76.          mov     cx,4                    ; Set counter for shift
  77.          shr     dx,cl                   ; 4 bits to the right - divide by 16
  78.          add     dx,16                   ; Add size of PSP
  79.          mov     ax,3100h                ; Terminate and
  80.          int     21h                     ; state resident
  81.  
  82. NormExit:
  83.          mov     al,00h                  ; Return code = 0
  84.          jmp     FullExit                ; Print message and leave the program
  85.  
  86. ErrExit:
  87.          mov     al,01h                  ; Return code = 1
  88. FullExit:
  89.          push    ax                      ; Save return code
  90.          mov     ah,09h                  ; Function 09 - output string
  91.          int     21h                     ; DOS service call
  92.          pop     ax                      ; Restore return code
  93.          mov     ah,4Ch                  ; Function 4Ch - stop, return code AL
  94.          int     21h                     ; DOS service call
  95.  
  96. Already:
  97.          push    cs                      ; Copy the value of CS
  98.          pop     ds                      ; into the register DS
  99.          mov     ax,PspAddr              ; Addres of PSP into AX
  100.          mov     es,ax                   ; ES now contains the segment of PSP
  101.          mov     bl,byte ptr es:[80h]    ; Get length of parameters
  102.          cmp     bl,1                    ; Are there parameters?
  103.          jle     NoParm                  ; If not, set the indicater "NoParm"
  104.          mov     bx,82h                  ; BX - the beginning of parameters
  105.          cmp     byte ptr es:[bx],'/'
  106.          jne     CheckS
  107. SkipSep:
  108.          inc     bx
  109.          jmp     CheckLet
  110. CheckS: cmp     byte ptr es:[bx],'-'
  111.          je      SkipSep
  112. CheckLet:
  113.          cmp     byte ptr es:[bx],'?'
  114.          je      Help
  115.          and     byte ptr es:[bx],0DFh   ; Force the first letter uppercase
  116.          cmp     byte ptr es:[bx],'H'
  117.          je      Help
  118.          cmp     byte ptr es:[bx],'O'    ; Is the first letter 'O'
  119.          jne     InvParm                 ; If not - missing or invalid
  120.          and     byte ptr es:[bx+1],0DFh ; Force the second letter uppercase
  121.          cmp     byte ptr es:[bx+1],'N'  ; Is the second letter 'N'?
  122.          je      TurnOn                  ; If not, check "OFF"
  123.          cmp     byte ptr es:[bx+1],'F'  ; Is the second letter 'F'?
  124.          jne     InvParm                 ; If not - invalid parameter
  125.          and     byte ptr es:[bx+2],0DFh ; Force the second letter uppercase
  126.          cmp     byte ptr es:[bx+2],'F'  ; Is the second letter 'N'
  127.          jne     InvParm                 ;
  128.          mov     ParmInd,InActive        ;
  129.          lea     dx,MakeOff              ;
  130.          jmp     Switch                  ;
  131.  
  132. TurnOn:
  133.          lea     dx,MakeOn               ;
  134.          mov     ParmInd,Active          ;
  135. Switch:
  136.          mov     ax,3513h                ; Get handler's address
  137.          int     21h                     ; ES - segment, BX - offset
  138.          mov     al,Parmind              ;
  139.          mov     byte ptr es:[bx-3],al   ;
  140.          jmp     NormExit
  141. NoParm:
  142.          mov     ax,3513h                ; Get handler's address
  143.          int     21h                     ; ES - segment, BX - offset
  144.          cmp     byte ptr es:[bx-3],Active
  145.          jne     IsOff                   ;
  146.          lea     dx,MakeOn               ;
  147.          jmp     NormExit                ;
  148. IsOff:  lea     dx,MakeOff              ;
  149.          jmp     NormExit                ;
  150. Help:   lea     dx,HelpTxt
  151.          jmp     NormExit
  152.  
  153. InvParm:
  154.          lea     dx,Invalid              ; DX := addres of message text
  155.          jmp     ErrExit
  156.  
  157. CR      equ     0Ah
  158. LF      equ     0Dh
  159. EndMsg  equ     24h
  160. BegMsg  db      CR,LF,'<You need cyrillic driver to read messages of program!>',CR,LF
  161.          db      'Ђ­вЁ”«®Ї, ўҐабЁп 666',CR,LF
  162. CRLF    db      CR,LF,EndMsg
  163. Invalid db      'ЋиЁЎЄ  - ­ҐўҐа­лҐ Ї а ¬Ґвал!',CR,LF,EndMsg
  164. Loaded  db      'Ђ­вЁ”«®Ї Ё­бв ««Ёа®ў ­!',CR,LF,EndMsg
  165. MakeOn  db      'Ђ­вЁ”«®Ї ўЄ«о祭!',CR,LF,EndMsg
  166. MakeOff db      'Ђ­вЁ”«®Ї ўлЄ«о祭!',CR,LF,EndMsg
  167. HelpTxt db      CR,LF
  168.          db      CR,LF,'Ђ­вЁ”«®Ї § йЁй Ґв ‚ иг Ё­д®а¬ жЁо б гва  ¤® ўҐзҐа !'
  169.          db      CR,LF,'Љагв® ®Ў«®¬пвбп вҐ, Єв® Ї®Їлв овбп б«Ёвм ‚ иЁ д ©«л,'
  170.          db      CR,LF,'Ї®Є  ‚л Ї®и«Ё ЄгаЁвм. Ћ­Ё ¤ ¦Ґ ­ЁзҐЈ® ­Ґ § ¬Ґвпв, Ё'
  171.          db      CR,LF,'Ўг¤гв в йЁвмбп - Єагв® ¬л, ¤ҐбЄ вм, д ©«л б«Ё«Ё...'
  172.          db      CR,LF,'Ђ Ї а®«м ­  ЇҐаҐ§ Јаг§Єг г ‚ б, Є®­Ґз­®, Ґбвм!',CR,LF
  173.          db      CR,LF,'€бЇ®«м§®ў ­ЁҐ:',CR,LF
  174.          db      CR,LF,'AntiFlop [on | off | /? | /h | -? | -h] ',CR,LF
  175.          db      CR,LF,'Џ а ¬Ґвал Є®¬ ­¤­®© бва®ЄЁ:',CR,LF
  176.          db      CR,LF,'on - ‚Є«озЁвм § йЁвг!'
  177.          db      CR,LF,'off - ‚лЄ«озЁвм § йЁвг!'
  178.          db      CR,LF,'¤агЈЁҐ Ё§ бЇЁбЄ  - ўл¤ вм нв®в ⥪бв',CR,LF
  179.          db      CR,LF,'‡ ЇгбЄ Їа®Ја ¬¬л ЎҐ§ Ї а ¬Ґва®ў Ї®Є ¦Ґв'
  180.          db      CR,LF,'⥪г饥 б®бв®п­ЁҐ AntiFlop` .',CR,LF
  181.          db      CR,LF,'†аҐв 512 Ў ©в Ї ¬пвЁ.'
  182.          db      CR,LF,'ЏҐаўл© § ЇгбЄ Ї а ¬Ґва®ў ­Ґ вॡгҐв.'
  183.          db      CR,LF,EndMsg
  184. _text   ends
  185.          end     Start
сама программа предназначена для защиты записи флопи дисков под дос при записи будет писаться мусор а программа должна висеть тихо в памяти как служба, Внимание вопрос имея исходники сделать тоже самое под USB накопители сколько уйдёт времени и как решат эту проблему корифеи форума Boostyq f13nd ex_DMA.
Доспрог и Клокман сняты с пробега и не участвует в ответе.



Ранг: 63.5 (постоянный), 35thx
Активность: 0.290.96
Статус: Участник

Создано: 12 апреля 2020 20:53
· Личное сообщение · #21

1-SDK пишет:
Внимание вопрос имея исходники сделать тоже самое под USB накопители

Вопрос звучит примерно так: "Дано: полная техническая документация на свисток от паровоза. Как имея ее создать автопилот для современного авиалайнера?"




Ранг: 90.1 (постоянный), 91thx
Активность: 0.290.56
Статус: Участник

Создано: 12 апреля 2020 21:12
· Личное сообщение · #22

1-SDK пишет:
как решат эту проблему корифеи форума

Если хочешь посмотреть как я что-то решаю - заплати мне.
Но конкретно эта задача - шляпа, зачем переводить этот кал птеродактиля в Си, если написание анало гичной тулзы для USB, не будет иметь ничего с ней общего.

-----
В облачке многоточия




Ранг: 63.5 (постоянный), 35thx
Активность: 0.290.96
Статус: Участник

Создано: 12 апреля 2020 21:33 · Поправил: _MBK_
· Личное сообщение · #23

1-SDK пишет:
перевести программу в код c++

На си, говорите?



Ранг: 9.1 (гость), 20thx
Активность: 0.040.08
Статус: Участник

Создано: 12 апреля 2020 21:53
· Личное сообщение · #24

1-SDK пишет:
mov     ah,09
lea     dx,BegMsg
int     21h


Это сильно, давно такого не видел. Хотя так смотрю, а ассемблер то и не изменился почти.

zmk, там выше была книга посоветована ClockMan, я её читал лет так цать/пятнадцать назад, стоит в библиотеке, в ней алгоритмы хорошо раскрыты, вроде были даже графы/сортировки и т.п. на ассемблере (:s14, но, по-моему, для новичка сложновато.

Рискну предложить Крупника "Изучаем ассемблер". Супер тонкая книжечка, читаемая за обедом, и актуальная до сих пор. Читается как попса, а результат превзойдёт Ваши ожидания)

| Сообщение посчитали полезным: 1-SDK, zmk

Ранг: 106.6 (ветеран), 7thx
Активность: 0.040.02
Статус: Участник

Создано: 13 апреля 2020 00:53
· Личное сообщение · #25

Уважаемые модераторы - может закроем уже это безобразие?


 [email protected] —› Вопросы новичков —› Нужен совет, как распознать порядок вычислений программы.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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