|
请教ollydbg不能导入库文件
已经解决。用的dll2lib。谢谢楼上兄弟的指点 |
|
求助两个win32汇编的问题,实在搞不明白了。
invoke Process32Next,@hSnapShot,addr @stProcess 这句出错。 原因是错误的调用了strrchr,导致strrchr不能正确恢复ESP.因为invoke Process32Next,@hSnapShot,addr @stProcess 会调用寄存器的值,来访问下一条进程信息。所以报错。 如果如点点所说,错误的调用会导致先PUSH 0,且这是MS喜欢这样做。那就没有办法深究了。 最后感谢,两位对我问题的关注。 |
|
求助两个win32汇编的问题,实在搞不明白了。
又仔细看了一下msdn对strrchr的说明,是搞错了strrchr的用法 Scan a string for the last occurrence of a character. char *strrchr( const char *string, int c ); 由以上说明可知,strrchr函数只用于单字符的查找。但是我给出的是一个字符串,改成单字符为第二个参数后,strrchr可以正常恢复堆栈了。 错误调用strrchr函数是的od情况如下 00401066 |. |6A 00 |PUSH 0 00401068 |. |A0 73204000 |MOV AL,BYTE PTR DS:[402073] 0040106D |. |66:0FB6C0 |MOVZX AX,AL 00401071 |. |66:50 |PUSH AX ; /c 00401073 |. |8D85 FCFEFFFF |LEA EAX,DWORD PTR SS:[EBP-104] ; | 00401079 |. |50 |PUSH EAX ; |s 0040107A |. |E8 EF010000 |CALL <JMP.&MSVCRT.strrchr> ; \strrchr 0040107F |. |83C4 08 |ADD ESP,8 正确调用strrchr函数后 00401066 |. 6A 64 |PUSH 64 ; /c = 64 ('d') 00401068 |. 8D85 FCFEFFFF |LEA EAX,DWORD PTR SS:[EBP-104] ; | 0040106E |. 50 |PUSH EAX ; |s 0040106F |. E8 F2010000 |CALL <JMP.&MSVCRT.strrchr> ; \strrchr 00401074 |. 83C4 08 |ADD ESP,8 我自己能解释的是,因为给出的第二个参数是地址,所以要先取地址中第一个字符到AL。如果是正确的调用,只给一个字符的话,则直接PUSH。因为错误的调用,所以多了一个取到AL的过程。 我自己不能解释的是,为什么做了错误的调用,程序要自身先PUSH 0。请高手解答。谢谢。 |
|
求助两个win32汇编的问题,实在搞不明白了。
是啊。我跟出来了问题在strrchr调用上。问题是为什么strrchr函数没有正确恢复堆栈? |
|
求助两个win32汇编的问题,实在搞不明白了。
兄弟,我不是要书上的源码,我问的是为什么调用了strrchr以后,该函数不能自动恢复正确的堆栈。 |
|
|
|
能否请大虾给一个获取程序自身运行时IAT的汇编代码?谢谢
我从坛子里看到大家讨论过几种检测的办法。检查IAT是其中一种,虽然道高一尺,魔高一丈。但是,我希望选择一种方法可以初步尝试,也未必是件坏事。总是比什么都不干更好吧。 |
|
请教OD如何给新线程下鼠标双击消息断点?
自己回一下。根据坛子里那篇逆向扫雷程序的文章,找到了winmain函数中处理消息的函数。但发现没有处理双击和单击的响应。最后继续baidu了一下,有了个结论。那就是目标程序是Directx编程。而Directx编程是使用硬件消息。所以一般不在winmain里指定的消息处理函数中响应。没在第一帖中说明是Directx,实在是没有想到Directx是使用硬件消息,天真的以为都是windows标准消息。呵呵。 |
|
如何在反汇编一个网络程序后,能够添加反hook功能。
收到。感谢各位各位的发言。我又仔细看了一遍我自己在这篇帖子中的发言,正如Nax所说,问题出在我自己对hook的手法不了解上。这就好像反病毒的人,不会写病毒,怎么反病毒呢? 鄙视一下自己,又愚钝了一次。 |
|
如何在反汇编一个网络程序后,能够添加反hook功能。
忍不住还是要问一下。 没有得到回复,是因为问题太弱了,还是我的假设不对。不是不想实践出真知,实在是没有下手的头绪啊。 或者能不能请斑竹给个肯定的答复。哪怕说我的假设纯属胡扯,继续研究。我也会心满意足。没有回复,心里总是不踏实。绝没有要求的意思。 |
|
能不能请大虾介绍一下给PE文件增加功能的方法
为什么没人回呢?是我问的有问题吗? |
|
如何在反汇编一个网络程序后,能够添加反hook功能。
感谢几位对小弟这贴的关注,通过琢磨你们的帖子,又到网上看了下资料,感觉思路比较清晰了。实际上我需要的功能是如何检测是否已被hook. 在网上看到一篇文章,里面提到钩子的原理。安装一个全局钩子,然后获得欲hook的网络程序进程ID,取得需要hook的函数地址,然后修改为跳转到外挂的函数。 全局钩子意味着每个进程内都被插入了钩子代码。现在做一下流程的假设。 首先打开外挂程序,外挂给所有进程都插入了钩子代码。因为是全局钩子,感觉系统进入了一个监听状态,再新打开的程序,都会被自动插入钩子程序,要不怎么叫全局钩子呢。当打开网络程序后,系统也自动给这个网络程序插入了一个钩子。然后钩子代码根据捕获的一个特定事件,取得网络程序的进程ID,根据进程ID,外挂程序又可以取得需要拦截的函数地址,就可以截取封包了。 不知道理解的对不对。假如理解的对,那么是不是可以这样假设,因为外挂首先安装了全局钩子,所以网络程序在装入内存时的一瞬间已经被装了钩子,或者说程序正式开始前已经被装了钩子,那么网络程序是不是可以把运行的第一步实现为,检测自身是否已经被插入了钩子? 呵呵。今天晚上全是猜测。主要是没有理论基础,也无从下手,希望有经验的前辈,在理论层次上给指点一下。 |
|
如何在反汇编一个网络程序后,能够添加反hook功能。
我想问题应该更具体化一点,就比较能说清楚了。应该是我的问题问的不明确,刚才根据楼上的回复,我又查了一下网上的资料。确如楼上所说,完全避免hook,几乎是不可能的。 假如一个外挂程序,要想截获一个网络程序的封包。常用作法是先启动外挂,然后监视系统进程出现欲hook的网络程序,开始截获。不知道我这个假设是否正确。 假如上面的假设成立,那么作为被hook的网络程序,是否有能力检测到系统进程中存在一个欲hook的监视进程。如果能够检测出,就可以让网络程序终止。 当然,也可能网络程序已经运行,然后再运行一个外挂程序,那么如果是这种情况,网络程序自身是否有可能检测出被劫持封包,从而终止运行呢? 上面两个问题,实际上已经不是反hook的意思,而是如何检测是否有软件准备hook,或已经被hook. |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值