当前位置:首页 » 编程语言 » 破译c语言

破译c语言

发布时间: 2024-07-13 06:19:10

① 二进制数字密码的破译

可以运用ReverseMe来二进制数字密码的破译,需要了解以下的内容:

1、寄存器:

寄存器就好比是CPU身上的口袋,方便CPU随时从里边拿出需要的东西来使用。常见涉及到的九个寄存器:

EAX:扩展累加寄存器;EBX:扩展基址寄存器;ECX:扩展计数寄存器;

EDX:扩展数据寄存器;ESI:扩展来源寄存器;EDI:扩展目标寄存器;

EBP:扩展基址指针寄存器;ESP:扩展堆栈指针寄存器;EIP:扩展的指令指针寄存器;

这些寄存器的大小是32位(4个字节),他们可以容纳数据从0-FFFFFFFF(无符号数),除了以下三个寄存器,其他我们都可以随意使用:

EBP:主要是用于栈和栈帧。ESP:指向当前进程的栈空间地址。EIP:总是指向下一条要被执行的指令。

2、栈:栈是在内存中的一部分,它有两个特殊的性质:

FILO(FisrtInLastOut,先进后出);地址反向增长(栈底为大地址,栈顶为小地址)。

3、CALL指令,call有以下几种方式:

call404000h;直接跳到函数或过程的地址;calleax;函数或过程地址存放在eax,calldwordptr[eax]。

4、系统API:Windows应用程序运行在Ring3级别,API函数,我们也称之为系统提供给我们的接口。因为系统只信任自己提供的函数,所以我们要通过API才能实现对内核的操作。

5、mov指令mov指令格式:movdest,src。

这是一个很容易理解的指令,mov指令将src的内容拷贝到dest,mov指令总共有以下几种扩展:movs/movsb/movsw/movsdedi,

esi:这些变体按串/字节/字/双字为单位将esi寄存器指向的数据复制到edi寄存器指向的空间。movsx符号位扩展,byte->word,word->dword(扩展后高位全用符号位填充)。

然后实现mov。movzx零扩展,byte->word,word->dword(扩展后高位全用0填充),然后实现mov。

6、cmp指令,cmp指令格式:cmpdest,src

cmp指令比较dest和src两个操作数,并通过比较结果设置C/O/Z标志位。

cmp指令大概有以下几种格式:

cmpeax,ebx;如果相等,Z标志位置1,否则0。cmpeax,[404000];将eax和404000地址处的dword型数据相比较并同上置位cmp[404000],eax;同上。

7、标志位:在破解中起到的作用是至关重要的。

在逆向中,你真正需要关心的标志位只有三个,也就是cmp指令能修改的那三个:Z/O/C。

Z标志位(0标志),这个标志位是最常用的,运算结果为0时候,Z标志位置1,否则置0。

O标志位(溢出标志),在运行过程中,如操作数超出了机器能表示的范围则称为溢出,此时OF位置1,否则置0。

C标志位(进位标志),记录运算时从最高有效位产生的进位值。例如执行加法指令时,最高有效位有进位时置1,否则置0。

掌握这些指令后就可以运用ReverseMe来二进制数字密码的破译。

(1)破译c语言扩展阅读:

在数学和数字电路中,二进制(binary)数是指用二进制记数系统,即以2为基数的记数系统表示的数字。这一系统中,数通常用两个不同的符号0(代表零)和1(代表一)来表示。

以2为基数代表系统是二进位制的。数字电子电路中,逻辑门的实现直接应用了二进制,因此现代的计算机和依赖计算机的设备里都用到二进制。每个数字称为一个比特(二进制位)。

把二进制化为八进制也很容易,因为八进制以8为基数,8是2的幂(8=2),因此八进制的一位恰好需要三个二进制位来表示。八进制与二进制数之间的对应就是上面表格中十六进制的前八个数。二进制数000就是八进制数0,二进制数111就是八进制数7,以此类推。

② C语言编程题目:破译密码

编好了,下载地址:

http://www.163disk.com/fileview_148907.html

显示界面如下:

③ ACM中的C语言题目:密码替换

“这道题目。。。首先我看不懂他要我干什么希望明白人给我讲讲。然后希望能给出程序甚至只是思路”
回答:他要你破译密码啊,这个是典型的移位加密
加密方法是:密文字母=(明文字母+密钥)%26
当然,密文字母和明文字母都是数字表示的。
我们可以假设:a对应数字1,b对应数字2,依次类推
相应我们有解密方法:明文字母=(密文字母-密钥)%26
这样的话,根据题意只要我们需要尝试每一个密钥,才能破解密文
显然密钥只有0到25这26种可能。
根据题意,用蛮力法尝试这26种可能,并且正确的密钥会得到一句“the quick brown fox jumps over the lazy dog?”的明文。
所以思路可以是:
对密文尝试用密钥去破解,得到相应的明文,如果明文中有句子“the quick brown fox jumps over the lazy dog?”则相应的密钥就是真实的密钥,否则尝试下一个密钥。
“这个题目限定的内存只有1MB,时间1s,所以注意算法的高效性,谢谢各位高手”
关于效率,你不需要担心,题目的密钥只要26种可能,用蛮力法破解也不用担心超时的问题。

热点内容
qq为什么密码修改好了就进不去 发布:2024-11-26 11:37:05 浏览:382
电容为啥耐压越大存储量越小 发布:2024-11-26 11:31:52 浏览:189
天然气车载储气瓶泄露处置脚本 发布:2024-11-26 11:17:36 浏览:254
换ip的服务器 发布:2024-11-26 11:17:29 浏览:75
容器平台怎么看配置 发布:2024-11-26 11:06:09 浏览:940
qq的xml源码 发布:2024-11-26 11:04:05 浏览:704
ip设计缓存设置 发布:2024-11-26 10:56:49 浏览:107
c语言k值 发布:2024-11-26 10:48:53 浏览:870
Java霸王大陆 发布:2024-11-26 10:44:52 浏览:704
乐高机器人怎么编程 发布:2024-11-26 10:36:12 浏览:374