我自己看,感觉好像一句一句翻译的,写得很是生硬,不如书上写的灵活

0040137E    8B7424 04       MOV ESI,DWORD PTR SS:[ESP+4]
00401382    56              PUSH ESI
00401383    8A06            MOV AL,BYTE PTR DS:[ESI]
00401385    84C0            TEST AL,AL
00401387    74 13           JE SHORT serial.0040139C
00401389    3C 41           CMP AL,41
0040138B    72 1F           JB SHORT serial.004013AC
0040138D    3C 5A           CMP AL,5A
0040138F    73 03           JNB SHORT serial.00401394
00401391    46              INC ESI
00401392  ^ EB EF           JMP SHORT serial.00401383
00401394    E8 39000000     CALL serial.004013D2
00401399    46              INC ESI
0040139A  ^ EB E7           JMP SHORT serial.00401383
0040139C    5E              POP ESI
0040139D    E8 20000000     CALL serial.004013C2
004013A2    81F7 78560000   XOR EDI,5678
004013A8    8BC7            MOV EAX,EDI
004013AA    EB 15           JMP SHORT serial.004013C1
004013AC    5E              POP ESI
004013AD    6A 30           PUSH 30
004013AF    68 60214000     PUSH serial.00402160
004013B4    68 69214000     PUSH serial.00402169
004013B9    FF75 08         PUSH DWORD PTR SS:[EBP+8]
004013BC    E8 79000000     CALL <JMP.&USER32.MessageBoxA>
004013C1    C3              RETN
004013C2    33FF            XOR EDI,EDI
004013C4    33DB            XOR EBX,EBX
004013C6    8A1E            MOV BL,BYTE PTR DS:[ESI]
004013C8    84DB            TEST BL,BL
004013CA    74 05           JE SHORT serial.004013D1
004013CC    03FB            ADD EDI,EBX
004013CE    46              INC ESI
004013CF  ^ EB F5           JMP SHORT serial.004013C6
004013D1    C3              RETN
004013D2    2C 20           SUB AL,20
004013D4    8806            MOV BYTE PTR DS:[ESI],AL
004013D6    C3              RETN

int fun(char *str)
{
 char *temp = str;
 int j = 0;
 int i;
 for( i = 0 ; ; i++ )
 {
  if( temp == '\0' )
  {
   break;
  }
  if( temp < 0x41 )
  {
   //return MessageBoxA(handle , "重试" , "出错" , 30);
  }
  if( temp > 0x5A )
  {
   temp -= 0x20;
  }
 }
 for( i = 0 ; ; i++ )
 {
  if( temp == '\0' )
  {
   break;
  }
  j += (int)temp;
 }
 j = j ^ 0x5678;
 return j;
}

将近半个小时,把一小段简短的汇编代码写成了C语言代码的更多相关文章

  1. 【原创】一段简短的读取libglade的UI文件的Python代码

    准备写一个将Glade/GtkBuilder等格式的UI文件转换成C++代码的python程序 首先完成的是将LIBGlade格式读取至内存中 #!/usr/bin/env python # -*- ...

  2. 软件工程-构建之法 理解C#一小段程序

    一.前言 老师给出的要求: 阅读下面程序,请回答如下问题: 问题1:这个程序要找的是符合什么条件的数? 问题2:这样的数存在么?符合这一条件的最小的数是什么? 问题3:在电脑上运行这一程序,你估计多长 ...

  3. 需要中文版《The Scheme Programming Language》的朋友可以在此留言(内附一小段译文)

    首先给出原著的链接:http://www.scheme.com/tspl4/. 我正在持续翻译这本书,大概每天都会翻译两小时.若我个人拿不准的地方,我会附上原文,防止误导:还有些不适合翻译的术语,我会 ...

  4. 【从零开始搭建自己的.NET Core Api框架】(四)实战!带你半个小时实现接口的JWT授权验证

    系列目录 一.  创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...

  5. 半个小时教你写一个装(bi)逼(she)之地图搜租房

    半个小时教你写一个装(bi)逼(she)之地图搜租房 首先需要一个Python3环境,怎么准备我就不多说了,实在不会的出门右转看一下廖雪峰老师的博客. HTML部分 代码来自:高德API+Python ...

  6. 处理TCP连包的一小段代码

    学习网络编程也有一段时间了,一直听说TCP数据会连包,但一直不知道怎么测试好.最近测试了下:发送方使用对列,将发送的数据存入队列,然后开线程,专门发送.发送多包数据之间不延时.在接收方,他们确实连在一 ...

  7. Cookie是存储在客户端上的一小段数据

    背景 在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cookie规范定义了服务器和客户端交互信息的格式.生存期.使用范围.安全性. 在JavaSc ...

  8. 昨天周末晚上没有出去,码了一小段,先留着kangkang。

    昨天周末晚上没有出去,码了一小段,先留着kangkang. import numpy as npimport matplotlibmatplotlib.use('Agg')import matplot ...

  9. IDEA debug启动的时候需要等半个小时甚至更长时间

    debug启动的时候需要等半个小时甚至更长时间 突然有一天发现debug启动不起来了, 在debug时,项目一直会出现 Connected to the VM ,address: 其实这不是debug ...

随机推荐

  1. delphi 注册表

    Delphi中定义了一个Tregistry类,通过使用这个类中封装的很多有关对注册表操作的方法和属性可以完成对注册表的操作.1. 在注册表中创建一个新的关键字Tregistry类中有一个CreateK ...

  2. Python内置的一个用于命令项选项与参数解析的模块argparse

    一.argparse简单使用 我们先来看一个简单示例.主要有三个步骤: 创建 ArgumentParser() 对象 调用 add_argument() 方法添加参数 使用 parse_args() ...

  3. 2018 – 2019 年前端 JavaScript 面试题

    JavaScript 基础问题 1.使以下代码正常运行: JavaScript 代码: const a = [1, 2, 3, 4, 5]; // Implement this a.multiply( ...

  4. 剑指offer——30包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)).   题解: 借助辅助栈,新的数据<=f辅助栈顶时,就压入辅助栈,这样,就能保证辅 ...

  5. Spring MVC @RequestMapping注解详解(2)

    @RequestMapping 参数说明 value:定义处理方法的请求的 URL 地址.(重点) method:定义处理方法的 http method 类型,如 GET.POST 等.(重点) pa ...

  6. static/extern&const个人理解

    //const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p) static NSString *const keyA = @"keyA"; static NSString ...

  7. Ubantu18.04安装WPS

    1.去WPS官网选在合适的版本下载安装包2.在官网下载字体包3.分别右键点击安装包,选择第一项“用软件安装打开”,进行安装即可.4.此时启动应用,应该会提示系统缺失字体.5.解决字体缺失(转)    

  8. vba取局域网电脑共享文件夹下的Excel文件

    Private Sub CommandButton1_Click()    Dim xlapp1 As Excel.Application    Dim xlbook1 As Excel.Workbo ...

  9. linux命令重定向>、>>、 1>、 2>、 1>>、 2>>、 <(转)

    原文章地址:https://www.cnblogs.com/piperck/p/6219330.html >和>>: 他们俩其实唯一的区别就是>是重定向到一个文件,>&g ...

  10. BCZM : 1.8

    问题:      所有的员工均在1楼进电梯的时候,选择所要到达的楼层.然后计算出停靠的楼层i,当到达楼层i的时候,电梯停止.所有人走出电梯,步行到所在的楼层中.求所有人爬的楼层数目和的最小值. 解法一 ...