|
[求助][求助]Billy Belceb 病毒教程(win32)编译出错
你是不是从网页中copy的代码? |
|
[求助]W32dasm的使用问题!
没有遇到过这种情况。 可能是权限问题,可能是安全软件如杀毒软件的问题,也可能是你打开的文件自己保护,比如它正在运行等。 从你给的信息来看根本看不出原因来。如果真要细究原因,那就用OD跟踪一下,看一下CreateFile函数返回的句柄是不是-1,如果是的话,再patch一个GetLastError就知道错误的真正原因了。 PS:W32DASM这个东西,两年前非常盛行,现在基本没什么用了,而且已经许久没有更新过了,而它最大的特色功能——“字符串参考”,在今天的软件分析中要么派不上用场,要么其它工具也具有了,比如OD的字符串插件。 |
|
[求助]4句汇编代码的2个迷惑
1.要么你的反汇编器不完善,要么你的配置有问题。这条指令完整的助词符是test byte ptr [ebp+0x0c], 0x08 2.这条指令是从内存中取一个字节,高位进行0扩展然后放于EAX寄存器中。而EDI是内存地址,或者说是指针,指令执行完后EAX的值与EDI的值没有直接关系,而是与EDI指向的内存中的那一个字节的值相等(高位零扩展意思就是作为无符号数来看其值相等) |
|
[求助]有关鼠标钩子的一个问题
WM_LBUTTONUP消息的参数中是不带有ALT键的信息的,所以你要挂的程序肯定是自己实现了判断ALT键是功能。 逆向一下,试试GetKeyBoardState()函数能不能断下来。 如果能找到主窗口的窗口函数,那就再方便不过了。 |
|
|
|
[求助]脱壳之后遇到的问题
VM了,我搞不了。 |
|
[求助]内存补丁
万变不离其宗,即使程序的代码地址是动态变化的,总有其不变的东西,否则也不成为程序了。 多分析分析,找到它不变的东西,用一些启发式的技巧,总能找到要找的东西。 没有绝对的东西,只是难度大小的问题。 |
|
[求助]汇编编译器 的一些问题
我已经说过了,定义代码段的时候要指定段的属性,汇编器才能生成正确的指令码。如果不指令,它会用默认的属性。 link5.12是32位连接器,你用它来连接16位的代码,当然会出错。 准确地说,你用MASM6汇编,它是按照32位代码段的属性来生成指令的,所以实际上生成的代码与代想生成的代码是不一样的。 在MASM5没有问题是因为它不支持32位,因而生成的代码就是16位的。 在支持32位的MASM6上,你不指定的话,它默认是按照32位来生成的! 你可以试试codeseg segment use16在MASM6上进行汇编。 这些看汇编器的手册就会明白。对于保护模式的初始化,INTEL的手册中有详细的示例代码和讲解。在System Programming Guide一卷中的第9章“Processor management and initialiation”,详细地演示了如何从实模式进入一个flat内存模式的保护模式的代码。 而且示例用的代码就是使用了MASM的语法。 是你不善于挖掘资料罢了。 |
|
[求助]汇编编译器 的一些问题
首先,你要把32位代码和16位代码定义在不同的段(segment)中,并且声明段的属性,类似这样: ;默认是16位的段 real_seg segment ;一些16位的代码 ;初始化保护模式,并转向保护模式 real_seg ends prot_seg segment use32 ;一些32位代码 prot_seg ends 并且,你使用的连接器必须支持32位程序。 如果进入保护模拟只是为了获得访问32位地址的能力,可以参考一个梁肇新先生在《编程高手箴言》一书中提到的“在DOS下访问4GB内存实用程序”。 只需要给某一个段寄存器(比如FS)赋值为“段基址为0,段限为4G-1”的选择子,之后只要不对它重新赋值,它的值便一直有效。 不过需要一些opcode hack了。 这篇文章可以在谷歌上搜索到,原作者已经不知道了,我是看梁先生的书时知道的这个方法,而且梁先生给出了很详细的讲解。 |
|
|
|
[求助]汇编编译器 的一些问题
连接当然不上了。 16位程序和32位程序的重定位记录(指连接器重定位,不是加载器重定位,即错误报告中的fixup)格式是不一样的。 你的16位代码和32位代码是写在分开的两个段中了吗? |
|
|
|
[讨论]UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay]
按UPX简单脱掉就行了,Visual C++ 2005 Release PEiD也是会出错的。 |
|
[求助]以下代码是IDA反汇编DLL的一个输出函数,请教如何分析输入参数和返回值啊?我是新兵,恳请高手们指导。
通常逆向一个函数的功能需要动静结合。不过这个例子比较简单,直接看静态代码也能猜测个差不离了。 1.参数: 从堆栈和寄存器入手。该函数IDA分析出的栈帧上的偏移量都为负数,那么意味着应该是没有堆栈参数(实际上应该看代码有没有访问栈上“参数”的位置,在本例中没有)。 再看寄存器。可以看到EAX、ECX、EDX中原来的值都没有使用,直接被覆盖,那么该函数也没有寄存器参数。 所以,该函数的参数表极有可能是void 返回值: 根据调用约定,整形或指针型从EAX(及EDX)寄存器返回,浮点结果直接从浮点寄存器返回。 看这个函数结尾处的几条指令,没有对EAX的有意识地赋值,但看到了这样几条指令: .text:10001590 movsx eax, [ebp+Buffer] 而根据IDA的分析,var_18 = qword ptr -18h,所以该函数的返回值推测应该是double 为了更加确定,你可以动态跟踪一下函数的调用过程。 |
|
[求助]DOS及debug窗口怎么调整才能正常显示
是DEBUG工具的问题。 试试用TurboDebugger。个人认为DOS下最好的调试器之一(主要是它是宝蓝公司的,而OD的热键基本上就是按着宝蓝的习惯还设计的,所以用起来很像OD的感觉哟) |
|
[求助]谁能做出这个机器码的注册机啊!??
注册码是1024位吗?看着像是RSA啊! |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值