CALL与retn】的更多相关文章

一.CALL 例如: 004013D9      CALL 00401C4C     //ESP = 0060F9C8 004013DE 相当于 sub esp,0x4; //ESP = 0060F9C4 //把CALL下一个指令IP保存栈顶中 mov dword[esp],0x004013DE jmp 0x00401C4C ----------------------------------- push 0x004013DE     ////ESP = 0060F9C4 jmp 0x00401…
1.CALL和RET/RETN是一对指令,CALL把返回地址压入堆栈,RET/RETN把返回地址从堆栈取出,然后将IP寄存器改为该返回地址.  2.不使用CALL,而是人为地把地址放入堆栈即可实现.如:  push edi  retn  从edi处开始执行 3.加壳利用这个特点,在启动源文件文件前,将代码解密还原至原始位置…
GS简介: Windows的缓冲区安全监测机制(GS)可以有效的阻止经典的BOF攻击,因为GS会在函数调用前往函数栈帧内压入一个随机数(canary),然后等函数返回前,会对canary进行核查,判断canary是否被修改.因为canary的地址是(前栈帧EBP-4),所以如果溢出攻击想要覆盖返回地址或者异常处理句柄的话,就会路过canary.系统检测到canary被修改之后,在函数返回前就会直接终止程序,no return,no exception,so no exploit. GS原理: 下…
一个简单的c语言添加windows管理员账号的小程序,之前在渗透的时候经常用到,现在拿它来做自己的第一个shellcode. C代码: #pragma comment(lib, "netapi32.lib") #include "windows.h" #include <Lm.h> int main(int argc, char* argv[]) { NET_API_STATUS ret = 0; DWORD dwErr = 0; USER_INFO_1…
今天开始研究二进制了,开个文记录一下.下面是一个小程序的OD反汇编代码,自己尝试加了注释,本人逆向零基础,属于摸着石头过河的类型,有理解错误的地方,希望大牛不吝赐教. 源代码: #include<stdio.h> #include<string.h> char name[] = "37000011111"; int main() { char output[8]; strcpy(output, name); for(int i=0;i<8&&…
2013-09-17   作者:佚名   来源:本站整理   浏览:2001   评论:1   一直以来倍受此事困拢,vc2010以上版本编译出的exe或dll总是会引用kernel32.dll的EncodePointer和DecodePointer两个api,这两个api在xp sp2以下版本上找不到,虽然这种版本用户较少,但总有人在用,微软这贱人又不考虑这种低端用,无奈之下,我用过3种方法,记录如下. 1.使用vc2008的库,用2010的编译器.这种方法需要先找一份vc2008的库,而且在…
Virut分析 0x00.综合描述 virut样本的执行过程大体可以分为六步:第一步,解密数据代码,并调用解密后的代码:第二步,通过互斥体判断系统环境,解密病毒代码并执行:第三步,创建内存映射文件,执行内存映射文件代码:第四步,遍历进程列表除前4个进程外其他进程全注入代码,挂钩七个函数:第五步,向注入进程创建远程线程(远程线程创建成功不再二次创建),感染hosts文件,感染移动磁盘,修改注册表添加防火墙信任列表,联网受控:第六步,恢复病毒修改的原函数调用,执行原程序功能.完整功能模块图如下: 0…
Sality.m分析 0x1.样本概述 FILE_A MD5:1C9A0E01C6033801AFC5A12DE1CC5BDC FILE_B MD5:4B6B70F4A199CF3EAC1554B08804BC4F FILE_C MD5:91741578019D3613EEBD6C8F1862548E 样本FILE_A是捕获的病毒文件:FILE_B是一款网络连接状态查看工具Tcpview.exe:样本FILE_C是在虚拟机系统中运行文件FILE_A使其感染样本FILE_B所得.本报告全部结果都是…
0x00 样本说明 分析样本是被0b500d25f645c0b25532c1e3c9741667的样本感染得到.感染前的文件是Tcpview.exe,一款windows网络连接查看工具. 感染前后文件对比图示如下: 感染前 感染后 文件大小 106496 字节 818688 字节 文件md5 4B6B70F4A199CF3EAC1554B08804BC4F 041D85ECABF5F2E8366C5E0FDCB705F3 文件图标     分析样本的报毒情况如下: 杀软类型 病毒名 nod32…
@date: 2016/10/14 <逆向工程核心原理>笔记 记录书中较重要的知识,方便回顾 ps. 因有一些逆向基础,所以我本来就比较熟悉的知识并未详细记录 第一章 关于逆向工程 目标,激情,谷歌 QAQ 第二章 逆向分析Hello World程序 VS2010 x86 入口点 Entry Point call 0040270c jmp 0040104F 程序开头会有一段VC的启动函数(Stub Code) OD的快捷键 ctrl+f2, f8, f7, f9, ctrl+f9(exec t…
关于 caesum.com 网上上的题目,分类有Sokoban,Ciphers,Maths,Executables,Programming,Steganography,Misc.题目有点难度,在努力奋战中…… problem 21 Factor 数806515533049393最大的质因数是多少? 因数分解题,32位int范围在四十亿左右.我是这么记这个大概值的,全球六十多亿人口,很多人还不能上网,而且有局域网的存在,IP本来够用的,因为北美划用了很多,导致了现在的IP不够用,出现了IPv6.6…
前段时间收到locky样本,分析之后遂做一个分析. 样本如下所示,一般locky勒索的先决条件是一个js的脚本,脚本经过了复杂的混淆,主要用于下载该样本文件并运行,. 解密 样本本身进行了保护,通过ida打开之后只有少量几个函数,如下图所示为样本的入口地址,代码进行了重度的混淆加密.…
系统 : Windows xp 程序 : Crackme#3 - Self Destructed 程序下载地址 :http://pan.baidu.com/s/1kVxwlaZ 要求 : 注册机编写 使用工具 : OD 可在“PEDIY CrackMe 2007”中查找关于此程序的讨论,标题为“适合新手的D4ph1_-_Crackme#3的破解”. 利用超级字符串插件看下程序内的文本: Ultra String Reference Address Disassembly Text String…
Android Do not keep activities选项分析 Developer Options里面有一项: Do not keep activities -> 不保留Activities. 默认是不开启的. 当开启之后,用户离开后即销毁每个Activity.   相关背景知识: task, back stack和低内存时的系统行为 当用户开启一个task,里面的activities都会被保存在这个栈的back stack中. 当前的activity在栈顶并且拥有焦点,之前的activi…
标 题: [原创]消息钩子注册浅析 作 者: RootSuLe 时 间: 2011-06-18,23:10:34 链 接: http://bbs.pediy.com/showthread.php?t=135702 windows消息钩子很古老,但目前仍有很多地方需要用到,简单跟踪了一下函数执行流程,函数用法如下(MSDN): 函数功能:该函数将一个应用程序定义的挂钩处理过程安装到挂钩链中去,您可以通过安装挂钩处理过程来对系统的某些类型事件进行监控,这些事件与某个特定的线程或系统中的所有事件相关.…
#!/usr/bin/python # Exploit Title: Kingsoft Office Writer v2012 8.1.0.3385 .wps Buffer Overflow Exploit (SEH) # Version: 2012 8.1.0.3385 # Date: 2013-11-27 # Author: Julien Ahrens (@MrTuxracer) # Homepage: http://www.rcesecurity.com # Software Link:…
#!/usr/bin/python # Exploit Title: Kingsoft Office Writer v2012 8.1.0.3385 .wps Buffer Overflow Exploit (SEH) # Version: 2012 8.1.0.3385 # Date: 2013-11-27 # Author: Julien Ahrens (@MrTuxracer) # Homepage: http://www.rcesecurity.com # Software Link:…
系统 : Windows xp 程序 : keyfileme 程序下载地址 :http://pan.baidu.com/s/1qYVfvu0 要求 : 编写KeyFile 使用工具 : OD 可在看雪论坛中查找关于此程序的破文:传送门 趁着小长假还没结束,赶紧来个CM暖暖手.废话不多说,直接用DIE查看程序. 提示MASM编写,没有保护壳. 再用OD载入,发现关键子串:no keyfile found! . 8 je short 0040116C . 2C . 8 . je short 0040…
系统 : Windows xp 程序 : Crackme-xp 程序下载地址 :http://pan.baidu.com/s/1slUwmVr 要求 : 编写注册机 使用工具 : OD & IDA 可在看雪论坛中查找关于此程序的破文:传送门 这是一个拥有强大反调试机制的cm,无法查询到关键子串.下获取窗口文本的断点没用,设置对按钮下消息断点都没用. 然后用IDA打开后却发现了函数表里有: .................. 这个懂点英文的人都能看出来是 注册按钮的处理函数吧?所以前面那么多防护…
系统 : Windows xp 程序 : cztria~1 程序下载地址 :http://pan.baidu.com/s/1slUwmVr 要求 : 爆破 使用工具 : OD 可在看雪论坛中查找关于此程序的破文:传送门 废话不多说,直接查询到字符串:“            you did it!”,双击定位: ; /Count = 40 (64.) ; |pediy |. FF35 ] ; |hWnd = 000405D8 (class='Edit',parent=000505C0) |. E…
仅在Win32上使用,Win64上不允许内嵌汇编= = __declspec(naked) void* __stdcall __memcpy ( __in void* Dest, // ebp+0x08 __in const void* Src, // ebp+0x0C __in unsigned int Count // ebp+0x10 ) { __asm { push ebp mov ebp, esp push edi push esi mov edi, Dest // edi = Des…
大家都知道程序中若要使用COM组件则必须要先调用CoInitialize,该函数主要是用来初始化COM运行环境.但这个函数的作用域是以线程为单位还是以进程为单位呢?也许大家已经通过测试程序摸索出答案,没错,是以线程为单位.今天我们就稍微再深入一下,通过分析CoInitialize的具体实现来印证我们的想法. 我们先来看看CoInitialize的汇编 769B2A24                 mov     edi, edi 769B2A26                 push  …
国庆假期没事做了几道pwn题练手,等有时间在贴出pwn题的分析. 利用VIRTUALALLOC的方法绕过DEP其实和之前的方法大同小异了,只是VIRTUALALLOC开辟了一段新的可执行的内存空间,然后在复制shellcode,比修改内存属性要麻烦一点点. VirtualAlloc函数说明: lpAddress: 申请内存的起始地址,实验选了0x00030000 dwSize: 申请的内存大小,实验选择0XFF,根据shellcode的大小确定 flAllocationType: 申请内存的类型…
这几天做了NSCTF和GCTF,耽误了几天,今天继续. 这次绕过DEP的方法是利用VirtualProtect函数将shellcode所在的内存属性改成可执行状态就可以绕过DEP了. 首先看一下VirtualProtect函数的参数说明: lpAddress: 改变属性的内存起始起止 dwSize: 要改变属性的内存的起始地址 flNewProtect: 需要设置的内存的新属性,这里设置为0x40就行,可读可写可执行 pflOldProtest: 内存原始属性类型保存地址,根据实验书上的意思这里…
花了两个小半晚上的时间将0day安全这本书的绕过DEP的第一个实验做了,这里做些笔记. Ret2libc 我现在自己的理解就是在开启DEP保护的情况下,在程序的其他的可执行位置找到可以满足我利用要求的指令,形成一个可执行的指令序列,达到成功执行shellcode的目的. 那么利用Ret2libc的第一个方法就是通过ZwSetInformationProcess函数,这个API可以直接将进程中的DEP保护关闭,执行shellcode. 首先需要了解的是一个进程的DEP标识是在KPROCESS结构中…
/* ============================================================================ Name : client.c Author : liusiyuan Version : Copyright : Your copyright notice Description : Hello World in C, Ansi-style ================================================…
C++11 的 lambda 表达式规范如下: [ capture ] ( params ) mutable exception attribute -> ret { body } (1) [ capture ] ( params ) -> ret { body } (2) [ capture ] ( params ) { body } (3) [ capture ] { body } (4) // 简单的例子// 这个例子有2个参数x和y 返回x+y [](int x,int y){ ret…
在春节前,我曾经参与在<神奇的C语言>一文中的例子(5)的讨论,但限于评论内容的有限,现在本文再次对这个问题单独讨论.(此问题原貌,详见<神奇的C语言>,这里我将原文中的代码稍做轻微改动,并重新给出如下) 原问题给出如下代码: #include <stdio.h> void func1(char a[]) { //这里的参数 a 为指向数组的指针,因此 &a 和 a 的意义不同(前者为指针变量的地址,后者为指针变量的值) //&a 表示指针变量的地址.…
memset 是 msvcrt 中的一个函数,其作用和用途是显而易见的,通常是对一段内存进行填充,就其作用本身不具有任何歧义性.但就有人一定要纠结对数组的初始化一定要写成如下形式: int a[...] = { 0 }; int a[100] = { 1, 2 }; 而认为如下使用 memset 的写法不明就里的被其排斥和拒绝: memset(a, 0, sizeof(a)); 这种看法首先是毫无道理的,在代码风格,可读性,可维护性上根本不构成一个命题,且 memset 在开发中的使用是非常常见…
从暑假开始逆向研究也有一个半月了,今晚分析了一个压缩壳,第一次脱离书本逆向一个程序,放上来纪念一下. 其实像这种壳完全可以esp定律秒掉的,之所以分析它,是因为我想知道所谓IAT修复具体是怎么个算法,还有压缩壳到底流程是怎么样的,我认为学逆向最大的乐趣就是可以满足人的好奇心,只要精力够,程序的每个细节是怎么做的都可以知道. aplib部分看上去比较烦,以我现在水平去分析,那简直太烧脑子了. 其实aplib部分我觉得作者本来应该是放在一个函数里的,这个现象是编译器优化所造成的 004040FF >…