将近半个小时,把一小段简短的汇编代码写成了C语言代码
我自己看,感觉好像一句一句翻译的,写得很是生硬,不如书上写的灵活
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语言代码的更多相关文章
- 【原创】一段简短的读取libglade的UI文件的Python代码
准备写一个将Glade/GtkBuilder等格式的UI文件转换成C++代码的python程序 首先完成的是将LIBGlade格式读取至内存中 #!/usr/bin/env python # -*- ...
- 软件工程-构建之法 理解C#一小段程序
一.前言 老师给出的要求: 阅读下面程序,请回答如下问题: 问题1:这个程序要找的是符合什么条件的数? 问题2:这样的数存在么?符合这一条件的最小的数是什么? 问题3:在电脑上运行这一程序,你估计多长 ...
- 需要中文版《The Scheme Programming Language》的朋友可以在此留言(内附一小段译文)
首先给出原著的链接:http://www.scheme.com/tspl4/. 我正在持续翻译这本书,大概每天都会翻译两小时.若我个人拿不准的地方,我会附上原文,防止误导:还有些不适合翻译的术语,我会 ...
- 【从零开始搭建自己的.NET Core Api框架】(四)实战!带你半个小时实现接口的JWT授权验证
系列目录 一. 创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...
- 半个小时教你写一个装(bi)逼(she)之地图搜租房
半个小时教你写一个装(bi)逼(she)之地图搜租房 首先需要一个Python3环境,怎么准备我就不多说了,实在不会的出门右转看一下廖雪峰老师的博客. HTML部分 代码来自:高德API+Python ...
- 处理TCP连包的一小段代码
学习网络编程也有一段时间了,一直听说TCP数据会连包,但一直不知道怎么测试好.最近测试了下:发送方使用对列,将发送的数据存入队列,然后开线程,专门发送.发送多包数据之间不延时.在接收方,他们确实连在一 ...
- Cookie是存储在客户端上的一小段数据
背景 在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cookie规范定义了服务器和客户端交互信息的格式.生存期.使用范围.安全性. 在JavaSc ...
- 昨天周末晚上没有出去,码了一小段,先留着kangkang。
昨天周末晚上没有出去,码了一小段,先留着kangkang. import numpy as npimport matplotlibmatplotlib.use('Agg')import matplot ...
- IDEA debug启动的时候需要等半个小时甚至更长时间
debug启动的时候需要等半个小时甚至更长时间 突然有一天发现debug启动不起来了, 在debug时,项目一直会出现 Connected to the VM ,address: 其实这不是debug ...
随机推荐
- Android中的Service详解
今天我们就来介绍一下Android中的四大组件中的服务Service,说到Service, 它分为本地服务和远程服务:区分这两种服务就是看客户端和服务端是否在同一个进程中,本地服务是在同一进程中的,远 ...
- spark出现BINLOG_FORMAT = STATEMENT
错误解决: Caused by: java.sql.SQLException: Cannot execute statement: impossible to write to binary log ...
- spring 配置bean以及配置依赖 (2)
目录 一.使用ref引用其他对象 二.通过有参构造器创建对象 1 通过index精确定位参数顺序 三.引用bean 1 使用内部bean 2 使用list,set 3 声明集合类型 四.其他 1 使用 ...
- JS-copy到剪贴板
因为 clipboard.js 兼容性受限
- python初探爬虫
python爬虫初探 爬取前50名豆瓣电影: 废话少说,直接上代码! import reimport requestsfrom bs4 import BeautifulSoupdef get_co ...
- Pytorch模型定义的三要
首先,必须继承nn.Module这个类,要让Pytorch知道这个类是一个Module. 其次,在_init_(self)中设置需要的组件,比如(Conv,Pooling,Linear,BatchNo ...
- 2019-4-29-WPF-如何判断一个控件在滚动条的里面是用户可见
title author date CreateTime categories WPF 如何判断一个控件在滚动条的里面是用户可见 lindexi 2019-4-29 9:42:2 +0800 2019 ...
- redis 体系结构
程序strings key-value 类型 ,value不仅是String,也可以是数字.使用strings 类型可以完全实现目前 Memcache 的功能,并且效率更高,还可以享受redis的 ...
- PHP算法之两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元 ...
- JedisCluster获取key所在的节点
JedisCluster获取key所在的节点 2019年11月9日17:34:55 准备 引入jedis的jar包,这个jar包里面包含了JedisCluster,可以用它来操作集群. <dep ...