|
[求助]破解遇到的N点问题无法解决
就我所知道的说说,说得不正确的地方请随时指正。 1.找到OEP、定位IAT,修复附加数据,对压缩壳和简单的保护壳是没问题了。但是现在的壳,是会对程序进行修改的,比如代码搬移、变形、加花,以及VM等。并不是说壳的代码运行完毕,走到所谓的OEP,然后DUMP出来BIN就是原来的程序。有些壳对代码进行了惨无人道的修改,要还原原来的代码的难度相当大。 2.在线验证,如果能找到相关的代码,通常是爆破,爆破文件或内存补丁爆破都一样,没太多区别;如果分析出了验证算法,也可以通过“私服”来伪造验证数据。 3.对于加密和变形的程序,OD处理存在问题。如果对PE文件熟悉,可以手动修改文件使其合法化;另一种思路是对OD进行修补(或者耐心等待OD2的正式发布)。 4.对于未知壳,跟已知壳的处理办法没有本质的区别。当然,如果你用脚本或“照搬”别人的步骤来脱已知的壳而自己不会分析壳,那对于未知壳就不好办了。 |
|
[求助]TASM病毒 中的难点。
我今天大概看了一下,像jumps、page、locals等这些directive都是MASM的,其它的assembler如果也支持的话,应该是会与MASM兼容的。 JUMPS指示汇编器查看条件分支的目的地址,如果超过了8位偏移量的范围,则生成一条相反条件的条件跳转,跳向另一个分支,同时跟一条绝对JMP指令到原来的目标地址。例如,假设有一条指令:jne next,汇编器查看next标号的偏移量,如果超过了-128~+127的范围,那它则生成两条指令:je $+2+5 / jmp next。(第一条指令跳到紧跟着jmp next指令的下一条指令。因为80386中分支指令只有一种short的形式,使用8位偏移量,而jmp指令有near形式,可以使用32位偏移量。实际上INTEL后来的处理器中扩展指令集时也加入了near形式的分支指令,现在的汇编器已经用不着这样的指示命令了。) LOCALS指示汇编器局部标号的前缀。通常缺少情况就是@@,那么编译器遇到以@@开头的标号,会识别出它是一个局部标号。 |
|
[求助]TASM病毒 中的难点。
手册上好像有详细描述,自己先看看吧。 |
|
[已解决]如何用winhex进行内存查找
缓冲区是UNICODE的。 |
|
|
|
[求助]请问:能不能通过编辑pe文件,而改变pe文件运行后的界面啊?
当然可以了,外挂、loader就可以。 |
|
|
|
|
|
[求助]求助PE格式创建?
在论坛中搜索"addsection",或“加区段”之类的关键字,会出来很多。 |
|
[求助]请问:能通过进程号找到进程吗?
找到进程执行代码? 如果你只是想要找到进程对应的磁盘文件,可以直接打开任务管理器或系统信息查看器来看。编程的话我只知道GetModuleFileNameEx这个函数,不知道其它更好的方式了。 如果是要对进程的执行进行控制的话,那就是ReadProcessMemory、GetThreadContext,以及一些DEBUG API的范畴了。 |
|
[求助]TASM病毒 中的难点。
把你遇到的问题详细说一下,locals jumps的上下文都怎么说的? |
|
[求助]VC和Win32的死结?
罗云彬的那本书确实不错,既然你已经看得差不多了,应该对WIN32编程的一些惯例都比较熟悉了。Windows核心编程如果有时间的话,可以看一下,我相信对你来说不会觉得难的。 Windows编程,我看过一本王艳平写的《Windows程序设计》,感觉还不错,基本上把Win32编程讲得很透彻,并且把应用程序框架、MFC进行了深入的分析。 关于PE格式的说明,直接在论坛找翻译过的文档就好,权威而准确。要谈到具体的应用,论坛是最好的资源库,也可以看一下《加密与解密》第三版。 |
|
[求助]在OD中如何获取被加载的DLL基址?
ALT + E |
|
[求助]VC和Win32的死结?
简单说,学VC与学C++与学WIN32都不完全等人价。 一般说VC时主要偏重于指MS的编译器、IDE,以及MFC/ATL的使用,以及微软VC中对C++增加的.NET支持。 而说学WIN32编程时,主要说的是WIN32平台的API的使用,虽然常用C/C++来描述API的接口,但使用任何语言,都可以进行WIN32编程。 而C++本身只是一种语言,可以写Windows的程序,也可以写非Windows的程序;可以使用STL,或者MFC,或者BOOST,或者什么库都不用;可以写出底层的偏重效率的程序,也可以适应大型的行业软件的开发。 对于就业,C#与JAVA与C++等,都是不错的选择,各有千秋,各有用武之地,不能简单地说谁比谁强,凭个人爱好与习惯选择就行了。 |
|
[求助]内存不能为Read
装个原版的系统来学习吧。可能是系统问题。 |
|
[讨论]OD 的中模拟跟踪在PC机运行和虚拟机中运行有区别吗?
在区段上下断点,有不同方式,可以F2下断点,可以右键->内存访问断点(或内存写入断点)。 二次内存断点法脱壳,一般是先在.idata下内存写入断点,再在.text按F2下断点。当然,简单的壳。 在.rsrc的原理也是一样的,你可能下断点的方式搞错了。 |
|
|
|
[求助]怎么判断CALL距离远不远
近CALL还是远CALL,看HEX DUMP那一栏的机器码,第一个字节是CALL的OPCODE,后面的就是偏移量,如果是00000000或00000003这样一些很小的偏移,一般就是陷阱,并不真正的函数调用,需要F7而不能F8;如果偏移值比较大,比如fffffed7或0000023e之类的,通常可以F8过。 至于条件跳转,其实很简单,因为它有两条执行路径,用断点封锁其中一条路径,再跟随另一条路径,那么就不会跑飞了。 等熟悉了后,对程序的流程就会比较清楚,可以不用这么复杂,比如对于壳的很多循环,可以直接在循环出口处F4。 |
|
[求助]关于断点的一些问题.....
个人感觉,API的的用法熟悉的话,很容易猜到程序调用的API的,下断点也并不难。 而要熟悉API 用法,主要是编程实践。 “命令助记符”,没见过这个名词,是不是就是“汇编指令助记符”呀? |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值