nasm astrcat函数 x86】的更多相关文章

xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrcat dllmain: mov eax,1 ret 12 astrcat: push ebp mov ebp,esp mov ecx,[p1] ; dst char ptr mov eax,[p2] ; src char ptr ; get dst char end .dstFor: cmp b…
xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrspn dllmain: mov eax,1 ret 12 ;---------------------------------------------------; ; 返回不属于一组字符的字符串中第一个字符的索引 ;---------------------------------------…
xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrcspn dllmain: mov eax,1 ret 12 ;---------------------------------------------------; ; 返回属于一组字符的字符在字符串中第一次出现的索引 ;------------------------------------…
xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrchr dllmain: mov eax,1 ret 12 astrchr: push ebp mov ebp,esp mov eax,[p1] ; char ptr mov ecx,[p2] ; char .for: ;-------------------------------------…
xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrlen dllmain: mov eax,1 ret 12 astrlen: push ebp mov ebp,esp mov ecx,[p1] ; char ptr xor eax,eax .for: cmp byte [ecx],0 je .return inc ecx inc eax jmp…
xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain dllmain: mov eax,1 ret 12 aat: push ebp mov ebp,esp ; 函数必须保留所有寄存器,但eax,ecx和edx除外 ; esp则必须根据调用约定进行更新 mov ecx,[p1] ; array ptr mov edx,[p2] ; index mov eax,[p3]…
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 ;-------------------------------------------------------------; ; 返回一个指针,该指针指向字符串中第一次出现的搜索字符串 ;-----------------------…
xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrset_s dllmain: mov eax,1 ret 12 ;------------------------------------------------; ; 将字符串的字符设置为字符 ;------------------------------------------------;…
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 ;------------------------------------------------; ; 反转字符串的字符. ;------------------------------------------------; astrr…
xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrrchr dllmain: mov eax,1 ret 12 ;------------------------------------------------; ; 扫描字符串以查找字符的最后一次出现. ;---------------------------------------------…
xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrncmp dllmain: mov eax,1 ret 12 ;------------------------------------------------; ; 比较最多两个字符串的指定字符数. ;----------------------------------------------…
xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 %define p4 ebp+20 section .text global dllmain export astrncat_s dllmain: mov eax,1 ret 12 ;------------------------------------------------; ; 将字符追加到字符串 ;---------------------------------…
xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrlwr_s dllmain: mov eax,1 ret 12 ;-----------------------------------------; ; 将字符串转换为小写 ;-----------------------------------------; astrlwr_s: push e…
xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astricmp dllmain: mov eax,1 ret 12 ;-------------------------------------------; ; 对字符串(char)进行不区分大小写的比较. ;-------------------------------------------;…
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 mov edx,[p3] ; src char…
xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrcmp dllmain: mov eax,1 ret 12 astrcmp: push ebp mov ebp,esp push ebx mov eax,[p1] ; char ptr 1 mov ecx,[p2] ; char ptr 2 .for: mov dl,[eax] mov bl,[…
xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export astrcat_s dllmain: mov eax,1 ret 12 astrcat_s: push ebp mov ebp,esp push ebx mov ecx,[p1] ; dst char ptr mov eax,[p2] ; src char ptr mov edx,[p3] ; dwDst…
1 固定映射 1.1 数据结构 linux高端内存中的临时内存区为固定内存区的一部分, 对于固定内存在linux内核中有下面描述 x86 arm arm64 arch/x86/include/asm/fixmap.h?v=4.7, line 67 arch/arm/include/asm/fixmap.h?v=4.7, line 11 arch/arm64/include/asm/fixmap.h?v=4.7, line 36 /* * Here we define all the compil…
来自:清泛网 - http://www.tsingfun.com/html/2015/dev_0804/hello_os_word_my_first_os.html 首先阐述下程序运行的基本原理:计算机CPU仅仅运行二进制指令,我们使用的开发语言开发出的程序终于由对应的编译器编译为二进制指令.二进制中包括程序相关的数据.代码指令(用我们最常见的公式描写叙述就是:程序=数据+算法).CPU读取对应的指令.数据后開始运行,运行后的结果输出到外部设备,如屏幕.磁盘等.整个过程中,CPU发挥最为核心的作…
Canary 参考链接:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/mitigation/canary-zh/ 0x1 简介: 用于防止栈溢出被利用的一种方法,原理是在栈的ebp下面放一个随机数,在函数返回之前会检查这个数有没有被修改,就可以检测是否发生栈溢出了. 0x2 原理: 在栈底放一个随机数,在函数返回时检查是否被修改.具体实现如下: x86 : 在函数序言部分插入canary值: mov eax,gs:0x14 mov DWORD PTR…
一.调用系统的IsDebuggerPresent函数 (1)实现程序 最简单也是最基础的,Windows提供的API接口:IsDebuggerPresent(),这API实际上就是访问PEB的BeingDebugged标志来判断是否处于调试状态. 使用vs调试此段代码,弹出"检测到调试器". #in…
getArguments.asm: extern VirtualAlloc section .text global dllmain export getArguments dllmain: mov eax,1 ret 12 getArguments: push ebp mov ebp,esp push 0x40 ; PAGE_EXECUTE_READWRITE push 0x3000 ; MEM_COMMIT | MEM_RESERVE push 8 ; size push 0 ; lpAdd…
Detours 当然是用detours,微软明显高腾讯一筹,同上,至今没失败过.写这种HOOK一定要再写个测试程序,不要直接HOOK你的目的程序,例如QQ,因为这样不方面更灵活的测试.说明一下:Detours是微软开发的一个函数库(源代码可在http://research.microsoft.com/sn/detours 免费获得)用于修改运行中的程序在内存中的影像,从而即使没有源代码也能改变程序的行为.具体用途是:拦截WIN32 API调用,将其引导到自己的子程序,从而实现WIN32 API的…
在公司开发的RT下没法使用C库,并且替代库函数没有几个,需要用到setjmp和longjmp函数,没办法,只能自己想办法了,上sourceforge淘换到一个小日本的工程,提供这两个函数的替代源码,名字叫libcont,下载下来发现实在Linux下编译的,查看Makefile文件,使用了GCC和NASM,郁闷了,但是实在找不到windows下的代码了,看看能不能移植到VC下吧! 千辛万苦,本想修改代码移植到VC下,无奈汇编格式差异较大,后经同事提醒,在VS2005下调用NASM总算把汇编嵌进来了…
参考:https://bbs.pediy.com/thread-224583.htm 整理成表格方便查询 cdecl(C规范), stdcall(WinAPI默认), fastcall, ATPCS(ARM-Thumb Procedure Call Standard/ARM-Thumb过程调用标准) , thiscall(用于C++中类成员函数) 调用约定\架构 X86 X64 ARM AARCH64 cdecl 参数从右往左依次入栈,调用者实现栈平衡,返回值存放在 EAX 中. X X X s…
制作DLL xxx.asm: %macro fb 0 push ebp mov ebp,esp %endmacro %macro fa 1 mov esp,ebp pop ebp ret %1 %endmacro section .text global dllmain dllmain: mov eax,1 ret 12 f1: fb mov eax,[ebp+8] add eax,[ebp+12] fa 8 xxx_link.fil: ; > golink @xxx_link.fil /ent…
hello.asm: extern MessageBoxA extern ExitProcess section .data title db "caption.",0 message db "hello world....",0 section .text global main main: push 0 push title push message push 0 call MessageBoxA _exit: push 0 call ExitProcess h…
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53942648 前面深入学习了古河的Libinject注入Android进程,下面来 深入学习一下作者ariesjzj的博文<Android中的so注入(inject)和挂钩(hook) - For both x86 and arm>,注入的思路和古河的是一样的,但是代码的兼容性更好更好理解,适用于arm和x86模式下so注入和函数的Hook,这份代码自己也测试了一下,确实可以H…
https://en.wikipedia.org/wiki/X86_calling_conventions…
data segment ENG db 'SUNdayS Coming I Wanna Drive My Car,SUN,SUN$' ;9,3 sun1 db 'SUN' swcount db 0ah,0dh,'single word number:',?,?,'$' suncount db 0ah,0dh,'SUN:',?,'$' data ends code segment assume cs:code,ds:data,es:data start: mov ax,data mov ds,ax…