对程序调用API变形的一点认识

x86平台原子操作API的实现原理 阅读详情

.386   
.Model Flat, StdCall   
Option Casemap :None   
  
Include windows.inc   
Include user32.inc   
Include kernel32.inc   
IncludeLib user32.lib   
IncludeLib kernel32.lib   
  
.DATA   
szDllKernel db 'user32.dll',0   
szMessageBox db 'MessageBoxA',0   
  
.DATA?   
lpMessageBox dd ?   
.CODE   
START:   
invoke GetModuleHandle,addr szDllKernel   
mov ebx,eax   
invoke GetProcAddress,ebx,offset szMessageBox   
mov lpMessageBox,eax   
push MB_OK   
push 0   
push 0   
push 0   
mov EAX,offset _END   
push EAX   
jmp lpMessageBox   
_END:   
invoke ExitProcess,0    
END START  

看出点什么了吗?我把CALL变成了PUSH和JMP两个指令

了解调用过程的人都知道CALL指令就是先把下一条指令地址压栈然后在用JMP跳转到函数入口处,那我们的解决办法就出来了,我们可以自己完成这个调用动作,先把下一条指令压栈

.CODE   
START:   
invoke GetModuleHandle,addr szDllKernel   
mov ebx,eax   
invoke GetProcAddress,ebx,offset szMessageBox   
mov lpMessageBox,eax   
push MB_OK   
push 0   
push 0   
push 0   
mov EAX,offset _END   
push EAX   
;添加的代码开始   
mov edi,edi   
push ebp   
mov ebp,esp   
add lpMessageBox,5   
;添加的代码结束   
jmp lpMessageBox   
_END:   
invoke ExitProcess,0    
END START   

把目标API的前几行代码在自己程序里实现,然后在跳转到API函数中去继续运行。比如我是把MessageBox的前3行代码在自己的程序里实现,然后在条到MessageBox的第4行里继续运行。
这样跳转到目标入口地址就不是API函数的入口了

《Windows PE》11.2.1 PE变形技术 恶意软件使用PE变形技术来修改PE文件的结构和代码,以产生不同的变种,从而使每个实例看起来不同,难以被传统的基于特征的病毒检测技术所识别。■●代码混淆:恶意软件使用各种技术,如指令替换、指令重排、无用代码插入等,来修改PE文件的代码,使其难以分析和识别。这样可以改变程序的控制流,增加分析的复杂性。【注】我们将在PE加密壳一章详细讲解代码混淆。●API重命名:恶意软件可能会修改PE文件中调用的系统API函数的名称,使其与正常的API名称不同。 阅读详情

相关推荐

Android调用Camera API拍照遇到的问题和解决方法

最近工作中遇到需要自定义拍照的需求,然后就碰到预览时图像变形的问题,发现自己不好解决,自然想到在网络上寻求帮助。

TomIsYourName的专栏 2314

微信小程序Canvas绘图API

微信小程序Canvas绘图API前言使用姿势常用API(以下API都是通过CanvasContext对象进行调用)颜色、样式setFillStyle(string|CanvasGradient color)fill()setStrokeStyle(string color)stroke矩形rect(number x, number y, number width, number height)fi...

abs625的博客 2万+

逆向入门,一个变形程序的逆向过程。

记录教程的课后作业心路。 要求去掉该程序的nag窗口。 先运行一遍查看情况。 首先试试最简单的办法,字符串查找大法。 很简单就找到了我们想要的字符串。 就在开始的下面,直接上断点爆破试试。 但是在单步调试的时候,发现出现nag窗口时,程序并没有经过这个函数。 **就知道没这么容易,这个字符串就是个幌子而已。 ** 那我就试试,查看它调用了哪些函数吧,但是下了断点却报错了。 只好慢慢来了...

stboy14的博客 1407

微信小程序canvas绘制图片不变形的方法

项目中需要在canvas中绘制图片,图片大小未知 已这张图片为例 如果直接绘制图片将被压缩 根据官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.drawImage.html 可以设定这些参数来保证图片不会变形 上代码: wxml: <view class="share"> <view style="padding-top: 65px, padding-bottom: 18

weixin_39152200的博客 3464

Python领域Matplotlib的图形变形功能

Matplotlib是Python中广泛使用的绘图库,它提供了丰富的绘图功能。图形变形功能可以对绘制的图形进行各种变换,如缩放、旋转、倾斜等,从而满足不同的可视化需求。本文的目的是全面介绍Matplotlib的图形变形功能,包括其原理、实现方法和实际应用。范围涵盖了基本的图形变形操作,以及在不同类型图形(如折线图、柱状图、散点图等)上的应用。本文首先介绍了图形变形的核心概念和相关联系,包括坐标变换的基本原理和常见的变形类型。接着详细讲解了核心算法原理,并给出了Python代码示例。

AI Python 编程之道的博客 898

