ICode9

精准搜索请尝试: 精确搜索
  • 关于递归的理解2020-12-01 22:30:21

    关于递归的理解 1.递归的理解1)递归的概念2)递归的三大要素①明确函数要干什么②寻找递归结束条件③找出函数的等价关系式④举些例子 2.递归之八皇后问题理解3.递归的优化1)尾调用2)memoization3)函数式编程(Java描述):尾调用及抽象递归 4.递归的调用机制(简单版)5.递归的调用机制(复

  • 1.C语言的汇编表示-函数的定义与调用2020-11-08 08:34:25

    学习需具备知识---汇编相关知识   2、第一个C程序   1.创建项目--Win32 console application   2.创建文件--source file --new--C++ source file   3.入口程序   4.构建-F7   5.运行-F5     int plus1(int x,int y) { return 0; } 1: 2: int plus1(int x,

  • 汇编系列21--EBP寻址2020-11-04 07:31:40

         

  • 一个底层w32汇编的小例子,演示 原创2020-10-29 17:03:23

          主程序  结果见上图 .386.model flat,stdcalloption casemap:noneinclude <windows.inc>include <user32.inc>includelib <user32.lib>include <kernel32.inc>includelib <kernel32.lib>.code start:call test2test2 proc     local @loc1:dwor

  • win32汇编窗口程序2020-09-29 07:34:28

    D:\masm32\include\windows.inc文件中有大部分类型的定义 User32.inc文件中没有CreateWindow,但是有CreateWindowEx   汇编指令Enter相当于push ebp,       mov ebp, esp 汇编指令Leave相当于mov esp, ebp,   pop ebp   Win32汇编语法糖: .if .elseif .else .endif   .wh

  • C语言函数的学习2020-09-28 15:31:44

    0x01.函数 这节就先讲函数吧,函数大致分为四种类型 1、无参数、无返回值的函数格式 void 函数名() { //代码段 } void Hello() { printf("Hello World!"); } 2、有参数,无返回值的函数格式 void 函数名(参数类型 参数名,参数类型 参数名) { //代码段 } void add(int a,int b) {

  • nasm astrstr函数 x862020-09-28 11:32:42

    xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrstr dllmain: mov eax,1 ret 12 ;-------------------------------------------------------------; ; 返回一个指针,该指针指向字符串中第一次出现的搜索字符

  • nasm astrrev函数 x862020-09-28 09:31:52

    xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrrev dllmain: mov eax,1 ret 12 ;------------------------------------------------; ; 反转字符串的字符。 ;--------------------------------------------

  • nasm astrcpy_s函数 x862020-09-24 14:01:57

    xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrcpy_s dllmain: mov eax,1 ret 12 astrcpy_s: push ebp mov ebp,esp push ebx mov eax,[p1] ; dst char ptr mov ecx,[p2] ; dwDstSize mo

  • 攻防世界 Reverse 新手练习区 game2020-09-18 10:01:19

    game 题目描述:菜鸡最近迷上了玩游戏,但它总是赢不了,你可以帮他获胜吗 PEiD 查壳,发现没有壳 拉进 ida x32,直接 shift + F12 查看字符串,发现 flag 字样 双击进入汇编代码,发现函数 sub_45E940,双击函数进入代码图,按 F5 反汇编进入伪代码 发现声明了非常多的变量,但是地址都是连续的 c

  • C++函数调用栈的变化分析2020-09-13 22:34:45

    程序中栈的基础知识 栈是向下生长的 向下生长指的是从内存的高地址-->低地址的方向拓展。 栈有栈底和栈顶,从上面可以知道栈顶的地址是比栈底的要低的。 对于X86体系的CPU而言,大概需要知道以下基础知识: ebp寄存器:一般叫做基址指针或者帧指针; esp寄存器:一般叫做栈指针 ebp在没有

  • visual studio中调用masm汇编2020-09-09 02:31:38

    创建空项目 右键项目-》生成依赖项-》生成自定义-》masm//其中这一步不能和下一个步骤顺序颠倒,必须先设置这一项,在添加源文件,编辑 添加main.cpp sum.asm #include <cstdio>extern "C" int sum(int a, int b); int main(int argc, char** argv){ int a = 1; int b = 2; int c = sum

  • 记一次GDB调试2020-09-04 18:31:37

    目标文件: ciscn_2019_ne_5。 来源 :https://buuoj.cn/challenges 保护情况:保护是没有保护的      主要伪代码: int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // [esp+0h] [ebp-100h] char src[4]; // [esp+4h] [ebp-FCh] char v5; // [

  • xctf | pwn进阶2020-07-14 18:03:05

    forgot 简化版代码如下 int __cdecl main() { int v0; // ebx char email_check[32]; // [esp+10h] [ebp-74h] int(*v3)(); // [esp+30h] [ebp-54h] int (*v4)(); // [esp+34h] [ebp-50h] int (*v5)(); // [esp+38h] [ebp-4Ch] int (*v6)(); // [esp+3Ch] [ebp-48h] i

  • 小白学逆向六月份第二周笔记2020-06-14 10:02:57

    题目描述:菜鸡发现Flag似乎并不一定是明文比较的   用ida打开附件,然后F5查看伪代码    int __cdecl main(int argc, const char **argv, const char **envp) { signed int v3; // ebx char v4; // al int result; // eax int v6; // [esp+0h] [ebp-70h] int v7; //

  • API调用过程2020-06-03 20:54:08

    目录一、API调用过程(3环部分)什么是API?几个重要的DLLIDA分析ReadProcessMemory API(二)API调用过程(3环进0环)1、_KUSER_SHARED_DATA 结构2、分析7FFE0300h进Ring0的方式3、两种进Ring0的方式3.1 API通过中断门进Ring03.2 通过int 0x2e进Ring03.3 sysenter进Ring0(三)API调用过程(保护

  • c&汇编rkvir2020-05-01 16:53:50

    printf函数 printf("%d", num); 汇编代码调用过程: 0071183F mov eax,dword ptr [num] 00711842 push eax 00711843 push offset string "%d" (0717B30h) 00711848 call _printf (0711046h) 0071184D add es

  • 栈迁移基础2020-04-30 12:57:05

    栈迁移 当我们的rop链过长时很可能栈空间不够,并且ebp之前的空间其实只是填充一些没什么用的数据 栈迁移机理 与传统的pop_ret类似,利用level_ret实现栈的迁移,都是寻找很小短的零碎代码,进行拼接,和拼积木很像。 level ret//拆解 mov ebp,esp//esp跟着ebp走 pop ebp //栈基指针的转

  • C++ 反汇编-分析类的实现原理2020-04-29 09:08:10

    反汇编(Disassembly) 即把目标二进制机器码转为汇编代码的过程,该技术常用于软件破解、外挂技术、病毒分析、逆向工程、软件汉化等领域,学习和理解反汇编对软件调试、系统漏洞挖掘、内核原理及理解高级语言代码都有相当大的帮助,软件一切神秘的运行机制全在反汇编代码里面。下面将分

  • 两种异常(CPU异常、用户模拟异常)的收集2020-04-24 15:54:34

     Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 两种异常(CPU异常、用户模拟异常)的收集  文章的核心:异常收集的是什么?(TrapFrame与ExceptionRecord);如何收集异常?(看文章)。   1. 异常的分类   ① CPU指令异常 (比如除零异常) CPU运行检测到;   ②

  • C语言反汇编-多维数组与指针2020-04-18 10:02:58

    反汇编(Disassembly) 即把目标二进制机器码转为汇编代码的过程,该技术常用于软件破解、外挂技术、病毒分析、逆向工程、软件汉化等领域,学习和理解反汇编对软件调试、系统漏洞挖掘、内核原理及理解高级语言代码都有相当大的帮助,软件一切神秘的运行机制全在反汇编代码里面。 数组和指

  • 硬核知识大全 作为程序员不得不了解2020-04-17 15:55:10

    我们每个程序员或许都有一个梦,那就是成为大牛,我们或许都沉浸在各种框架中,以为框架就是一切,以为应用层才是最重要的,你错了。在当今计算机行业中,会应用是基本素质,如果你懂其原理才能让你在行业中走的更远,而计算机基础知识又是重中之重。下面,跟随我的脚步,为你介绍一下计算机底层知识。

  • C语言反汇编-数据类型与常量2020-04-16 12:51:14

    反汇编(Disassembly) 即把目标二进制机器码转为汇编代码的过程,该技术常用于软件破解、外挂技术、病毒分析、逆向工程、软件汉化等领域,学习和理解反汇编对软件调试、系统漏洞挖掘、内核原理及理解高级语言代码都有相当大的帮助,软件一切神秘的运行机制全在反汇编代码里面。 本笔记的

  • BUUCTF-RE-reverse32020-03-12 18:53:04

    没有信息 丢进IDA 1 __int64 __cdecl main_0() 2 { 3 int v0; // eax 4 const char *v1; // eax 5 size_t v2; // eax 6 int v3; // edx 7 __int64 v4; // ST08_8 8 signed int j; // [esp+DCh] [ebp-ACh] 9 signed int i; // [esp+E8h] [ebp-A0h] 10

  • [Black Watch 入群题]PWN2020-03-07 19:57:03

    学习一下栈迁移,以下部分内容转载于看雪的文章 以32位为例,在汇编中,用call指令来调用一个函数,call 函数等同于 push eip+4 push ebp mov ebp,esp 主要的目的还是用来保护现场,避免执行完函数吼堆栈不平衡或找不到之前的入口地址 当调用完函数后,就需要用 leave;ret;来还原现场 leave

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有