首页
社区
课程
招聘
[求助]Win32汇编动态回去API函数地址
发表于: 2012-2-3 14:56 4206

[求助]Win32汇编动态回去API函数地址

2012-2-3 14:56
4206
罗云彬老师的《Win32汇编程序设计》17章中的例子,我照着打的,编译成EXE文件后,运行不起。由于是新手,我用OD查看时,只知道可能是_GetApi返回的"GetProcAddress"函数的地址不对,但不知道如何处理,求大牛帮忙。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 145
活跃值: (105)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
2
会不会是打错啦
2012-2-3 19:12
0
雪    币: 603
活跃值: (40)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
3
		mov	ebx,[esi].AddressOfNames
		add	ebx,_hModule
		xor	edx,edx
		.repeat
			push	esi
			mov	edi,[ebx]
			add	edi,_hModule
			mov	esi,_lpszApi
			mov	ecx, @dwStringLength
			repz	cmpsb
			.if	ZERO?
				pop	esi
				jmp	@F
			.endif
			pop	esi
			add	ebx,4
			inc	edx
		.until	edx >= [esi].NumberOfNames
		jmp	_Error

这里不对
mov        ecx, @dwStringLength
ecx里传的长度应该中@dwStringLength+1.
比较字符串要有结尾
不然"GetProcAddress"和"GetProcAddress123456789"不是一样啦?
2012-2-3 19:33
0
雪    币: 603
活跃值: (40)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
4
我测试了一下。。。果然是的
比较正确后停在这里
0040111E  |.  5E            |pop     esi                                       ;  kernel32.77094DA8

而这时所得到的函数并不是GetProcAddres。。。db edi给你看看
7709B240  47 65 74 50 72 6F 63 65 73 73 41 66 66 69 6E 69  GetProcessAffini
7709B250  74 79 4D 61 73 6B 00 47 65 74 50 72 6F 63 65 73  tyMask.GetProces

所以。你这代码得到的是GetProcessAffinityMask的地址
2012-2-3 19:36
0
雪    币: 166
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我昨天经过仔细比对,终于发现了错误的地方!楼上的说法是错的,其实是我把这里shl eax,2打成shl eax,1。。。不过还是谢谢你的回答哈!我马上去结贴!
2012-2-4 23:57
0
游客
登录 | 注册 方可回帖
返回
//