|
[求助]关于反汇编修改的问题
是不是不止一处呢? |
|
[求助]关于反汇编修改的问题
可能你问得不够具体。。。。 |
|
[求助]PVOID保存的是函数地址,如何转化为char*啊?[已解决]
wsprintf 行不行? |
|
|
|
[下载]APIMonitor v1.2.1.83
下了,谢谢。。 |
|
[求助]关于PE里面的地址,弄几天了,快搞死我了
罗云彬的win32汇编里有详细的介绍。给你个RVAtoFileOffset的源码,希望对你有帮助。 注:此源码来自附带光盘。 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Sample code for < Win32ASM Programming 2nd Edition> ; by 罗云彬, http://asm.yeah.net ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .const szNotFound db '无法查找',0 .code ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 将 RVA 转换成实际的数据位置 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> _RVAToOffset proc _lpFileHead,_dwRVA local @dwReturn pushad mov esi,_lpFileHead assume esi:ptr IMAGE_DOS_HEADER add esi,[esi].e_lfanew assume esi:ptr IMAGE_NT_HEADERS mov edi,_dwRVA mov edx,esi add edx,sizeof IMAGE_NT_HEADERS assume edx:ptr IMAGE_SECTION_HEADER movzx ecx,[esi].FileHeader.NumberOfSections ;******************************************************************** ; 扫描每个节区并判断 RVA 是否位于这个节区内 ;******************************************************************** .repeat mov eax,[edx].VirtualAddress add eax,[edx].SizeOfRawData ;eax = Section End .if (edi >= [edx].VirtualAddress) && (edi < eax) mov eax,[edx].VirtualAddress ;eax= Section start sub edi,eax ;edi = offset in section mov eax,[edx].PointerToRawData add eax,edi ;eax = file offset jmp @F .endif add edx,sizeof IMAGE_SECTION_HEADER .untilcxz assume edx:nothing assume esi:nothing mov eax,-1 @@: mov @dwReturn,eax popad mov eax,@dwReturn ret _RVAToOffset endp ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 查找 RVA 所在的节区 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> _GetRVASection proc _lpFileHead,_dwRVA local @dwReturn pushad mov esi,_lpFileHead assume esi:ptr IMAGE_DOS_HEADER add esi,[esi].e_lfanew assume esi:ptr IMAGE_NT_HEADERS mov edi,_dwRVA mov edx,esi add edx,sizeof IMAGE_NT_HEADERS assume edx:ptr IMAGE_SECTION_HEADER movzx ecx,[esi].FileHeader.NumberOfSections ;******************************************************************** ; 扫描每个节区并判断 RVA 是否位于这个节区内 ;******************************************************************** .repeat mov eax,[edx].VirtualAddress add eax,[edx].SizeOfRawData ;eax = Section End .if (edi >= [edx].VirtualAddress) && (edi < eax) mov eax,edx ;eax= Section Name jmp @F .endif add edx,sizeof IMAGE_SECTION_HEADER .untilcxz assume edx:nothing assume esi:nothing mov eax,offset szNotFound @@: mov @dwReturn,eax popad mov eax,@dwReturn ret _GetRVASection endp ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
|
[求助]关于PE里面的地址,弄几天了,快搞死我了
这里面有个对齐的问题。 一般文件中的对齐是0x200,而加载之后内存中的对齐一般是0x1000。 如果文件中第一个节从0x600开始,其中有个数据地址是0x612,那么它载入之后位于内存中的什么位置呢? 再假设文件被加载到了0x400000(基址),文件中的第一个节被加载到了0x1000,只有知道了这些,这样我们才能确定内存中的地址为0x401012。 所以,仅仅给一个文件中的偏移和加载基址是不能确定他在内存中的地址的。 不知道我说得有没有错误,反正我是这么理解的,仅供参考吧。 |
|
|
|
[技术专题]软件漏洞分析入门
等待精华9。。。。 |
|
|
|
|
|
|
|
我的OD调试工具打不开了
关掉杀毒软件试试 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值