|
[求助]OD调试的问题,大家帮下忙分析下原因
选项->调试设置->异常:忽略以下异常 选中: 忽略kernel32中的内存异常 非法内存访问 同时忽略以下指定的异常或范围 -添加E06D7363到指定异常的列表里 |
|
od如何设置有条件的内存断点
据我所知,没有这样的功能。 |
|
[求助]关于谭浩强C语言的几个问题
[QUOTE=独步千里;614198]谢谢各位前辈的教导,我会继续努力的,另外补充下块注释和行注释的问题,你们说块注释也是/*注释内容*/格式,那么我下面写的程序能正常编译吗? #include <stdio.h> void main() {int a[10]; int i,j,t; printf(&quo...[/QUOTE] 嵌套注释不一定能编译,要看使用的编译器。 GCC没有问题,VC6似乎有问题。 |
|
[求助]请问如何定位程序被修改过的代码?
用常见的补丁工具keymake可以比较文件直接生成补丁程序。 如果想要具体查看不同点,可以用各种文件比较工具,如BeyondCompare、UltraCompare等。 |
|
[求助]一个网络验证爆破的思路
如果hook.dll及其它的dll文件只是完成功能,不再进行校验的话,直接跳过验证从逻辑上是可行的。 甚至,自己写个Loader来实现将dll注入到游戏的进程中也不是不可能。 最简单的方法是用一个可以验证成功的帐号,直接拦截程序对dll的加载和调用过程。 另外,论坛不允许点名,也不要PM请人来回答问题。而且,论坛不鼓励讨论外挂相关的内容。 此类问题,恕不回复。 |
|
|
|
|
|
|
|
[求助]这个程序OD不能加载
不知道是什么壳,不认识。 我的OllyICE加载没有问题,前两个CALL用F7过,然后下面紧跟着一个条件跳转,直接到跳转的目的地址,F4,再往下几行就看到有一个jmp eax,这个Jmp就到了OEP了。 看样子是个压缩壳,IAT没有加密,直接修复就好。 BTW:我可以顺利加载不知道和Olly Advanced插件有无关系。 |
|
[求助]附加进程暂停于ntdll.DbgBreakPoint
DbgBreakPoint就是一个int3。 程序调用DbgBreakPoint与手动插入一个int3指令的作用可以说是一样的。 程序可以用它来完成一些调试功能,也可以用来检测调试器(就跟int3异常检测的原理一样)。 从程序安装的SEH可以很容易识别它是故意暂停程序还是用来检测调试器。 如果是用来暂停程序,那就不用管它,直接往下运行;如果是检测调试器,一般是要shift+f9/f8/f7来忽略异常的。 |
|
[求助]编程时设置断点的问题
看这里http://www.nynaeve.net/?p=81 这篇文章里讲到进程初始化完成,系统开始运行进程的主线程时,会重新装载一套Context,从而将调试器写入的DR寄存器的值覆盖掉。 作者用的是WinDBG,不过原理是相同的。 OD就是使用int3断点来让程序暂停在入口点的。 |
|
求助! 内存补丁
这样啊,最简单的实现方式就是 将 A 这个地址 放ESI寄存器,将 B 这个地址放EDI寄存器,将要拷贝的字节数放ECX寄存器,然后用REP MOVSB实现拷贝。再加上寄存器保存,代码看上去是这样的: push esi push edi push ecx mov esi, A mov edi, B mov ecx, 0xXXXX rep movsb pop ecx pop edi pop esi 把这段代码补在原来程序中.text节末尾的有大量的0的位置,在你找到的解密完成后的那个代码位置,用JMP指令跳出来执行,执行后再跳回去。因为JMP指令可能会破坏原来的若干条指令,所以你在补丁代码还要补上与原来功能等效的代码(这是打代码补丁的常规方法)。 |
|
|
|
[求助]大家帮忙推荐个脱壳修复工具吧
为什么我搜索ImportRec,第一页就有这个帖子呢? http://bbs.pediy.com/showthread.php?t=65186&highlight=ImportRec |
|
[求助]VC内联汇编寻址问题
你的p是如何定义的呢?p的期望值是多少呢? |
|
求助! 内存补丁
你是用OD来操作进程的内存,还是要自己写Loader来实现? OD的话,直接在数据窗口定位到地址A,选中要复制的字节,右键,二进制复制;然后来到地址B,右键,二进制粘贴,即可。 如果是自己写程序,无非是ReadProcessMemory和WriteProcessMemory两个API,外加OpenProcess或CreateProcess来获取进程对象的句柄。 推荐用CREATE_SUSPENDED标志来CreateProcess,然后执行内存的操作,最后ResumeThread即可。这样程序出错的概率小一点,前提是你知道自己在做什么。 |
|
[求助]多用户不能同时启动2个盘符同样的外挂
如果是隐藏进程后仍被检测,那么程序应该不是通过遍历系统进程来判断是否有自身的进程在运行。 如果程序没有反调试(对于外挂来说,不太可能哦),用调试器拦截程序ExitProcess()或TerminateProcess()等API,然后从堆栈返回地址中寻找它的判断逻辑的代码。如果程序反调试,那么一个前提就是你有能力by pass它的保护,否则是谈不上分析程序的。 其实程序单实例运行的逻辑无非是这样:启动时检测某个标志,如果不存在,则设置它存在,并且程序正常运行;如果已经存在则直接退出。 这个标志,可能是某个命名的内核对象,或注册表中某个值,或文件系统中的文件,等等。 我只知道比较常用的是使用互斥对象,但不知道在多个session中内核对象的名字空间怎么映射,不知道在多用户时互斥对象还能不能用。 不妨试试procmon,看看它写入了哪些注册表项,创建了哪些文件,没准也会有帮助的。 最后说一句题外话:玩游戏,不要被游戏玩,更不要被外挂玩。 |
|
|
|
[求助]问个新手问题,各位前辈帮帮忙
这个看着挺像的,你试试在 004032B1 . |74 08 je short scking.004032BB 这里下断点,然后在运行游戏与不运行游戏两种情况下看它条指令的执行结果分别如何。 [QUOTE=中原霸刀;611332]还有这一段好像是远程调用信息?? 具体是调用些什么呢?? 00585B98 /$ 53 push ebx 00585B99 |. 68 0C5C5800 push scking.00585C0C ; /ole32.dll 00585B9E |. E8 274F0300 call <jmp.&kernel32.GetModuleHandleA> ; \GetModuleHandleA 00585BA3 |. 8BD8 mov ebx,eax 00585BA5 |. 85DB test ebx,ebx 00585BA7 |. 74 60 je short scking.00585C09 00585BA9 |. 68 185C5800 push scking.00585C18 ; /cocreateinstanceex 00585BAE |. 53 push ebx ; |hModule 00585BAF |. E8 284F0300 call <jmp.&kernel32.GetProcAddress> ; \GetProcAddress 00585BB4 |. A3 78985C00 mov dword ptr ds:[5C9878],eax 00585BB9 |. 68 2C5C5800 push scking.00585C2C ; /coinitializeex 00585BBE |. 53 push ebx ; |hModule 00585BBF |. E8 184F0300 call <jmp.&kernel32.GetProcAddress> ; \GetProcAddress 00585BC4 |. A3 7C985C00 mov dword ptr ds:[5C987C],eax 00585BC9 |. 68 3C5C5800 push scking.00585C3C ; /coaddrefserverprocess 00585BCE |. 53 push ebx ; |hModule 00585BCF |. E8 084F0300 call <jmp.&kernel32.GetProcAddress> ; \GetProcAddress 00585BD4 |. A3 80985C00 mov dword ptr ds:[5C9880],eax 00585BD9 |. 68 545C5800 push scking.00585C54 ; /coreleaseserverprocess 00585BDE |. 53 push ebx ; |hModule 00585BDF |. E8 F84E0300 call <jmp.&kernel32.GetProcAddress> ; \GetProcAddress 00585BE4 |. A3 84985C00 mov dword ptr ds:[5C9884],eax 00585BE9 |. 68 6C5C5800 push scking.00585C6C ; /coresumeclassobjects 00585BEE |. 53 push ebx ; |hModule 00585BEF |. E8 E84E0300 call <jmp.&kernel32.GetProcAddress> ; \GetProcAddress 00585BF4 |. A3 88985C00 mov dword ptr ds:[5C9888],eax 00585BF9 |. 68 845C5800 push scking.00585C84 ; /cosuspendclassobjects 00585BFE |. 53 push ebx ; |hModule 00585BFF |. E8 D84E0300 call <jmp.&kernel32.GetProcAddress> ; \GetProcAddress 00585C04 |. A3 8C985C00 mov dword ptr ds:[5C988C],eax 00585C09 |> 5B pop ebx 00585C0A \. C3 retn[/QUOTE] 从这几行代码,我也不知道它要调用什么组件。它填充的那些函数指针(应该是一张虚表),对其下访问断点,看看程序在什么时候使用这个组件对象,没准会有所发现。 |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值