好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 lxyg06 于 2017-5-25 11:32 编辑
注册码,一般都会进行数据的处理,比如取注册码第几位和某一个数进行加 减 或者替换某一个位的数字等,这就要用到汇编里面的mov sub add等这些命令了
mov指令的几种形式: mov 寄存器、 数据
mov ax,123mov 寄存器、 寄存器
mov bx,ax mov 寄存器、 内存单元
mov ax,[0]mov 内存单元、寄存器
mov [0],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] 将偏移地址为0的内存单元 - ax 再赋值给ax
一个简单的注册码验证程序,很简单的 取注册码中5这个字符,加上3 减去3 看看和之后的第一和第二是不是相等
汇编后的结果在整理
易语言汇编后变很复杂,还在整理中,为了不影响 用c写了一个一样的程序
汇编后
[Asm] 纯文本查看 复制代码
00401323 |. C785 70FFFFFF>mov [local.36],-0x1 ; |
0040132D |. 8D85 78FFFFFF lea eax,[local.34] ; |%s
00401333 |? 894424 04 mov dword ptr ss:[esp+0x4],eax ; kernel32.BaseThreadInitThunk
00401337 |? C70424 003040>mov dword ptr ss:[esp],未命名1.00403000 ; ASCII "%s"
0040133E |? E8 7D060000 call <jmp.&msvcrt.scanf>
00401343 |. C785 6CFFFFFF>mov [local.37],0x7B
0040134D |. 83BD 6CFFFFFF>cmp [local.37],0x5
00401354 |. 0F8E D0000000 jle 未命名1.0040142A
0040135A |. C785 68FFFFFF>mov [local.38],0x0
00401364 |> 8B85 68FFFFFF /mov eax,[local.38]
0040136A |. 3B85 6CFFFFFF |cmp eax,[local.37]
00401370 |. 7D 29 |jge short 未命名1.0040139B
00401372 |. 8D45 F8 |lea eax,[local.2]
00401375 |. 0385 68FFFFFF |add eax,[local.38]
0040137B |. 83C0 80 |add eax,-0x80
0040137E |. 8038 35 |cmp byte ptr ds:[eax],0x35
00401381 |. 75 0E |jnz short 未命名1.00401391
00401383 |. 8B85 68FFFFFF |mov eax,[local.38]
00401389 |. 8985 70FFFFFF |mov [local.36],eax ; kernel32.BaseThreadInitThunk
0040138F |. EB 0A |jmp short 未命名1.0040139B
00401391 |> 8D85 68FFFFFF |lea eax,[local.38]
00401397 |. FF00 |inc dword ptr ds:[eax]
00401399 |.^ EB C9 \jmp short 未命名1.00401364
0040139B |> 8B85 70FFFFFF mov eax,[local.36] ; |
004013A1 |. 8B95 6CFFFFFF mov edx,[local.37] ; |
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,[local.2] ; |
004013B3 |. 0385 70FFFFFF add eax,[local.36] ; |
004013B9 |. 83C0 80 add eax,-0x80 ; |
004013BC |. 0FB600 movzx eax,byte ptr ds:[eax] ; |
004013BF |. 04 03 add al,0x3 ; |
004013C1 |. 8885 77FFFFFF mov byte ptr ss:[ebp-0x89],al ; |
004013C7 |. 8D45 F8 lea eax,[local.2] ; |
004013CA |. 0385 70FFFFFF add eax,[local.36] ; |
004013D0 |. 83C0 80 add eax,-0x80 ; |
004013D3 |. 0FB600 movzx eax,byte ptr ds:[eax] ; |
004013D6 |. 2C 03 sub al,0x3 ; |
004013D8 |. 8885 76FFFFFF mov byte ptr ss:[ebp-0x8A],al ; |
004013DE |. 0FBE95 77FFFF>movsx edx,byte ptr ss:[ebp-0x89] ; |
004013E5 |. 8D45 F8 lea eax,[local.2] ; |
004013E8 |. 0385 70FFFFFF add eax,[local.36] ; |
004013EE |. 83E8 7F sub eax,0x7F ; |
004013F1 |. 0FBE00 movsx eax,byte ptr ds:[eax] ; |
004013F4 |. 39C2 cmp edx,eax ; |kernel32.BaseThreadInitThunk
004013F6 |. 75 32 jnz short 未命名1.0040142A ; |
004013F8 |. 0FBE95 76FFFF>movsx edx,byte ptr ss:[ebp-0x8A] ; |
004013FF |. 8D45 F8 lea eax,[local.2] ; |
00401402 |. 0385 70FFFFFF add eax,[local.36] ; |
00401408 |. 83E8 7E sub eax,0x7E ; |
0040140B |. 0FBE00 movsx eax,byte ptr ds:[eax] ; |
0040140E |. 39C2 cmp edx,eax ; |kernel32.BaseThreadInitThunk
00401410 |. 75 18 jnz short 未命名1.0040142A ; |
00401412 |. C70424 033040>mov dword ptr ss:[esp],未命名1.00403003 ; |注册成功
00401419 |. E8 9A050000 call <jmp.&msvcrt.printf> ; \printf
0040141E |. C785 64FFFFFF>mov [local.39],0x0
00401428 |. EB 16 jmp short 未命名1.00401440
0040142A |> C70424 0C3040>mov dword ptr ss:[esp],未命名1.0040300C ; |注册失败
00401431 |. E8 82050000 call <jmp.&msvcrt.printf> ; \printf
00401436 |. C785 64FFFFFF>mov [local.39],0x0
00401440 |> 8B85 64FFFFFF mov eax,[local.39]
00401446 |. C9 leave
00401447 \. C3 retn
加减
sub al,0x3 减去3
add al,0x3 加上3
赋值
mov [local.36],-0x1 赋-1
|
-
-
123.zip
2.06 KB, 下载次数: 28, 下载积分: 吾爱币 -1 CB
免费评分
-
查看全部评分
|