STM32-CubeMx-HAL库-串口空闲中断+DMA——利用HAL_UARTEx_ReceiveToIdle_DMA实现不定长数据接收

STM32-CubeMx-HAL库-串口空闲中断+DMA——利用HAL_UARTEx_ReceiveToIdle_DMA实现不定长数据接收

weixin_43864631的博客 1万+

微信小程序动画(六):矩阵变形

种一颗树,最好的时机是十年期,而后是现在。 The best time to plant a tree was twenty years ago. The second-best time is now. 在微信小程序中,提供了这样一个API——wx.createAnimation(Object object)。该API创建一个动画实例 animation。调用实例的方法来描述动画。 本文主要介绍animation实例的矩阵变形相关的方法及其使用。 假设我们创建了这样一个实例: this.animati.

weixin_43867717的博客 989

智能循迹小车之PID控制算法

从光电传感器获取信号确认小车和黑线的偏离角度,通过PID算法算出左右车轮速度,控制小车前进或者后退。

yzj199921的博客 4640

gz-sim 网格变形教程:使用 Blender Python 脚本程序化扭曲 3D 模型

本教程介绍如何利用 Blender 的 Python API 对 3D 模型进行程序化(programmatic)网格变形,批量生成外形相近但存在可控差异的物体。该技术在 gz-sim 生态中常用于:生成一组相似物体以测试感知算法的泛化能力、模拟水下操纵场景中自然生物污损(biofouling)或变形的物体,以及其他需要数值可控变形的应用场景。阅读本文后,你将掌握 `distort_mesh.py

gitblog_00377的博客 147

新手也能懂的Simulink汽车二自由度建模:从公式推导到模型搭建全流程

本文为新手提供了在Simulink中搭建汽车二自由度模型的完整实战指南。文章从模型核心概念讲起,详细讲解了如何将车辆动力学方程转化为状态空间模型,并逐步指导在Simulink中实现从参数设置、模块搭建到仿真验证的全过程。通过阶跃转向测试和参数影响分析,帮助读者直观理解车辆转向特性,并提供了实用的模型扩展思路与常见问题排查技巧。

weixin_29047919的博客 215

MCGS触摸屏Modbus TCP通讯实战:从寄存器写入到字符串处理的完整代码解析

本文详细解析了MCGS触摸屏通过Modbus TCP协议实现寄存器写入和字符串处理的完整代码,涵盖单寄存器写入、多寄存器写入及字符串传输等核心技术。文章还提供了MCGS组态环境中的实战配置步骤和常见问题排查方法,帮助开发者快速掌握工业自动化通讯的关键技术。

study的专栏 755

小程序开发API之动画Animation

效果展示 wx.createAnimation(Object object) 创建一个动画实例 animation。调用实例的方法来描述动画。最后通过动画实例的 export 方法导出动画数据传递给组件的 animation 属性。 wx.createAnimation参数 timingFunction 的合法值### transform-origin 属性允许您改变被转换元素的位置。 tra...

M.Siebel 4735

【CTF-misc】java盲水印BlindWatermark工具使用

​ 盲水印是一种肉眼不可见的水印方式,对图片资源使用图片盲水印或者文字水印,借此避免数字媒体未经授权的复制和拷贝,可通过对原图进行解码操作,得到水印图来证明版权归属。 题目来源:NewStarCTF 2023 公开赛道 WEEK2|MISC:Jvav

qq_39972370的博客 6448

调用腾讯API实现人脸美颜

美颜的目的就是要让人看起来更美,包括:皮肤细腻、白皙、光滑、脸部各个器官及脸型可以进行细致的调整,通过美妆调节可以达到快速上妆的效果。人脸美颜效果,从技术上主要通过四个关键步骤实现。

ZHW-鲜橙大AI课题组的博客 2091

保姆级教程:在Ubuntu 22.04上,用Chroot和xorriso定制你的专属服务器镜像(附离线包集成)

本文提供了一份详细的Ubuntu 22.04离线镜像定制教程,通过Chroot环境和xorriso工具,帮助用户打造专属服务器镜像。教程涵盖环境准备、镜像解构、系统定制、镜像重组与验证等全流程,特别适合需要在隔离网络环境中批量部署服务器的场景。

weixin_28704565的博客 445

【教程4>第1章>第12节】通过Verilog读取txt格式数据进行测试并将结果导入到matlab

我们在verilog的testbench中,调用txt文件,将上述正弦样本数据作为测试激励输入到verilog模块中。通过这个方法,可以将一些较为复杂的数据导入到verilog中,进行FPGA数据处理模块的开发。即通过w方式打开一个新的txt文件,然后将verilog的输出保存到XY1.txt文件中。这个部分是txt文件的路径,实际使用时,修改为您自己的路径,或者将txt文件放在和我一样的路径中。这个是数据长度,matlab产生的txt多少长度,这个参数就修改为多少长度。这个txt就是保存这段数据的文件。

FPGA/MATLAB学习教程/源码/项目合作开发 1383

c++实现的一种代码膨胀变形壳

主要实现3个功能:1.代码膨胀2.代码变形3.对地址常量包括字符串常量进行加密代码膨胀:代码膨胀无非就是指令等价替换,不过这里没条指令最好能有多个膨胀规则,这样会加大还原难度。原始程序大小为6kb,经过5次混淆后,大小变为66kb.混淆前代码:混淆后代码:从上图会发现有大量的垃圾代码生成。说一下代码变形:1.有分支跳转改成无分支跳转。在逆向分析时主要是通过条件跳转来确定函数的流程,根据跳转的目标地...

imJaron的博客 1453

【STM32实物】基于STM32设计的智能垃圾桶(语音、颜色识别、称重、光强、烟雾、人体识别、步进电机、水泵等)_资料编号25

基于STM32的语音识别垃圾桶系统以STM32F103C8T6为主控,采用18650可充放电锂电池组供电。硬件组成模块由5V步进电机马达与ULN2003驱动板、HX711压力传感器模块、DC5V水泵与MOSFET驱动板、0.96寸OLED显示屏、四个轻触按键、四个TCRT5000红外反射传感器、四个SG90舵机、SU-03T1语音模块、光敏电阻模块、MQ-2烟雾传感器模块、TCS34725颜色识别模块、蜂鸣器、LED灯构成。通过编写C语言软件程序,实现各硬件模块的协同工作。

嵌入式阿齐Archie 1万+

微信小程序,画布中,根据需要展示的图片比例,获取能截取原图中的最大图片尺寸,并且不变形展示

在微信小程序中,想要做一个分享海报,就需要用到画布,在画布上绘制图片时就会遇到图片变形的情况,下面我会给出我的解决办法。 先画个图片意思意思下: 1. 先根据传入图片地址获取原图片的尺寸; // 获取图片的 w,h function getImgInfo(src,callback){   wx.getImageInfo({     src: src,     success(res)...

大梦的博客 3375

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Three.js变形动画geometry.morphTargets

Three.js变形动画geometry.morphTargets 本文是Three.js电子书的12.3节 关于变形动画,你可以理解为多组顶点数据,从一个状态变化到另一个状态,比如人的面部表情,哭的表情用一系列的顶点表示,笑的表情用一系列的顶点表示,从哭的表情过渡到笑的表情,就是表情对应的两组顶点之间的过渡,几何体的顶点的位置坐标发生变化,从一个状态过渡到另一个状态自然就产生了变形动画。 一般项...

u014291990的博客 1616

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

探索创新3D变形工具:Keenan Woodall的Deform

在3D建模和动画的世界中,一个强大且直观的变形工具是创造生动表现的关键。今天我们要介绍的是[Keenan Woodall](https://twitter.com/keenanwoodall)开发的开源项目——Deform。这是一个基于Unity引擎的插件,专为3D模型的复杂变形任务提供解决方案。 ## 项目简介 Deform是一个高级的、高性能的3D变形工具,它允许开发者以编程方式精确控制模...

gitblog_00024的博客 960

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OpenCV contrib DPM 级联目标检测器:可变形部件模型的原理、API 与源码实战

DPM(Deformable Part-based Models,可变形部件模型)是目标检测领域极具影响力的经典方法:它以 HOG 特征和滑动窗口为基础,用"根滤波器 + 部件滤波器 + 变形模型"描述物体的整体轮廓与局部结构,并通过级联算法大幅加速。本指南以 opencv_contrib 仓库的 dpm 模块为核心,系统讲解该模块的算法原理、模型文件格式、C++ API 用法与两个开箱即用的示例

gitblog_00497的博客 237

微信小程序开发的一点心得

1. 样式问题 主要说一下微信小程序和之前的web开发中表现不一致的元素。 1.1 button 按钮 有时候,我们需要实现自定义转发的功能,但是重新设置button元素的样式,这个时候你可能会发现不管怎么设置button的样式,它的边框都去不掉。后来才知道原来是after伪元素的原因(如果是浏览器的话,如果有伪元素在开发者工具能直接看到,小程序就不行,这点我觉得还是有点坑的)。 解决方案: .b...

weixin_33762130的博客 524

关于网站图片变形的问题

为什么80%的码农都做不了架构师?>>> ...

weixin_34217773的博客 239

Z-Image-GGUF小程序开发:微信小程序前端调用云端AI绘画API

本文介绍了如何开发一个微信小程序前端,以调用部署在星图GPU平台上的AI绘画API。该平台支持自动化部署Z-Image-GGUF阿里巴巴通义实验室开源的文生图AI模型,用户可通过小程序输入文字描述,快速生成个性化图片,应用于社交媒体配图、灵感记录等场景。

weixin_42612804的博客 194
上一篇: 判断是否为PE文件改进版
下一篇: 图片屏幕满天飞
xbin1981
博客等级 码龄14年 8粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值