win765 发表于 2017-5-25 12:14:12

零基础学习破解软件(第3课)

零基础学习破解软件(第3课)

注册码,通常都会进行数据的处理,比方取注册码第几位和某一个数进行加 减 或许替换某一个位的数字等,这就要用到汇编里边的mov sub add等这些指令了

mov指令的几种方式:mov寄存器、数据               
    mov ax,123mov寄存器、寄存器               
mov bx,ax mov寄存器、内存单元               
mov ax,mov内存单元、寄存器                  
mov ,ax mov段寄存器、寄存器                  
mov ds,axadd和sub指令和mov一样,都有2个操作目标。sub和add相似,不过是相减,
sub ax,10                给ax减10,以后的成果赋值给ax
sub ax,bx                语意是ax = bx - ax
sub ax,                将偏移地址为0的内存单元 - ax 再赋值给ax
一个简略的注册码验证程序,很简略的 取注册码中5这个字符,加上3 减去3 看看和以后的第一和第二是不是持平




汇编后的结果在收拾
易语言汇编后变很杂乱,还在收拾中,为了不影响用c写了一个相同的程序




汇编后
00401323|.C785 70FFFFFF>mov ,-0x1                      ; |
0040132D|.8D85 78FFFFFF lea eax,                     ; |%s
00401333|?894424 04   mov dword ptr ss:,eax         ;kernel32.BaseThreadInitThunk
00401337|?C70424 003040>mov dword ptr ss:,未命名1.00403000   ;ASCII "%s"
0040133E|?E8 7D060000   call <jmp.&msvcrt.scanf>
00401343|.C785 6XFFFFFF>mov ,0x7B
0040134D|.83BD 6XFFFFFF>cmp ,0x5
00401354|.0F8E D0000000 jle 未命名1.0040142A
0040135A|.C785 68FFFFFF>mov ,0x0
00401364|>8B85 68FFFFFF /mov eax,
0040136A|.3B85 6XFFFFFF |cmp eax,
00401370|.7D 29         |jge short 未命名1.0040139B
00401372|.8D45 F8       |lea eax,
00401375|.0385 68FFFFFF |add eax,
0040137B|.83C0 80       |add eax,-0x80
0040137E|.8038 35       |cmp byte ptr ds:,0x35
00401381|.75 0E         |jnz short 未命名1.00401391
00401383|.8B85 68FFFFFF |mov eax,
00401389|.8985 70FFFFFF |mov ,eax                      ;kernel32.BaseThreadInitThunk
0040138F|.EB 0A         |jmp short 未命名1.0040139B
00401391|>8D85 68FFFFFF |lea eax,
00401397|.FF00          |inc dword ptr ds:
00401399|.^ EB C9         \jmp short 未命名1.00401364
0040139B|>8B85 70FFFFFF mov eax,                     ; |
004013A1|.8B95 6XFFFFFF mov edx,                     ; |
004013A7|.29C2          sub edx,eax                              ; |kernel32.BaseThreadInitThunk
004013A9|.89D0          mov eax,edx                              ; |未命名1.<ModuleEntryPoint>
004013AB|.83F8 02       cmp eax,0x2                              ; |
004013AE|.7E 7A         jle short 未命名1.0040142A                  ; |
004013B0|.8D45 F8       lea eax,                        ; |
004013B3|.0385 70FFFFFF add eax,                     ; |
004013B9|.83C0 80       add eax,-0x80                            ; |
004013BC|.0FB600      movzx eax,byte ptr ds:            ; |
004013BF|.04 03         add al,0x3                               ; |
004013C1|.8885 77FFFFFF mov byte ptr ss:,al            ; |
004013C7|.8D45 F8       lea eax,                        ; |
004013CA|.0385 70FFFFFF add eax,                     ; |
004013D0|.83C0 80       add eax,-0x80                            ; |
004013D3|.0FB600      movzx eax,byte ptr ds:            ; |
004013D6|.2C 03         sub al,0x3                               ; |
004013D8|.8885 76FFFFFF mov byte ptr ss:,al            ; |
004013DE|.0FBE95 77FFFF>movsx edx,byte ptr ss:         ; |
004013E5|.8D45 F8       lea eax,                        ; |
004013E8|.0385 70FFFFFF add eax,                     ; |
004013EE|.83E8 7F       sub eax,0x7F                           ; |
004013F1|.0FBE00      movsx eax,byte ptr ds:            ; |
004013F4|.39C2          cmp edx,eax                              ; |kernel32.BaseThreadInitThunk
004013F6|.75 32         jnz short 未命名1.0040142A                  ; |
004013F8|.0FBE95 76FFFF>movsx edx,byte ptr ss:         ; |
004013FF|.8D45 F8       lea eax,                        ; |
00401402|.0385 70FFFFFF add eax,                     ; |
00401408|.83E8 7E       sub eax,0x7E                           ; |
0040140B|.0FBE00      movsx eax,byte ptr ds:            ; |
0040140E|.39C2          cmp edx,eax                              ; |kernel32.BaseThreadInitThunk
00401410|.75 18         jnz short 未命名1.0040142A                  ; |
00401412|.C70424 033040>mov dword ptr ss:,未命名1.00403003   ; |注册成功
00401419|.E8 9A050000   call <jmp.&msvcrt.printf>                ; \printf
0040141E|.C785 64FFFFFF>mov ,0x0
00401428|.EB 16         jmp short 未命名1.00401440
0040142A|>C70424 0C3040>mov dword ptr ss:,未命名1.0040300C   ; |注册失败
00401431|.E8 82050000   call <jmp.&msvcrt.printf>                ; \printf
00401436|.C785 64FFFFFF>mov ,0x0
00401440|>8B85 64FFFFFF mov eax,
00401446|.C9            leave
00401447\.C3            retn加减


sub al,0x3减去3
add al,0x3加上3

赋值



mov ,-0x1赋-1





幸运物牛 发表于 2017-5-25 13:27:04

页: [1]
查看完整版本: 零基础学习破解软件(第3课)