当前位置: 首页 > news >正文

crackme杂记007

花指令的特征:
在这里插入图片描述
遇到这种指令,可以立即判断出这是一个花指令,所以花指令较多的话,我们也可以通过搜索代码的方式快速去除
在这里插入图片描述
如上图,我们已经知道 E8 01 00 00 00 ?? ?? ?? ?? ?? C3 是花指令,所以我们直接搜索这擦混代码一个一个nop就可以了。

易语言中的特征码:
在这里插入图片描述
想要搜索易语言程序的特征码,最好在程序的开始位置搜索,
1.字符串比较函数的特征码: test edx,3
执行到这里停住以后,注意观察ECX,EDX寄存器,比骄傲的字符串一定就在这两个寄存器里面,并且我们可以放根据找这个特征码然后往回走去找关键函数的位置。
3.在这里插入图片描述
这种代码是易语言程序的必经之地,搞这么多jmp是为了模仿PE结构中的IAT也就是导入表,关于什么是导入表,有一个评论说的特别好:

我们知道当程序要调用系统dll时,会用到IAT表

具体是怎么实现的呢,

假设我们程序中某处要用到MessageBoxA,那么这里会有两种形式,一种是先call到一个地址,这个地址中是一个jmp
[A],A中存放着数据,数据内容就是我们的MessageBox的入口地址。另一种情况是直接calll到MessageBoxA的入口地址即
[A],千万要注意是A中存放的数据,而不是A本身,A中存放的数据是MessageBox的入口地址,之所以叫做表也是这个原因,因为程序要调用很多系统dll,如果我们的dll地址发生改变,要对每一处调用修改其调用地址是很麻烦的,如果有这样的表,我们将所有的函数调用的入口地址集中在一个集中的地址中,然后通过解析这个表方便我们进行修改,这样我们只要修改这个表所指的函数入口地址。

好的前面说了两种方法,思考一个问题,这个表是怎么实现的,我们编程过程中并没有建这样的表啊?

实际上,这个表是windows方便我们所实现的,

在od中选择call了MessageBox的一行,用view
运行文件的方法查看,可以看到这里并不是函数入口地址。那么是什么使得加载之后它变成了入口地址呢?

其实这是windows在加载我们程序的时候自动帮我们做好的。

我们看到view运行文件的方法打开之后是是一个dword的数,这个十六进制数加上基址假设叫做B,我们跳过去看B,看到B中的数据是一个ASCII码的内容,即字符串MessageBox,也就是说,Windows在运行程序,即在加载前通过内部实现,把我们的字符串MessageBox换为了MessageBox的入口地址,这样我们在call
【A】的时候就是跳转到了MessageBox的入口地址。

让我们来整理一下思路,我们有一个这样的表,表中存放着所有系统函数的入口地址,如果我们要调用一个系统函数,那么正确的做法是call
【表地址】。

而表中的地址是怎么填充的呢,在文件还未加载进内存中的时候,这个表中实际上只有很多个指针,指针指向的地址是字符串。

再整理一下思路,我们有这样一个表,在还未加载进内存中之前,他是一个指针,指针指向一个数据段,数据段中的内容是函数名称的字符串。当程序加载进内存中时,操作系统根据所指数据段中的字符串把表中的指针转换成函数入口地址。

所以接下来就是我们的导入表的内容了,关于导入表可以看我的另一篇文章

http://blog.csdn.net/izzxacbbt/article/details/78806514

假设你已经知道了什么是导入表,并且数据窗口中找到了导入表的首地址,根据我那篇博客可以知道导入表是由IMage_import_descriptor(IID)组成的

每个IID有五个DWORD,我们这里只关心后面两个字段,即name和FirstThunk,name字段指向一个地址,该地址是dll的名称,FirstThunk指向我们的IAT的地址。

知道这些之后我们就可以给出操作系统是如何把IAT自动填充的了。

1,找到导入表起始地址

2,找到第一个IID

3,根据IID的第四个字段确定dll库名称

