|
求助:代码错的问题是什么
我什么时候也能领赏啊??? 有的人的问题也蛮简单的,反正我动不动刷新,争取第一时间回贴。 不过,80%的话题一点都不懂,哎 高手都不抢kx,只解决问题,不象我还没脱离QQ斗地主“小地主”称号这样的诱惑,越没什么墨水越想显摆,恩,我是乡下人。 |
|
求助:代码错的问题是什么
额,简单说下,我的看法: 以你最开始出错的程序为例, (1)如果源程序后面没有 mov ax,4c00h 那只需要12h(>=8x2+2)就行了。(后面的那个2就是指push [bx] pop cs:[bx]所需要的一个堆栈空间) (2)如果源程序后面有 mov ax,4c00h 那么只需要16h(>=8X2+2+3x2-2).(3X2见我7楼的解释,就是调用此类中断时要用到的3个堆栈。为什么最后减去个2是因为,前面那个2所需要的堆栈空间被(中断)重复利用了当然要减去了) (3)如果你要调试你的源代码并保证正确时,那你需要16h+2h(中断后观察)或者12h+2h(中断前观察)的堆栈空间。如小聪大大解释的16位单步调试“海森堡效应”这个原因,单步调试应该保证随时堆栈多出1个空间 以 保证单步调试不修改源程序。(如果不多出1个空间,未必错误但是会很可能出错。例:本程序就悲剧了,因为用到push [bx] pop cs:[bx](当bx=14时)) 如何分析并验证此类错误,请仔细看小聪大大在LS给大家的演示。 以上是学习了20楼后的一些小结:本人没有16位汇编编码经验,如有错误,请大家指正。 PS:Kx别给我,都给20楼,我2次理解错误,惭愧中。 |
|
|
|
请求汇编解释!
OD的自动注释插件,很好搜。 |
|
修改内存跳转问题(更新提问)
饿,2楼的意思是你起码应该这样写代码: *((DWORD *)(0x0045301A)) = (DWORD)(test) ; ------> *(DWORD *)(0x0045301A) = (DWORD)(test) ; 然后请看我回答别人类似问题的一个帖子 http://bbs.pediy.com/showthread.php?t=101475 另,向小聪致敬 小聪大大,还在不。 帮忙看个帖子 http://bbs.pediy.com/showthread.php?t=102633 想不出来原因。 |
|
|
|
|
|
求助:代码错的问题是什么
here is NULL |
|
|
|
求助:代码错的问题是什么
多亏楼主提醒。我在3楼的回答明显错了。后面2x2那个2只占用内存空间,不占用堆栈空间的,不需要加上去。 18h(=24h) >= 2+8x2+3x2 红色2不知道哪里来的,求指教。 后面3x2是因为 int N这样的有中断类型码的中断。执行的时候都要有如下操作: (1)取得中断类型码N (2)pushf (3)TF=0 , IF=0 (4)push CS (5)push IP (6)IP=(N*4),CS=(N*4+2) 其中2、4、5步骤执行完毕需要3个堆栈空间 |
|
|
|
求助:代码错的问题是什么
看7楼吧,刚才明显说错了。 |
|
CreateFileMapping总是返回0
悲剧的楼主。悲剧的三楼。看来反复看没用,还是反复调试吧。 |
|
|
|
新手求助,还望高手帮助,帮我看看这段代码能否得出算法来?
说实话:楼主看3天再问别人吧。 你耐心看3天就不可能发这么长的代码给别人看了。 这是反编译的代码,发的太多,别人没那么多的时间看。 没有你的任何解释,不给大家任何提示,别人重头开始搞,我认为不值得为这个浪费起码3小时的心血。 大家可以帮助你但是不能代替你看代码、思考代码、给出答案。你的要求不客气的说,过分了。 |
|
请求汇编解释!
楼主给的信息太少,每句都懂,连起来看一点都不懂。 这段代码截取的非常不专业: 没有告诉任何寄存器初值, 没有告诉任何内存地址初值, 不知道代码逻辑上实现什么功能, 调用的函数根本不知道是什么东西( CALL 00567D50 CALL 007211F0) 楼主需要补习下语言表达能力 |
|
高手们帮忙看下*.exe不是有效win32程序的问题
2楼,你把所有区块的的VirtualSize改为1000h(<=SizeOfRawData),这个没什么意义。 以最后一个区块为例,VirtualSize能取5D9h到1000h之间的任意一个值。这中间有什么区别吗,没仔细想过,求高手指教。 |
|
高手们帮忙看下*.exe不是有效win32程序的问题
F了楼主,你自己用WinHex看下该EXE文件。最后一个区块居然没有对齐。 不同意3楼的说法。相反,应该是节表里的SizeOfRawData(该块在磁盘上所占的大小)显示最后一个区块在磁盘上有600h的空间。但是实际上只有5D9h的空间。(后面的00没有填充) 楼主请在(1600h+5D9h处)开始填充(600h-5D9h)字节的00。即让最后一个区块磁盘大小为600h. 最后一个区块的代码肯定不是楼主写的,不过应该不是病毒(如果让我写,那些明文的API函数名绝对会被加密)。 |
|
ReadProcessMemory读取失败
引用: LZ,不知道你什么意思。难道我错了,请买本C++程序设计看下 数组定义 那一章。 我的意思就是你直接 i=5; 没必要 i= sizeof(addr[5]); |
|
ReadProcessMemory读取失败
13楼很详细,学习了 |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值