抱歉没有更早的说明:
因为一些不可言说的愚蠢和恐惧,blogspot 在中国又遇到了访问上的难题。
所以本博客被迫转移,现在迁到 longgi.yo2.cn
2007年5月13日 星期日
2007年3月18日 星期日
ollydbg 对 GlobalAlloc 系列堆内存分配函数的支持
ollyDBG 的用户帮助->内存映射(Memory map)中说:
.
.
.
.
.
.
.
可是,我做的实验似乎不是这样的…………
不明白,拿出来讨论一下吧。
嗯,还是讨论讨论比较好,请看我的实验程序。
[我的实验程序]
这是一个相当简单的 HeapAlloc/GlobalAlloc 函数的 Delphi 10 实现演示,和原先发布的“御姐控的伟大胜利”范例程序如出一辙,只是按+/-按钮改变的变量是用以上提到的两个函数现场生成的。当然,程序退出时会主动释放(调用HeapFree/GlobalFree)。
在MSDN上了解到,GlobalAlloc 函数是为了16位兼容性而存在的,效率比较差。建议使用 HeapAlloc 取代之。不过似乎又在哪里看见:这两个函数的入口点是一样的来着~~ 于是,俺先采用了 HeapAlloc 函数获得分配的内存的句柄或偏移量,再使用CopyMemory()写入数值。意外的,生成的变量用 FPE 和 Cheat engine 都搜索不出来,可是直接使用函数返回的偏移量可以在 ollyDBG 的内存映射里找到。这我就不明白了:ollyDBG 不是看不见 GlobalAlloc 出来的内存块吗?顺带又用 GlobalAlloc 做了一次,效果几乎一样。
于是,我更加不爽了:为什么我自己做的什么程序的变量都可以在OD的内存映射里看见,而我调试的几个游戏中的属性值,明明知道偏移量的值,却在内存映射里怎么也找不着。
ps:
实验程序下载 [7zip格式]
如果想查看由应用程序通过调用GlobalAlloc()和LocalAlloc()等申请的内存块列表,请使用堆列表[Heap list]。我们是不是可以这么理解:ollyDBG 的内存映射功能看不见使用 GlobalAlloc 系列API函数申请的堆内存。以上引用的这段文字见于翻译版的 ollyDBG 帮助,下面来看看英文原版是怎么说的:
To get list of memory chunks requested by application via calls to GlobalAlloc(), LocalAlloc() etc., use Heap list.完全在四级考试范围之内,翻译的相当正确,没有歧义和理解错误。看来 ollyDBG 确实看不见GlobalAlloc 系列API函数动态分配的内存了。
.
.
.
.
.
.
.
可是,我做的实验似乎不是这样的…………
不明白,拿出来讨论一下吧。
嗯,还是讨论讨论比较好,请看我的实验程序。
[我的实验程序]
这是一个相当简单的 HeapAlloc/GlobalAlloc 函数的 Delphi 10 实现演示,和原先发布的“御姐控的伟大胜利”范例程序如出一辙,只是按+/-按钮改变的变量是用以上提到的两个函数现场生成的。当然,程序退出时会主动释放(调用HeapFree/GlobalFree)。
在MSDN上了解到,GlobalAlloc 函数是为了16位兼容性而存在的,效率比较差。建议使用 HeapAlloc 取代之。不过似乎又在哪里看见:这两个函数的入口点是一样的来着~~ 于是,俺先采用了 HeapAlloc 函数获得分配的内存的句柄或偏移量,再使用CopyMemory()写入数值。意外的,生成的变量用 FPE 和 Cheat engine 都搜索不出来,可是直接使用函数返回的偏移量可以在 ollyDBG 的内存映射里找到。这我就不明白了:ollyDBG 不是看不见 GlobalAlloc 出来的内存块吗?顺带又用 GlobalAlloc 做了一次,效果几乎一样。
于是,我更加不爽了:为什么我自己做的什么程序的变量都可以在OD的内存映射里看见,而我调试的几个游戏中的属性值,明明知道偏移量的值,却在内存映射里怎么也找不着。
ps:
实验程序下载 [7zip格式]
2007年3月15日 星期四
一篇纯粹为了表明我还活着的水贴
自从开学以后就一直没有更新 blog,一是因为新学期总有点事情要忙;二是觉得最近实在没什么好分享的知识或心得。[最近在忙什么]
主要是挑战杯的立项,主题是关于运用 OpenGL 实时渲染带自阴影的大面积草皮,算是一种优化算法的课题。目前课题正处于申报阶段,如果审批通过可以从学校获得最高 5000 元的拨款(今年学校大方了,往年都是 2000 的)。7月份要交一个预案,到时候一定得拿出东西。
寒假时某[tc](技术水平>俺)向我演示的“魔兽修改器”给我留下了深刻的映像——突然发现自己的基础知识已经可以做 Crack Hack 之类的工作了。虽然某些 Crack&Hack 行为不需要太多的技术含量,但是 Hacker "通过一切"的技术豪情还是刺激着我。于是,我偶尔跟跟某[tc]的风,也开始摆弄起 ollydbg,w32Dasm 之类的工具,打印了包括PE文件格式和其他windows进程内存使用原理的短文和参考。
[成果]
OpenGL 方面是在没有什么拿的出手的东西,在此就略过不表。
游戏修改器相关技术方面已经成功的对自己编写的简单的靶程序进行了包括数据和汇编码的跨进程修改,效果参照配图自行想象。
[待解决的问题]
1)在游戏中搜索出的金钱之类的地址(不定),在 odbg 的内存映射->数据窗口使用转到时提示内存未分配。而用同样方法调试我自己编写的靶程序却可以找到。
2)正在学习加壳脱壳。
3)掌握 ollydbg 的常用调试方法。
ps:
附编写的测试程序 [下载7z格式]
2007年2月21日 星期三
[TV] 庞大的魔幻构架?超白痴男主角!——真月谭月姬
一向跟不上趟的某人我又在流行动画出来n年后才观看,这次看的是TV版的《真月谭月姬》。据说TV版与原作差异甚大,甚至有 Fans 称其为“伪月姬”。[庞大的魔幻构架?]
说这句话的人大概是指本作在 GalGame 同类中的水准吧。先不谈复杂到说明书厚厚一册的欧美 RPG,就是《十二国记》也比它复杂严谨不少。不过为了满足社交能力缺乏的家里蹲的扭曲嗜好而开发的 GalGame 也不太需要过分的设定,只要能推动情节发展,给主角莫名其妙的女人缘和逻辑混乱的生活经历提供支持就行了。比如这里的吸血鬼、直死的魔眼和教会、驱魔人家族等概念之间是什么联系,是否符合热力学定律,就算不符合那到底符合什么追加定义使之不与物理常识发生严重冲突,这些都没有说明白。
[直死的魔眼]
经常看到药品、化妆品包装上写着“如不慎入眼要用xxx毫升的清水冲洗”。本作的主角在血滴进眼睛后就没有及时处理,以致获得了直死的魔眼。那么直死的魔眼应该是一种可获得的非遗传性疾病,如果对主角的血液进行分析就可以获得魔眼的秘密,继而量产直死魔眼眼药水也不是没有可能。加上对主角的刀进行化学加核磁共振的精确检查,取得其原理后制成弹头或匕首,配合眼药水一道使用,直死魔眼特种部队就闪亮出炉了。^_^
[各种女性角色]
实话说,俺萌琥珀(图左边的),但这并不影响我继续更加深入的鄙视这部作品。GalGame 即 GirlGame,各式各样的女性人物是这种游戏的核心要素。看看《月姬》里都有些什么品种:可爱同级生,治愈系准御姐学长/纹身御姐/修女,脱线吸血鬼洋妞,豪门闺秀/plus萝莉版,西洋女仆,民族特色女仆。还真是不少,亏他能把三种类型集成到一个人身上m(_ _)m。来看女主角,按说她是从月亮上下来的种族的公主(我很不争气的想到了Turn A),寿命和知识都远远超过一般人类(为什么他们没有掌握世界支配权?)。就这样的优良种族的公主,怎么会看上人人鄙视的男主角?最后H的时候会不会出现接口问题?吸血鬼明显是体液传播的可获得性疾病,为什么男主角没有感染?(难道他使用了O形的小玩意儿?)
为了支持这些类型怪异的女性人物,故事的框架离奇至极,比三流的吸血鬼电影还令人抓狂。其原作游戏除了能卖给家里蹲的 otaku ,还真不知道能卖给谁。
[超白痴男主角!]
其实这种东西我是想尽量无视的,但动画偏偏是以这个东西的角度叙述的。这东西符合废柴的所有定义:体弱、迟钝、不器、娘娘腔、胸无大志、思维狭隘……甚至在最后使用卑劣的背后偷袭获得胜利,实在是懒得骂他。
[总结]
热爱生命,尊重智慧,远离 GalGame 改编作品!
本文纯属个人观点,如有不满咽回肚里。
订阅:
帖子 (Atom)










