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 ;------------------------------------------------;
; 扫描字符串以查找字符的最后一次出现。
;------------------------------------------------;
astrrchr:
push ebp
mov ebp,esp
push ebx mov ecx,[p1] ; const char *str
mov eax,[p2] ; int c .for:
mov dl,[ecx]
test dl,dl
jz .return
cmp dl,al
jne .next
mov ebx,ecx
.next:
inc ecx
jmp .for .return:
mov eax,ebx
pop ebx
mov esp,ebp
pop ebp
ret 8

c++:

#include <iostream>
#include <Windows.h>
#include <tchar.h>
#include <string> typedef int (CALLBACK* astrrchr_t)(const char* str, int c); astrrchr_t astrrchr; int main()
{
HMODULE myDLL = LoadLibraryA("xxx.dll");
astrrchr = (astrrchr_t)GetProcAddress(myDLL, "astrrchr"); printf("%s\n", strrchr( "hello world", "o"[0])); // orld
printf("%s\n", astrrchr("hello world", "o"[0])); // orld printf("%s\n", strrchr( "hello world", "l"[0])); // ld
printf("%s\n", astrrchr("hello world", "l"[0])); // ld
return 0;
}

最新文章

  1. canvas快速绘制圆形、三角形、矩形、多边形
  2. java学习笔记六——数组
  3. Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)
  4. IOS网络编请求响应之URL结构
  5. Gym 100801D Distribution in Metagonia (数学思维题)
  6. 从UnitedStack OS 1.0 Preview试用申请问卷调查学习OpenStack
  7. C++ Code_animateCtrl
  8. uva11292贪心基础题目
  9. 数据结构与算法--KMP算法查找子字符串
  10. 学习Ajax
  11. redis资料收集
  12. OSM数据下载地址
  13. Flask信号和wtforms
  14. newCachedThreadPool 的使用
  15. 我发起并创立了一个 C 语言编译器 开源项目 InnerC
  16. Web应用:当文件超过100KB,无法上传,有种原因你想象不到
  17. What&#39;s New In Zeebe: Scaling Zeebe, New Client APIs, Faster Requests, Timestamps, NodeJS Client, and Default Topic is Back!
  18. effective c++ 笔记 (49-52)
  19. php-fpm配置文件
  20. C++中运算符的优先级

热门文章

  1. Pod和容器的LimitRange原理和实践总结
  2. 配置《Orange&#39;s一个操作系统的实现》环境心得
  3. 高性能缓存 Caffeine 原理及实战
  4. (十)整合 JWT 框架,解决Token跨域验证问题
  5. Jumpserver-堡垒机
  6. H3C交换机DHCP配置
  7. Linux数据库的导入导出
  8. 深入理解 ProtoBuf 原理与工程实践(概述)
  9. shell脚本的使用该熟练起来了,你说呢?(篇二)
  10. [AHOI2009] [BZOJ1799] 月之迷 (数位DP)