㈠ 求一汇编语言所写简单数据加密程序(求急,加分)
去掉了那个中断部分。
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
Encode db '7846302951'
Prompt_Str1 db 'Please input the orical code: $'
Prompt_Str2 db 7,13,10,13,10,'The encode: $'
Prompt_Str3 db 13,10,13,10,'Please record the encode and than press any key to continue...$'
String db 20,?,20 p(?) ;明码输入缓冲区
Start: push cs
pop ds
push cs
pop es
Output Prompt_Str1 ;提示输入明码
cld
lea di,String ;明码字符串地址
mov cx,20 ;明码数字个数,可以不到20个数字,回车键结束明码输入
Read_Encode:mov ah,1
int 21h
cmp al,13 ;回车?
jz Disp_Encode
cmp al,'0'
jb Read_Encode
cmp al,'9'
ja Read_Encode
stosb
loop Read_Encode
Disp_Encode:mov cx,di
sub cx,offset String ;实际输入的明码数字个数
lea si,String ;明码字符串地址
lea bx,Encode ;密码地址
Encoding: lodsb ;读入1位明码
and al,0fh
xlat ;查表,取得对应的密码
mov [si-1],al ;写密码
loop Encoding
mov byte ptr [si],'$' ;显示字符串采用DOS调用,9号功能,要求字符串以“$”结尾
Output Prompt_Str2 ;提示显示密码
Output String ;显示密码
Output Prompt_Str3 ;提示用户记录密码
mov ah,1
int 21h
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
补充回答:未知楼主要怎样的原创,这个是我百分之百的原创。此前提供的连接,也是我百分之百的原创。不知楼主用什么方法来判断回答者的答案是否原创。
㈡ 关于加密的和反汇编的
问题1:理论上是这样密钥长度增加会增加加密算法的强度,但是你的方法密钥长度增加一倍攻击难度也只提高了一倍,强度增加的太少了。如果你的算法就是简单的乘法的话,不用一个月几分钟就可以破解。建议采用DES,AES等成熟算法。 问题2:这的这种花指令写法无任何意义,一个好的C编译器会直接把 printf("xxxxx");优化掉不产生任何代码。花指令必须是汇编级别的。一个简单的例子,修改你的程序如下,你在反汇编看看。 #define JUNK_CODE_JMP1(xxx) __asm jl $+12 __asm jmp $+6 __asm _emit xxx JUNK_CODE_JMP1(0x55); printf("xxxxx"); JUNK_CODE_JMP1(0xaa); printf("yyyyy"); JUNK_CODE_JMP1(0xcc); return 21; 问题3:这个一句两句讲不完,推荐你一本书,写的很通俗,也很有趣。 书名:应用密码学(协议算法与C源程序) 【出版社】 机械工业出版社 【书号】 7111075889
㈢ 怎么防止程序被反汇编
这个有点难,毕竟程序的本源就是那样,不管你用什么手段,只要破解者有耐心最后都有可能被攻克的,目前这类问题的解决方法都是设置相关权限,加壳加密等,当然破解难度比较大的就是使用VM技术了,如果你们有足够的时间和足够的实力的话,可以自己开发一套指令系统用于你们的程序那么会加重反编译难度的~ 某种程度上说也是达到一种防止反编译的做法~
㈣ 反汇编区段加密代码
加区加密 都是小儿科的 给你一个 厉害的代码 输入表输出表 完全破坏 ! 实战输入表完全破坏 隐藏代码:(万能代码) 60 E8 01 00 00 00 00 58 80 38 00 0F 85 F5 00 00 00 FE 00 64 A1 30 00 00 00 8B 40 0C 8B 40 1C 8B 00 8B 40 08 8B D8 E8 0F 00 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 59 60 89 C3 89 CF 30 C0 AE 75 FD 4F 29 CF 87 F9 8B 43 3C 8B 74 03 78 8D 74 1E 18 AD 92 AD 50 AD 95 AD 95 01 D8 89 7C 24 18 89 4C 24 14 4A 74 27 8B 34 90 01 DE F3 A6 74 0A 8B 7C 24 18 8B 4C 24 14 EB EA D1 E2 01 D5 0F B7 44 1D 00 C1 E0 02 03 04 24 8B 04 03 01 D8 59 89 44 24 1C 89 5C 24 18 E8 12 00 00 00 00 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 59 83 C1 04 51 53 FF D0 89 44 24 14 E8 00 00 00 00 5D 81 E5 00 00 FF FF 33 C0 EB 06 81 ED 00 10 00 00 66 8B 45 00 66 3D 4D 5A 90 75 EF 8B 45 3C 8B 04 28 3D 50 45 00 00 75 E2 B8 48 61 11 00 36 8D 1C 28 8B 43 0C 85 C0 74 0A E8 0D 00 00 00 83 C3 14 EB EF 61 E9 82 8F F9 FF 90 90 53 8D 14 28 52 FF 54 24 20 8B D0 8B 5B 10 8D 1C 2B 8B 03 85 C0 74 23 3D 00 00 00 80 72 07 2D 00 00 00 80 EB 06 8D 04 28 83 C0 02 52 50 52 FF 54 24 30 89 03 83 C3 04 5A EB D7 5B C3
㈤ 对STM32F107编程时,使用什么方法能防止被别人反汇编,用什么方法能够加密谢谢
1,如果板子上有外部存储器,可以先编写一个程序,利用算法把id计算得到一些值存入外部存储器,然后再烧写真正的程序,真正的程序去校验外部存储器的数据是否合法即可
2,利用板子上按键组合,或是上电按住某些键,程序在这个时候利用算法把id计算得到一些值存入程序区(stm8为EE区),程序运行时去验证程序区数据是否正确
3,轩微编程器有软件加密的功能,编程器会读芯片id,根据算法直接改写缓冲区,达到软件加密的作用
4,读出的id通过一定算法,例如异或加上一个数,得到的数据存入flash(只运行一次,运行后标志位也存入flash),下次读到这个标志位,就不运行这个程序。
四、做软件加密时注意
1,不要在程序中直接出现id地址,例如STM32:1FFFF7E8 1FFFF7EC 1FFFF7F0 STM8: 0x4865~0x4870
2, 利用校验和或是crc对程序区进行校验,防止改程序
㈥ 用反汇编工具破解软件时最重要的步骤和破解方法
跟到程序内容的时候
最重要的必然是"_fmlyht"所说的调用(CALL)和跳转了
调用看的是所执行的功能函数
跳转则是看的程序走向于条件判断
但首要问题往往是如何看到程序内容
所以第一个要务必然是脱壳
压缩壳好办,大都能用ESP定律脱掉
即便不行,单步跟进也都OK~~
而且压缩壳大多都有专门的脱壳机
加密壳就费劲了,必须要根据代码研究算法,再通过算法还原
而且不少加密壳中带有Ati-Debug功能来反调试。
需要做一些隐藏工作(OD的很多插件都可以实现隐藏,效果不一)
脱壳之后也不是万事大吉了
在程序主体代码中也有可能夹杂一些花指令(JunkCode)
要知道如何去除花指令的干扰。
当然,程序中夹杂的不是花指令而是虚拟机保护……
就你提的问题所见你的水平可以直接放弃掉了……太难了……
说到头,如果你只是拿一些简单的CrackMe练手,那怎么都好说
直接搜索字符串然后下断跟进都OK~
但如果你要做真实的破解
那对抗各种各样的保护手段是无法避免的……
等你能对大部分常见的保护手段应付自如的时候,
具体怎么破解就不用别人教了~
㈦ 谁能将下列反汇编的代码给用C语言写出来,谢谢,高分
你这是IDA的伪代码,看起来像一段加密程序,如果没人能够帮你逆向出来的话,你可以试着在C语言中将汇编语句内嵌。
__asm
{
......
}
㈧ 给程序脱壳什么意思 反汇编什么意思
脱壳就是指把程序解密了,许多程序都是有加密的 反汇编就是你只有exe文件,需要辅助软件(比如Ollydbg、w32dsm以及编程环境vc6等)
㈨ 什么是反汇编
嘿嘿 汇编:就是将汇编语言源程序翻译成(机器指令表示的二进制文件)目标程序。
反汇编就是汇编的反过程,它是将可执行的目标程序翻译成汇编语言源程序的过程。也就是解密。
由于现在的保密意识到加强,一般在把目标程序写入芯片的同时,都采取了软件加密和硬件加密技术,反汇编的难度越来越大。
呵呵 满意 就选满意回答哦
㈩ 现在反编译工具比较猖狂,如何让自己写的程序加密,不被其反编译
我觉得有一种方法可以,就是不太实用: 首先你先在程序的初始化(开始运行的前几十行)写个解码函数来把程序的在解码函数之后运行的程序从乱码解码成正常可执行代码再加载程序解码后的代码,在程序结束时再修改解码函数或用另一种方法加密程序中的非解码函数部分!总之要反编译工具很难了解你的程序的运行逻辑,反正只要让该程序只能运行不能反编译!让用户只能选择要么删除要么运行,一旦运行一次就别想反编译了!还不懂的话就,找我 QQ:1211847476