|
windowsXp cmd-Debug模式调试中断。
windows接管了磁盘管理,是不允许直接调用中断的。 只有通过DeviceIOControl或者Createfile这样的Win32API来操作。 |
|
[求助]杯具啊,天天泡看雪,两年了还是临时会员~
记不清太具体的时间了,只记得刚开始时游客也可以随意发言的,论坛的样子就像现在的AoGo汇编论坛那样。 |
|
无法用DEDE反编的程序如何解决?
用DarkNess0ut修改的加强版也不行? |
|
[求助]杯具啊,天天泡看雪,两年了还是临时会员~
99年前后注册,密码和邮箱都忘记了,现在向正式会员努力的飘过。 |
|
|
|
|
|
请问如何提取此软件的背景音乐?
修正一下: 在B22830处下内存断点后,第一次停在004036E2时,缓冲区数据还没变,还是第一组数据,所以第四步中复制数据的这个动作应该省略(或者省略第一次内存断点处的),不然前两次复制的数据是重复的。 |
|
请问如何提取此软件的背景音乐?
提取这个比较麻烦点,用OD跟着我做吧: 第一步,走到这里: 004025F9 50 push eax ===> eax = 12FC44 004025FA 6A FF push -1 004025FC 68 700D4300 push 00430D70 00402601 E8 78FF0000 call <jmp.&WINMM.waveOutOpen> 下命令 d eax,数据区如下: 0012FC44 01 00 02 00 44 AC 00 00 10 B1 02 00 04 00 10 00 ..D?.?... 这16个字节其实就是WAVEFORMATEX,也就是WAVE的一些参数,参考WAVE文件格式,加上文件头和数据头,再找到数据块就可以生成一个WAV文件了。 文件头和数据头基本是固定的,以下就是对应的文件头和数据头,需要填充的有两处,第一处(红字)为(WAV文件大小-8)字节,第二处(绿字)为(WAV文件大小-30h)字节。 0000h: 52 49 46 46 00 00 00 00 57 41 56 45 66 6D 74 20 RIFFhe..WAVEfmt 0010h: 14 00 00 00 01 00 02 00 44 AC 00 00 10 B1 02 00 ........D....... 0020h: 04 00 10 00 00 00 00 00 64 61 74 61 00 00 00 00 ........data@e.. 第二步: 先自己新建一个WAV文件,把以上数据填好,然后我们寻找数据块部分直接追加到后面,再修改两处数据就可以了。 第三步,走到这里: 00402CEF 6A 20 push 20 00402CF1 53 push ebx ------> ebx = 42B500 00402CF2 FF35 700D4300 push dword ptr [430D70] 00402CF8 E8 99F80000 call <jmp.&WINMM.waveOutPrepareHeader> 下命令: d ebx,数据区如下: 0042B500 30 28 B2 00 40 65 05 00 00 00 00 00 00 00 00 00 0(?@e......... 这里的B22830就是缓冲区首地址,缓冲区长度是56540字节 第四步,走到这里: 00402D45 6A 20 push 20 00402D47 68 00B54200 push 0042B500 00402D4C FF35 700D4300 push dword ptr [430D70] 00402D52 E8 45F80000 call <jmp.&WINMM.waveOutWrite> 下命令:d 0b22830,缓冲区有了第一组数据,长度为56540h字节。将这部分选中,用二进制复制的办法追加到刚才新建的WAV文件尾部。 第五步: 复制完第一组数据后,在B22830处下内存写入断点,(byte 或 word断点,不要下DWord),运行会停在这里: 004036E2 66:8907 mov word ptr [edi], ax 004036E5 83C7 02 add edi, 2 004036E8 49 dec ecx 004036E9 ^ 75 D4 jnz short 004036BF 004036EB 5E pop esi 004036EC 5F pop edi 004036ED C9 leave 004036EE C3 retn 停在4036E2处后别动,开始复制从B22830开始的56540h个字节的第二组数据,并追加到新建的WAV文件尾部。 复制完后按一下F9运行,还会停在这里,再按同样方法复制数据。 剩下的工作就比较无聊了,一直重复这个步骤,直到你恶心为止。 如果不想继续了,可以随时停止。 最后一步: 将WAV文件保存,看一下文件大小,然后填写文件头和数据头处的两个数据,保存,收工。 |
|
[求助]有高手去掉sleipnir1.66右上角的X吗
想保留最大最小化按钮的话,就没办法去掉关闭钮(至少没简单的办法)。 给你个思路:修改程序把关闭按钮的功能废掉就可以了,按下它什么都不发生,只是有点碍眼而已。 |
|
怎么给程序加入重定位表?
改程序基址,并不是改个参数那么简单,必须修改程序中的每个绝对地址引用,这也就是DLL为什么要带个重定位表的原因。 重定位表中记录了每个需要修改的地方,而这些个地方只有在被编译的时候才能知道(编译器知道)。 而你现在却想做编译器才能做的事。 只有原本就有重定位表的程序才能修改基址,修改的方法正是利用了重定位表中的定位信息,逐个地方去修改程序指令或数据。 |
|
|
|
怎么给程序加入重定位表?
我不知道你加重定位表做什么用,但是感觉你对这个的概念还不太清楚。 重定位信息是给系统加载器用的,用与不用,完全取决于进程空间的内存占用情况。一般来说exe总是会被加载到基址指定位置,所以即使有重定位表(例如delphi、BC++程序)也会被忽略。 所以加重定位表首先是没有必要,其次,从技术上来讲也很难实现。重定位表的作用是对绝对地址在需要的时候进行修正,如果原本就没有重定位表,要加这个表的话就需要对每行汇编代码进行手工分析,除非代码很少,否则工作量不可想像。 举个例子,假如exe原先的基址是400000,那么程序代码中会有巨量的绝对地址引用,比如: 401000: mov eax, 412000 <------ 如果这里的412000代表一个地址,就需要在这里添加重定位点,问题是你怎么知道412000代表什么呢?也可能它只是一个图书编号或者是一个其它立即数。 |
|
程序文件如何让更改 镜像基址 或加入重定位信息
重定位信息多数情况下对exe文件没什么用。 修改基地址是要修改程序中所有的引用绝对地址的地方。如果有重定位信息,可以根据重定位信息找到这些需要修改的地方进行修改。 但是反过来不行,就是说如果没有重定位信息,那么绝无可能修改程序基址。 |
|
[求助]害怕虚拟内存怎么办?求不怕的解答解答
我比较担心地球转着转着可能跑偏,被太阳吸过去,或者被甩到银河系的其它地方,我不知道我需要买什么护具才管用。 呵呵。虚拟内存嘛倒是不太关心,一般也很少需要用户态的程序操心,操作系统会帮你打理的。除非你有极致的要求。 |
|
[求助]金山卫士里的系统漏洞扫描
Condition就是“条件”啦。 操作系统版本:Vista,SP2 以下条件任一条符合: 1、注册表中HKLM\software\microsoft\removaltools\mrt这个键不存在。 2、文件“@system\mrt.exe”的版本号<4.1.5503.0 3、文件“@system\mrt.exe”不存在 就需要更新补丁。 |
|
|
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值