4,根据IID的第五个字段确定IAT表地址

5,通过IAT字符串指针定位到目标函数名称。

6,用目标函数地址修改IAT的字符串指针。

7,修改下一处IAT

8,IAT项为0,修改完毕

9,找到下一个IID从第3步开始重复上面的操作。

举个例子,如下,程序中401339处调用了MessageBox,call到4018dc

举个

于是我们转到4018dc,可以看到他jmp到messageBox的目标地址75e5279e

,这个地址存放在IAT表中,地址在00405120,

我们在数据窗口中跳转到405120,可以看到,的确是75e5279e

接下来在该地址看文件未加载时候存放的是什么数据,

可以看到是一个地址,5226,加上基地址,就是405226,

我们跳转到存放字符串的地址405226,

可以看到的确是MEssageBox的名称,如果我们希望系统帮我们替换不同的函数,则只要把这里的MessageBox改为其他名字就行。

jmp后面的地址都是写死的地址,易语言程序再生的时候将其核心的东西动态填到这几个地址里面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35313.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

c++实现树的dfs,bfs

void dfs(Node* head) {if (head nullptr) {return;}std::cout << head->value << ",";dfs(head->left);dfs(head->right); }void bfs(Node* head) {if (head nullptr) { // if head is nullptr, return directlyreturn;}std::queue<Nod...

DP求解 最大连续子数组和

DP求解 最大连续子数组和 题目描述&#xff1a;输入一个整型数组&#xff0c;数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 1. 暴力求解 思路分析&#xff1a;计算数组中每一个连续子数组的和&#xff0c;找出其中最大值 /*** 暴力求解* param nums…...

再生龙clonezilla启动u盘制作,从vmware启动

制作u盘教程&#xff1a; http://www.360doc.com/content/20/0509/22/59153222_911267277.shtml 制作好u盘后&#xff0c;vmware里把u盘添加成硬盘&#xff0c;从u盘所在的硬盘启动即可。...

python学习之路(第八天)---re模块正则表达式

python学习之路&#xff08;第八天&#xff09;—re模块正则表达式 python学习之路&#xff08;第八天&#xff09;---re模块正则表达式在线正则匹配正则匹配语法re.compile方法re.match方法re.search方法re.finditer方法转义匹配findall()正则表达式的实例正则表达式&#xff…...

移动端开发

移动端应用 H5 移动端页面App小程序 移动端开发方式 原生开发&#xff08;Native App&#xff09;网页开发&#xff08;Web App&#xff09;混合开发&#xff08;Hybrid App&#xff09;跨平台移动端框架 跨 App 平台&#xff1a;React Native、weex、Flutter跨 App、小程序、…...

bootstrap table自定义新增行

.deleattrbtn,.addtrbtn{width: 60px;color: #fff;font-size: 12px;background-color: #3177E7;border-radius: 2px;border: 0; }#addtrdiv,#back_addtrdiv{margin: 10px 22px;text-align: right; }.table-bordered{table-layout: fixed;font-size: 12px; }.table th, .table...

毕设系列 -- 基于STM32的人体红外测温枪温度采集系统

文章目录1 简介2 主要器件3 实现效果4 设计原理MLX90614 红外温度传感器5 部分实现代码6 最后1 简介 Hi&#xff0c;大家好&#xff0c;这里是丹成学长&#xff0c;今天向大家介绍一个学长做的单片机项目 基于STM32的人体红外测温枪温度采集系统 大家可用于 课程设计 或 毕业…...

laravel 8 实现excel 导出

composer 下载 composer require maatwebsite/excel 引入 use Elasticsearch\ClientBuilder; 创建excel文件 php artisan make:Exports FangExports FangExports 里面 return Fang::all(); php后台 //导出房东excelpublic function exports(){return Excel::download(…...

Vue相关:

目录 1,说一下vue最大特点是什么或者说vue核心是什么 2,说一下vue常用基本指令有哪些 3,Vue常用的修饰符...

spring-cloud-kubernetes-feign实战

关于spring-cloud-kubernetes spring-cloud-kubernetes是springcloud官方推出的开源项目&#xff0c;用于将Spring Cloud和Spring Boot应用运行在kubernetes环境&#xff0c;并且提供了通用的接口来调用kubernetes服务&#xff0c;主要提供了应用程序使用k8s本身功能&#xff…...

【Unity】如何将资源包里的Prefabs资源为己所用

步骤一、将所需要的prefab从外部导入的资源拖入Scene中。二、右键该预制体&#xff0c;选择Unpack Prefab Completely取消该预制体及其子物体与资源包中预制体的关联。三、将该预制体拖动到自己的prefabs文件夹目录下&#xff0c;制作成自己项目的预制体。四、在Project面板下&…...

docker学习笔记(一)

概述 Docker是一款针对程序开发人员和系统管理员来开发、部署、运行应用的一款虚拟化平台。Docker 可以让你像使用集装箱一样快速的组合成应用&#xff0c;并且可以像运输标准集装箱一样&#xff0c;尽可能的屏蔽代码层面的差异。Docker 会尽可能的缩短从代码测试到产品部署的时…...

防火墙高可靠性

双机热备、BFD双向转发检测、IP-LINK链路检测、Link-Group逻辑组、ETH-Trunk链路捆绑、Bypass&#xff0c;跨数据中心集群&#xff0c;双主控、业务板备份、数据中心会话同步 双机热备 目的&#xff1a;为了防止单点故障 实现&#xff1a;两台硬件软件相同的FW之间通过一条独…...

手写Promise.all()方法

有1个promise报错了&#xff0c;其他的promis会执行吗&#xff1f; 会的&#xff0c;因为Promsie在实例化时候就已经执行完了。手写Promise.all()方法 function PromiseAll(promiseArray){//返回的一定是个proimsereturn new Promise((resolve,reject)>{//首先判断传入的是…...

Centos8.0系统升级到最新版本

一 &#xff0c;Centos8.0更换国内源&#xff08;阿里源&#xff09; 1&#xff0c; 备份旧的配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2&#xff0c;进入cd /etc/yum.repos.d cd /etc/yum.repos.d3&#xff0c;下载新的 Ce…...

高端音响的死亡被大大夸大了

几年前&#xff0c;在 MP3 盗版时代的鼎盛时期——当高端音频世界哀叹 MP3 文件的糟糕音质&#xff0c;而 MP3 用户乐于用音质换取免费音乐时——一位业内同事问我我以为高端音频已经死了。我向她保证不&#xff0c;一部分音乐迷&#xff0c;虽然可能不是主流&#xff0c;但总是…...

Java学习笔记--13.网络编程

Java学习笔记–13 第十章 网络编程 目录Java学习笔记--13前言网络编程1.定义2.TCP通信(1).ServerSocket(2).Socket3.UDP通信(1).发送方(2).接收方前言 21世纪&#xff0c;走进了信息时代&#xff0c;各种各样的软件层出不穷&#xff0c;但是总离不开程序开发&#xff0c;离不…...

python100例045求1-100之和用sum(range(1,101))

""" 题目045&#xff1a;统计 1 到 100 之和 """ def test045():count 0for i in range(1, 101):count iprint(count)# 二print(sum(range(1, 101))) test045()...

PyScreeze 基本使用(1)

PyScreeze 基本使用&#xff08;1&#xff09; PyScreeze屏幕截图 PyScreeze是Python 2和3的一个简单的跨平台屏幕截图模块。 关于 PyScreeze可以拍摄截图&#xff0c;将它们保存到文件中&#xff0c;并在屏幕中定位图像。这是有用的&#xff0c;如果你有一个小的图像&#x…...

wimform 继承窗体卡顿解决

get { const int CS_NOCLOSE 0x200; CreateParams cp base.CreateParams; cp.ClassStyle cp.ClassStyle | CS_NOCLOSE; if (!DesignMode) { cp.ExStyle...

C++学习总结2

&#xff08;1&#xff09; 实参的a和形参的a的数据类型本质不一样&#xff0c;形参中的数组编译器会把它当成指针处理&#xff0c; 调用函数时需将数组名&#xff08;内存首地址&#xff09;和数组的有效长度传给被调用函数。 &#xff08;2&#xff09; 数据类型的本质&…...

爬虫学习——库的安装问题及解决方案

关于No module named ‘Cryptodome’ 一直很想爬网易云的评论&#xff0c;但爬虫还没学精&#xff0c;然后去找了一篇博客来试试&#xff01;接着关于库的安装磨了我好久…找了好多资料没成功&#xff0c;最后在老师以及自己不断尝试下&#xff0c;终于成功了&#xff01;感动…...

智能照明新的低成本解决方案?涂鸦 Beacon 智能灯泡初体验

7月3日&#xff0c;涂鸦智能正式推出 Tuya Beacon 方案。 7月6日&#xff0c;全球领先的智能照明供应商–红壹佰照明&#xff0c;首发基于 Tuya Beacon 的智能灯泡。 7月22日, 红壹佰 Beacon 智能球泡正式量产&#xff0c;并交付第一批 Beacon 智能灯泡样品。 8月4日&#x…...

JavaScript入门(一)

JavaScript&#xff08;Js&#xff09;是一种具有函数优先的轻量级&#xff0c;解释型或即时编译型的编程语言。虽然它是作为开发Web 页面的脚本语言而出名的&#xff0c;但是它也被用到了很多非浏览器环境中&#xff0c;例如 Node.js、 Apache CouchDB 和 Adobe Acrobat。Java…...

GCC的-Wl,--wrap编译选项

GCC的--wrap是一个链接器选项&#xff0c;假如我们要编译的源文件为main.c&#xff0c;编译命令如下&#xff1a; gcc main.c -Wl,--wrapfunc -o main.elf有以下效果&#xff1a; 如果符号func没有&#xff08;在当前源文件&#xff09;定义&#xff0c;就链接到__wrap_func如…...

学习第五篇:【SpringBoot-Labs】Spring Boot 调试环境、热部署入门、Lombok、MapStruct入门

本周&#xff08;8.21-8.27&#xff09;将学习芋道 Spring Boot的以下文章&#xff1a; 8.21&#xff1a; 快速入门 8.22&#xff1a;Spring Boot 自动配置原理 、Jar 启动原理 8.23&#xff1a;调试环境、 热部署入门、消除冗余代码 Lombok 入门 8.24&#xff1a;对象转换 Map…...

PHP性能分析:Xhprof介绍

什么是性能分析&#xff1f; 性能分析是衡量应用程序在代码级别的相对性能。性能分析将捕捉的事件包括&#xff1a;CPU的使用&#xff0c;内存的使用&#xff0c;函数的调用时长和次数&#xff0c;以及调用图。性能分析的行为也会影响应用性能。 什么时候应该进行性能分析? …...

【MyBatis-Plus】第一章 快速入门

第一章 快速入门 文章目录第一章 快速入门一、介绍1.概述2.特性二、入门案例1.安装插件2.准备工作3.MyBatis-Puls 替换 MyBatis4.修改 StudentDao 接口5.修改实体类 Student.java6.修改 StudentServiceImpl.java7.修改 StudentController.java一、介绍 1.概述 MyBatis-Plus 是…...

Python 使用标准库原始socket 生成 pcap 文件

注意事项 : 1.仅限linux/uninx 使用 2.不需要任何第三方库,仅用标准库 3.格式为公开格式,可以whireshark 直接打开 代码如下: import time,structclass Pcap:def __init__(self, filename, link_type1):self.pcap_file open(filename, wb)self.pcap_file.write(struct.pack(…...

高斯消元法解方程组

高斯消元法是线性代数里解线性方程组的一种方法同时也可以用来求矩阵的秩。原理是通过将原线性方程的增广矩阵初等变换来使原始矩阵化为行最简阶梯型&#xff0c;从而求出线性方程组的解&#xff0c;方程组的解的数量有三种情况&#xff0c;如果矩阵为行满秩矩阵的话显然这个矩…...

dbc2000 注册机|dbc2000 注册码注册机下载

点击下载来源&#xff1a;dbc2000 注册机 dbc2000 注册机是同名源程序软件的注册机软件&#xff0c;该源程序软件是一款应用于数据库搭建以及数据写入的数据库架设工具&#xff0c;它拥有强大的数据写入功能&#xff0c;在作为应用程序使用时&#xff0c;它不仅可以充当数据属性…...

秋招面经第八弹:网易二面-数据开发工程师

秋招第八弹&#xff1a;网易二面-数据开发工程师 写在最前&#xff1a;秋招以来一直在冲&#xff0c;因为事情比较多&#xff0c;对于笔试面试一直没有复盘&#xff0c;现在靠仅存的记忆把面试的一些问题记录下来&#xff0c;尽可能记录出能回忆到的问题&#xff0c;但可能记的…...

安卓课程格子APP

https://download.csdn.net/download/weixin_57836618/73810452 功能演示&#xff1a; 查看所有课程 点击主页面空白处即可添加课程 添加课程之后查看课程 查看双周课程 查看单周课程 6.查看课程详情...

强化学习——格子世界

强化学习——格子世界 项目源码地址&#xff1a;https://gitee.com/infiniteStars/machine-learning-experiment 1. 实验内容 2. 实验代码 import numpy as np import matplotlib.pyplot as plt from matplotlib.table import Table from xml.dom.minidom import Document #手…...

华为机试 - 跳格子游戏

目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 地上共有N个格子&#xff0c;你需要跳完地上所有的格子&#xff0c;但是格子间是有强依赖关系的&#xff0c;跳完前一个格子后&#xff0c;后续的格子才会被开启&#xff0c;格子间的依赖关系由多组st…...

php 爬课程表信息,Ruby爬取教务系统生成课程表

我为什么要虐自己最近觉得课程格子广告越来越多&#xff0c;乱七八糟的东西越来越多&#xff0c;完全失去了一开始的存在价值&#xff0c;并且没有电脑端app&#xff0c;想查看课程必须拿出手机&#xff0c;而我使用电脑频率要比手机高&#xff0c;所以才有了折腾的动力。于是我…...

android 课程表 ui,UICollectionViewLayout实现课程表布局

因为项目中有课程表的相关模块&#xff0c;第一时间想到用UICollectionView。然而后期的需求越来越复杂&#xff0c;每个格子需要展示的内容越来越多&#xff0c;所以不得不寻找合适的解决方案。最后发现自定义UICollectionViewLayout可以实现我的需求。先放效果图&#xff1a;…...

Android自定义View课程表,Android 自定义View课程表表格

自己闲下来时间写的一个课表控件使用的自定义LinearLayout 里面View都是用代码实现的 最终效果如下图 写的可能有问题希望多多指点创建一个自定义LinearLayout 控件用来装载课程的信息和课程的周数 和节数大概的布局三这样的根据上面的看来觉得总体布局我分了两个 上面的星期是…...

java课程设计设计_java课程设计

1. 团队课程设计博客链接https://www.cnblogs.com/choco1ate/p/12172223.html2.本组课题及本人任务本组课题&#xff1a;泡泡堂(炸弹人)游戏本人任务&#xff1a;Box类(游戏地图中的每个方格)Bomb类(游戏过程中的)游戏玩家输赢信息的文件储存3.需求分析Box类&#xff1a;该类为…...

《课程格子》的一个笔试题目

题目如下&#xff0c;感觉很适合喜欢琢磨的程序员&#xff0c;也是考验你编码风格的时候。 Lets make a tower defense game&#xff08;塔防游戏):1. You have 1 tower, with H health and D dps(damage per second).2. There are n attackers, each with h_i health and d_i …...

Android仿照超级课程表 or 课程格子 一键提取课表功能(方正系统)

参考文章http://blog.csdn.net/sbsujjbcy ,本文仿照‘ 安卓弟 提供的android 项目实战——打造超级课程表一键提取课表功能文章&#xff0c;对他的代码进行了修改和补充&#xff0c;为什么要修改呢&#xff1f;原因是安卓弟的那个源码版本过于老旧&#xff0c;很多方法已经过…...

解决mac m1芯片安全隐私没有任何来源选项

新买的mac 搭载m1芯片 &#xff0c;在安全隐私里面 没有任何来源 这个选项&#xff0c;导致我之前的很多软件 投送过来 无法安装使用&#xff0c;要解决这个问题其实很简单 1。打开终端&#xff0c;输入命令&#xff1a; sudo spctl --master-disable 2。需要输入电脑开机密码…...

[ Mac ] 使用终端调出“任何来源”

操作系统&#xff1a;Mac BigSur 操作类型&#xff1a;系统设置 在升级了macOS版本后在“安全性与隐私”中不再有“任何来源”选项&#xff0c;也就是说我们无法使用一些安装包来安装软件&#xff0c;但是&#xff0c;仍然可以通过终端更改设置&#xff0c;启用万能终端。 首先…...

苹果电脑没有允许任何来源选项解决方法

搜索终端&#xff08;相当windows的dos&#xff09;&#xff0c;并打开终端&#xff0c;在窗口输入命令&#xff1a; sudo spctl –master-disable 然后按回车&#xff0c;提示输入密码&#xff0c;也就是开机密码&#xff0c;注意&#xff1a;空密码是不可以通过的。最后重启…...

Mac如何允许安装任何来源软件?

[1]Mac如何允许安装任何来源软件&#xff1f;https://www.insta360.com/cn/support/supportcourse?post_id16882 【转注】苹果电脑如果安装软件时&#xff0c;出现软件非法不允许安装的情况&#xff0c;过去是在“系统偏好设置”&#xff0c;找到“安全性与隐私”&#xff0c;…...

如何打开 macOS 10.15 允许任何来源

打开终端&#xff0c;输入以下命令即可&#xff1a; sudo spctl --master-disable...

MAC如何允许安装任何来源的软件

打开系统偏好设置&#xff0c;找到安全性与隐私 进入安全性与隐私&#xff0c;点击右下角的解锁按钮&#xff0c;选择允许从任何来源 有时候我们会看到&#xff0c;没有这任何来源选项 这时&#xff0c;我们只需要在终端&#xff0c;输入命令行&#xff1a;sudo spctl --master…...

Mac应用程序无法打开或文件损坏的处理方法,Mac任何来源开启教程

Mac应用程序无法打开或文件损坏的处理方法,Mac任何来源开启教程 您是否安装软件遇到提示 “ XXX.app 已损坏&#xff0c;打不开。您应该将它移到废纸篓 ” 或 “ 打不开 XXX.app&#xff0c;因为它来自身份不明的开发者 ” &#xff0c;这些问题怎么处理呢&#xff1f; 解决方…...

解锁macOS安全与隐私允许【任何来源】

macOS的安全性比较高&#xff0c;如果安装第三方软件老是需要手动到安全性与隐私里打开&#xff0c;这样的确更安全&#xff0c;但是如果要短期内安装一些我们认可的安全的软件&#xff0c;不停的去确认就比较麻烦。 安全与隐私中的任何来源默认是隐藏的&#xff0c;如何解锁呢…...

MAC-允许任何来源没有了怎么办

允许任何来源开启方法&#xff1a; 首先看看系统设置中有没有“任何来源”的选项&#xff0c;先打开“系统偏好设置”->“安全与隐私”->“通用”选项&#xff0c;检查是否已经启用了“任何来源”选项。如果没有启用&#xff0c;先点击左下角的小黄锁图标解锁&#xff0c…...