精华内容
下载资源
问答
  • 二进制编程的软件有哪些
    2021-05-19 19:17:44

    二进制搜索/查找程序(C语言),如下代码所示:

    #include

    #define MAX 20

    // array of items on which linear search will be conducted.

    int intArray[MAX] = {1,2,3,4,6,7,9,11,12,14,15,16,17,19,33,34,43,45,55,66};

    void printline(int count){

    int i;

    for(i = 0;i

    printf("=");

    }

    printf("=\n");

    }

    int find(int data){

    int lowerBound = 0;

    int upperBound = MAX -1;

    int midPoint = -1;

    int comparisons = 0;

    int index = -1;

    while(lowerBound <= upperBound){

    printf("Comparison %d\n" , (comparisons +1) ) ;

    printf("lowerBound : %d, intArray[%d] = %d\n", lowerBound,lowerBound,intArray[lowerBound]);

    printf("upperBound : %d, intArray[%d] = %d\n", upperBound,upperBound,intArray[upperBound]);

    comparisons++;

    // compute the mid point

    midPoint = (lowerBound + upperBound) / 2;

    // data found

    if(intArray[midPoint] == data){

    index = midPoint;

    break;

    }

    else {

    // if data is larger

    if(intArray[midPoint] < data){

    // data is in upper half

    lowerBound = midPoint + 1;

    }

    // data is smaller

    else{

    // data is in lower half

    upperBound = midPoint -1;

    }

    }

    }

    printf("Total comparisons made: %d" , comparisons);

    return index;

    }

    void display(){

    int i;

    printf("[");

    // navigate through all items

    for(i = 0;i

    printf("%d ",intArray[i]);

    }

    printf("]\n");

    }

    main(){

    printf("Input Array: ");

    display();

    printline(50);

    //find location of 1

    int location = find(55);

    // if element was found

    if(location != -1)

    printf("\nElement found at location: %d" ,(location+1));

    else

    printf("\nElement not found.");

    }

    如果我们编译并运行上述程序,那么这将产生以下结果 –

    Input Array: [1 2 3 4 6 7 9 11 12 14 15 16 17 19 33 34 43 45 55 66 ]

    ==================================================

    Comparison 1

    lowerBound : 0, intArray[0] = 1

    upperBound : 19, intArray[19] = 66

    Comparison 2

    lowerBound : 10, intArray[10] = 15

    upperBound : 19, intArray[19] = 66

    Comparison 3

    lowerBound : 15, intArray[15] = 34

    upperBound : 19, intArray[19] = 66

    Comparison 4

    lowerBound : 18, intArray[18] = 55

    upperBound : 19, intArray[19] = 66

    Total comparisons made: 4

    Element found at location: 19

    更多相关内容
  • 我一直怀疑我两个文件问题,后来用了 二进制文件比较编辑软件(fairdell hexcmp) v2.34 绿色版 软件比较才发现,就是最上面的两个图,比较结果正常,我服了,坑了我好久,比较二进制文本文件,推荐大家用fairdell ...

    Beyond Compare比较出名,但是我发现有点儿问题,坑了我好久,比如

    文件1:

    文件2:

    但是用Beyond Compare软件比较出来就是下面这样:

    我一直怀疑我两个文件有问题,后来用了 二进制文件比较编辑软件(fairdell hexcmp) v2.34 绿色版 软件比较才发现,就是最上面的两个图,比较结果正常,我服了,坑了我好久,比较二进制文本文件,推荐大家用fairdell hexcmp软件,我觉得更好,更专业。如果是比较文本文件,那Beyond Compare软件是个不错的选择。

    展开全文
  • PLC专为在工业环境下应用而设计,它采用可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、...本人收集了些实例,用户可在三菱官网的下载中心下载三菱编程软件,安装好三菱编程软件GX-7C,以便参考。
  • 自Python3.1中,整数bit_length方法允许查询二进制的位数或长度。...以上这篇Python的bit_length函数来二进制的位数方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
  • Relyze汉化版是一款功能强大二进制编程软件,是一个交互式软件分析,Relyze能够让你更加充分地了解一个二进制文件的组成和利用丰富的元数据分析!这里提供Relyze最新版以及汉化补丁下载,需要的朋友可下载试试! ps...
  • 十进制数据转为二进制数据.xlsx源码EXCEL VBA宏编程xlsx实例代码下载十进制数据转为二进制数据.xlsx源码EXCEL VBA宏编程xlsx实例代码下载十进制数据转为二进制数据.xlsx源码EXCEL VBA宏编程xlsx实例代码下载十进制...
  • 嵌_二进制样例.zip昆仑通态触摸屏案例编程源码资料下载嵌_二进制样例.zip昆仑通态触摸屏案例编程源码资料下载嵌_二进制样例.zip昆仑通态触摸屏案例编程源码资料下载嵌_二进制样例.zip昆仑通态触摸屏案例编程源码资料...
  • 本篇开始阅读学习《有趣的二进制软件安全与逆向分析》,本章是通过逆向工程学习如何读懂二进制代码,主要是体验软件分析、静态分析和动态分析(可以理解为怕劝退读者)

    前言

    上一篇学完内网之后,打算学习一些逆向相关知识

    本篇开始阅读学习《有趣的二进制:软件安全与逆向分析》,本章是通过逆向工程学习如何读懂二进制代码,主要是体验软件分析、静态分析和动态分析(可以理解为怕劝退读者)

    作者有句话很有意思:

    在编写这本书的过程中,我再一次感到,在不计其数的编程语言中,汇编语言是最‘有趣’的一种

    配套资源在:https://github.com/shyujikou/binarybook

    一、软件分析体验

    首先是一些工具安装:

    本节要用到的是 chap01\sample_mal\Release 目录中的 sample_mal.exe 文件

    1、通过 Process Monitor 的日志来确认程序的行为

    sample_mal.exe 文件运行后,弹出一个内容为“Hello Malware!”的对话框,如下:

    在这里插入图片描述
    Process Monitor 的日志如下:

    在这里插入图片描述
    可以看到 sample_mal.exe 文件连续执行了 CreateFile、WriteFile 和 CloseFile 这几个操作,这些操作加起来的功能相当于在指定文件夹创建并写入一个名为 0.exe 的文件

    进入C:\Users\ 用户名 \AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup可以看到 0.exe 文件
    在这里插入图片描述
    用 Winhex 与 sample_mal.exe 文件进行对比,发现两个文件完全一致

    此外,sample_mal.exe 还在 我的文档 目录下创建了1.exe文件:
    在这里插入图片描述
    在这里插入图片描述

    2、从注册表访问中能发现些什么

    Windows 重启时自动运行的程序可以注册在下列任一注册表的位置:

    • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
    • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
    • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce

    可以发现注册表里面的确注册了 C:\Documents and Settings\XPMUser\My Documents\1.exe 这样的内容

    3、小结

    通过上述,sample_mal.exe 程序会执行以下操作:

    • 修改注册表以便在系统重启时自动运行
    • 将自己复制到“启动”文件夹以便在系统重启时自动运行

    因此,我们只要将“启动”文件夹、“我的文档”以及 注册表中新增的内容(文件路径)删除,系统环境就可以完全恢复原状 了

    二、静态分析体验

    静态分析与动态分析简单定义如下:

    • 静态分析:在不运行目标程序的情况下进行分析
    • 动态分析:在运行目标程序的同时进行分析

    静态分析主要包括以下方法:

    • 阅读反汇编代码
    • 提取可执行文件中的字符串,分析使用了哪些单词

    这里用到 chap01\wsample01a\Release 中的示例程序 wsample01a.exe

    1、WinHex 查看文件内容

    用 WinHex 打开 wsample01a.exe

    在这里插入图片描述
    可以看到这些内容:

    • 字符串 MESSAGEHello! Windows
    • 文件路径 C:\Documents and Settings\XPMUser\My Documents\Visual Studio 2010\Projects\wsample01a\Release\wsample01a.pdb
    • 字符串 KERNEL32.dllMessageBoxW

    主要是感受下

    2、IDA 反汇编

    将 wsample01a.exe 扔进 IDA:
    在这里插入图片描述
    也是感受下
    在这里插入图片描述

    跟源码对比下:

    
    #include <Windows.h>
    #include <tchar.h>
    
    int APIENTRY _tWinMain(
    	HINSTANCE hInstance, 
    	HINSTANCE hPrevInstance, 
    	LPTSTR    lpCmdLine, 
    	int       nCmdShow)
    {
    	if(lstrcmp(lpCmdLine, _T("2012")) == 0){
    		MessageBox(GetActiveWindow(), 
    			_T("Hello! 2012"), _T("MESSAGE"), MB_OK);
    	}else{
    		MessageBox(GetActiveWindow(), 
    			_T("Hello! Windows"), _T("MESSAGE"), MB_OK);
    	}	
    	return 0;
    }
    
    

    三、动态分析体验

    动态分析:

    • 在目标程序运行的同时跟踪其行为,主要用调试器来跟踪程序逻辑
    • 获取文件和注册表访问日志
    • 抓取网络包

    这里用 chap01\wsample01b\Release 中的示例程序 wsample01b.exe

    1、 Process Monitor 跟踪

    为了跟踪程序,设置 Process Monitor 的过滤规则:

    在这里插入图片描述
    然后可以发现其行为类似于开头的 sample_mal.exe

    2、OllyDbg 调试

    调试器是一种帮助发现程序问题和 bug 的软件:

    • 断点
    • 单步跳入、跳出
    • 查看寄存器和内存数据

    在这里插入图片描述
    看看 00401000 之后的程序逻辑,发现程序依次调用了 GetModuleFileNameWSHGetFolderPathWlstrcatWCopyFileW 这几个函数

    通过设置断点和单步前进可以了解每一步或者说上面每一个函数在做什么

    同样与源代码对比:

    #include <Windows.h>
    #include <tchar.h>
    
    int APIENTRY _tWinMain(
    	HINSTANCE hInstance, 
    	HINSTANCE hPrevInstance, 
    	LPTSTR    lpCmdLine, 
    	int       nCmdShow)
    {
    	if(lstrcmp(lpCmdLine, _T("2012")) == 0){
    		MessageBox(GetActiveWindow(), 
    			_T("Hello! 2012"), _T("MESSAGE"), MB_OK);
    	}else{
    		MessageBox(GetActiveWindow(), 
    			_T("Hello! Windows"), _T("MESSAGE"), MB_OK);
    	}	
    	return 0;
    }
    
    

    四、基础汇编指令

    1、常用汇编指令

    常用汇编指令如下:

    指令示例含义说明
    MOVMOV EAX,ECXEAX = ECX将 ECX 的值存入 EAX
    ADDADD EAX,ECXEAX += ECX将 EAX 的值加上 ECX 的值
    SUBSUB EAX,ECXEAX -= ECX将 EAX 的值减去 ECX 的值
    INCINC EAXEAX++将 EAX 的值加 1
    DECDEC EAXEAX–将 EAX 的值减 1
    LEALEA EAX, [ECX+4]EAX = ECX+4将 ECX+4 的值存入 EAX
    CMPCMP EAX,ECXif(EAX == ECX) ZF=1 elseZF=0对两个值进行比较并根据结果设置 标志若 EAX 与 ECX 相同,则 ZF=1 若 EAX 与 ECX 不同,则 ZF=0
    TESTTEST EAX,EAXif(EAX == 0) ZF=1 elseZF=0将值与 0 进行比较并根据结果设置 标志若 EAX 为 0,则 ZF=1 若 EAX 不为 0,则 ZF=0
    JE(JZ)JE 04001000if(ZF==1) GOTO 04001000若 ZF 为 1,则跳转到 04001000
    JNE(JNZ)JNE 04001000if(ZF==0) GOTO 04001000若 ZF 为 0,则跳转到 04001000
    JMPJMP 04001000GOTO 04001000无条件跳转到 04001000
    CALLCALL lstrcmpW调用 lstrcmpW
    PUSHPUSH 00000001将 00000001 入栈
    POPPOP EAX出栈并将获取的值存入 EAX

    JNZ 指令和 TEST 指令结合就是条件分支

    2、参数存放在栈中

    CALL 指令是用来调用子程序的,当我们用汇编语言编写子程序的时候,将返回值存放在 EAX 中,这是一种习惯

    参数要通过 PUSH 指令存放在栈中:每当执行 PUSH 指令时,PUSH 的值就会被放入栈中

    3、例子

    一个 hello world 的汇编如下:

    extern MessageBoxA
    
    section .text
    global main
    
    main:
    	push dword 0
    	push dword title
    	push dword text
    	push dword 0
    	call MessageBoxA
    	ret
    
    section .data
    title: db 'MessageBox', 0
    text: db 'Hello World!', 0
    
    

    结语

    主要是体验下几种最常用的逆向工具

    展开全文
  • VC++msscom串口编程-十六进制--二进制发送接受数据[文].pdf
  • 一、将二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。 1) 整数部分 将二进制数字11010转换成十进制: 11010 = 1×2^4 +...

    一、将二进制、八进制、十六进制转换为十进制

    二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。

    1) 整数部分

    将二进制数字11010转换成十进制:

    11010 = 1×2^4 + 1×2^3 + 0×2^2 + 1×2^1 + 0×2^0 = 26(十进制)

    将八进制数字 53627转换成十进制:

    53627 = 5×8^4 + 3×8^3 + 6×8^2 + 2×8^1 + 7×8^0 = 22423(十进制)

    将十六进制数字 9FA8C转换成十进制:

    9FA8C = 9×16^4 + 15×16^3 + 10×16^2 + 8×16^1 + 12×16^0 = 653964(十进制)

    2) 小数部分

    将二进制数字 1010.1101 转换成十进制:

    1010.1101 = 1×2^3 + 0×2^2 + 1×2^1 + 0×2^0 + 1×2^(-1) + 1×2^(-2) + 0×2^(-3) + 1×2^(-4) = 10.8125(十进制)

    将八进制数字 423.5176 转换成十进制:

    423.5176 = 4×8^2 + 2×8^1 + 3×8^0 + 5×8^(-1) + 1×8^(-2) + 7×8^(-3) + 6×8^(-4) = 275.65576171875(十进制)

    将十进制数字7B.A84转换成十六进制:

    7B.A84=7×16^1 + B×16^0 + A×16^(-1) + 8×16^(-2) + 4×16^(-3) = 123.6572266

    二、将十进制转换为二进制、八进制、十六进制

    1) 整数部分

    下图演示了将十进制数字 42 转换成二进制的过程:

     下图演示了将十进制数字 36926 转换成八进制的过程:

     

     2) 小数部分

    下图演示了将十进制小数 0.6875 转换成二进制小数的过程:

    三、二进制和八进制、十六进制的转换

    1) 二进制整数和八进制整数之间的转换

    二进制整数转换为八进制整数时,每三位二进制数字转换为一位八进制数字,运算的顺序是从低位向高位依次进行,高位不足三位用零补齐。

    下图演示了如何将二进制整数 1110111100 转换为八进制:

    从图中可以看出,二进制整数 1110111100 转换为八进制的结果为 1674。 

    八进制整数转换为二进制整数时,思路是相反的,每一位八进制数字转换为三位二进制数字,运算的顺序也是从低位向高位依次进行。

    下图演示了如何将八进制整数 2743 转换为二进制:

     从图中可以看出,八进制整数 2743 转换为二进制的结果为 10111100011。

    2) 二进制整数和十六进制整数之间的转换

    二进制整数转换为十六进制整数时,每四位二进制数字转换为一位十六进制数字,运算的顺序是从低位向高位依次进行,高位不足四位用零补齐。

    下图演示了如何将二进制整数 10 1101 0101 1100 转换为十六进制:

     从图中可以看出,二进制整数 10 1101 0101 1100 转换为十六进制的结果为 2D5C。

    十六进制整数转换为二进制整数时,思路是相反的,每一位十六进制数字转换为四位二进制数字,运算的顺序也是从低位向高位依次进行。

    下图演示了如何将十六进制整数 A5D6 转换为二进制:

     从图中可以看出,十六进制整数 A5D6 转换为二进制的结果为 1010 0101 1101 0110。

    展开全文
  • 想让软件工程师去接受二进制,算是勉勉强强,如果让他去接受十六进制,可能就有些为难他了。因为大部分软件工程师平时根本就不接触二进制和十六进制,他们唯一的进制就是十进制。 但是,硬件是底层的玩意,偏偏只...
  • 二进制安全

    2021-01-16 10:58:26
    刚开始学二进制,虽然高中时候知道二进制是个啥,什么逢二进一也懂,但是完全不知道二进制跟电脑啥关系,更别说那些专业名词了,这两天看到一篇大佬的文章,怎么说呢,写的不错,对小白非常友好,大佬的链接放下边...
  • 计算机凭啥用二进制不管是不是程序员,大家可能都知道二进制是个什么东西。包括计算机在内,几乎所有电子设备都采用的二进制。可是,为什么会这样呢?在说这个问题之前,先解决另一个问题——为什么大多数国家的人类...
  • 二进制安全学习路线

    千次阅读 2021-12-05 10:12:47
    关于二进制安全(软件安全)方面,我曾经写了过很多文章,今天整理了下,看来比较水,可以仅供大家参考。 包括了硬核二进制安全系列与二进制安全系列专栏 硬核二进制安全学习:Heap overflow堆溢出(壹) PWN二进制...
  • 二进制是由0和1组成的数,0用黑色方块表示,1用白色方块表示。(1)小猫询问“请输入一个8位二进制”,检查输入二进制位数,如果不是8位,继续询问,直到输入8位为止;考查对选择语句、循环语句的嵌套使用,以及运用...
  • 二进制基本介绍 一、二进制基本描述 二进制就是一种数学进制,它里面只有0 和 1 二个基数。现在被大量的应用于计算机当中。【 计算机底层里用到的进制是二进制。 】 二、计算机为什么可以识别二进制 现代计算机都是...
  • 该存储库列出了适用于所有编程语言的动态分析工具,构建工具,配置文件...目录显示语言C C ++ JavaJavaScript Python 锈Visual Basic 多种语言 其他原料药二进制文件字节码/ IR 货柜安全/ DAST 网页 编程语言 。网Micr
  • EBF代表高效二进制格式,它是一种二进制文件格式,可轻松读取和写入二进制数据... 每个数据对象之前都一个元数据或标头,它描述了与之关联的二进制数据。 除其他外,此标头允许文件在具有不同字节序的系统之间移植。
  • PLC专为在工业环境下应用而设计,它采用可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、...本人收集了些实例,用户可在三菱官网的下载中心下载三菱编程软件,安装好三菱编程软件GX-7C,以便参考。
  • 二进制转格雷码 格雷码转二进制 十进制转二进制 二进制转十进制等,在Delphi xe2下通过测试。格雷码(英文:Gray Code, Grey Code,又称作葛莱码,二进制循环码)是1880年由法国工程师Jean-Maurice-Emlle Baudot发明...
  • 二进制与十进制的讲解与转换

    千次阅读 多人点赞 2022-05-15 09:41:54
    十进制与二进制之间的转换二进制转十进制十进制转二进制写在最后 哈喽,大家好!这是我的第一篇博客,就先来介绍一下自己吧,我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我...
  • java二进制转换为图片

    2021-03-06 13:03:35
    Java将大图片转成小图片_IT/计算机_专业资料。...BMP图格式 二进制转换 C#下将 BMP 转换成二进制是比较容易的,方法如下: 下将 转换成二进制是比较容易的,方法如下: ......Base64 编码转换二进制图片 201...
  • 软件编程的时候,会要用到进制转换,那么二进制怎么转换成八进制呢?接下来就为大家详细讲解一下,一起来看看吧!二进制转换为八进制方法:1、取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位...
  • Maxim推出DS1372实时时钟(RTC),内置二进制计数器和唯一64位序列号,可用于数字数据应用。数字版权管理(DRM)软件要求在文件下载时记录修改时间,并且具有唯一的序列号用于认证操作人员。DS1372内置的二进制计数器和...
  • 浅谈计算机信息的二进制编码

    千次阅读 2021-07-16 00:57:36
    摘 要 数据是计算机处理的对象,从不同的处理角度来看,数据不同的表现形态。从外部形式来看计算机颗处理数值、图、文字、声音、视频以及各种模拟信息量。从高级语言程员的角度来看,有数组、指针、结构、实数、...
  • 1、十进制转换二进制十进制对2整除,得到的余数的倒序即为转换而成的二进制(十进制转换二进制示意图)转换函数#include#include#include#include#includeusing namespace std;void convert_10_to_2(int num){ vector&...
  • 不同的二进制文件需要不同的软件来打开,例如BMP文件,需要一个读图的软件来打开才能看到里面保存的图像,MP3文件需要一个播放器软件才能听到里面的音频。而文本文件只需要记事本就可以打开查看里面的内容。 2 ...
  • 二进制入门

    2021-01-17 16:42:11
    二进制安全是一种主要用于字符串操作函数相关的计算机编程术语。一个二进制安全功能(函数),其本质上将操作输入作为原始的、无任何特殊格式意义的数据流。对于每个字符都公平对待,不特殊处理某一个字符。 二. 为...
  • 例如,输入进制选择为“十进制”,而输出进制选择为“二进制”,则它就能完成十进制数到二进制数的自动转换。【基本要求】系统至少具有如下功能:(1) 至少支持十、二、八、十六进制之间的相互转换。(2) 与用户的交互...
  • 1. 文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上差异。 简单来说,文本文件是基于字符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 152,856
精华内容 61,142
热门标签
关键字:

二进制编程的软件有哪些