能力值:
( LV2,RANK:10 )
176 楼
永远支持.. 喜欢你的文章
能力值:
( LV2,RANK:10 )
177 楼
图文并貌,太谢谢了~~先收藏
能力值:
( LV5,RANK:60 )
178 楼
能否做个CHM?
能力值:
( LV4,RANK:50 )
179 楼
写代码,首先我们要在程序中建一个标准9号宋体的 LOGFONT,以便于我们调用。对于 LOGFONT,我们再来看一下定义:
typedef struct tagLOGFONT { // lf
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT;
这样我们的标准9号宋体的 LOGFONT 值应该是32字节,16进制就像这样:F4FFFFFF000000000000000000000000900100000000008600000000CBCECCE5。
sizeof(tagLOGFONT)等于60,为什么标准9号宋体的 LOGFONT 值应该是不是60字节而是32字节呢?
还有后面的这个F4FFFFFF000000000000000000000000900100000000008600000000CBCECCE5是怎么推算出来的?
能力值:
(RANK:990 )
180 楼
看上面的结构。汇编里面的其他类型都是DWORD,每个LONG和那个TCHAR是四个字节,各个BYTE是一个字节,你加一下就知道是32个字节了。而
F4FFFFFF000000000000000000000000900100000000008600000000CBCECCE5
这个你对应上面的LOGFONT结构及各个参数对应的字节数对照一下就明白了,如F4FFFFFF就是对应 LONG lfHeight,其余类推。最后的那个CBCECCE5是“宋体”的ASCII码。
能力值:
( LV2,RANK:10 )
181 楼
我怎么改成英文了啊?
能力值:
( LV2,RANK:10 )
182 楼
看到了,要修改相应的语言文件
能力值:
( LV2,RANK:10 )
183 楼
最初由 alphabet 发布 请教: 我在写补丁代码的时候 0040A444 68 15A44000 PUSH myuninst.0040A415 ; 传递字体句柄LOGFONT 双击开始汇编的时候不能改 上面显示说"需要标签" ........
这样写就行了
PUSH 0040A415
能力值:
( LV2,RANK:10 )
184 楼
“如果你对 PE 结构比较熟悉的话,也可以直接用 16进制编辑工具来添加你需要的函数,这样改出来的东西好看。如果想偷懒,就像我一样用工具吧,”
正在学习打补丁,就碰到过要导入函数,但又不想增加一个节(主要是不想改变原文件大小),建议楼主有空就此给我等新手来个专题,谢谢先了
能力值:
( LV2,RANK:10 )
185 楼
首先,要感谢ccdebug得精彩文章,受教了
然后就是,我按照步骤修改了,结果弹出来得窗口标签得地方统统变成英文了,这是什么原因?
XP SP2系统!
能力值:
( LV2,RANK:10 )
186 楼
最初由 bistoury 发布 今天啃了一天,终于理解并完成了,不过我是把窗口句柄保存在.data区段,这样就不用把.rdata改成可写属性了(我觉得这样相对安全些,:)),因为.data区段默认就是可读些的!
我想LZ的目的不在于要特定用哪个区段,而是增加一个更改区段属性的例子教学。
能力值:
( LV2,RANK:10 )
187 楼
最初由 龙行云 发布 首先,要感谢ccdebug得精彩文章,受教了 然后就是,我按照步骤修改了,结果弹出来得窗口标签得地方统统变成英文了,这是什么原因? XP SP2系统!
原因找到了,如果你把改过的程序命名跟myuninst_lng.ini文件不一致,就会出现默认的英文弹出窗口。
能力值:
( LV2,RANK:10 )
188 楼
新手需要,这样的帖子一定要顶。
能力值:
( LV4,RANK:50 )
189 楼
现在我们用 WinHEX 打开我们要修改的程序,转到偏移 9815 处,从 9815 处选择 32 字节(16进制是0X20)的一个选块,把光标定位到 9815 处,右键选择菜单 剪贴板数据->写入(从当前位置覆写),随后的格式选择 ASCII Hex,把我们 LOGFONT 的 16 进制值
F4FFFFFF000000000000000000000000900100000000008600000000CBCECCE5
我们已经在9815改了数据,为什么Peid搜索全0显示还是跟修改前一样?换句话说。如果一个pe文件已经被人改过了,那么后来再改的人怎么知道哪些地方已经被前人用了?
能力值:
( LV6,RANK:90 )
190 楼
看完之后很有收获。
还是觉得把变量放在代码段不是很好的做法。
关于LOGFONT的结构虽然给出了,但是赋的值却是特例。最好说明一lfHeight<0的情况。还有lfFaceName是要\0结尾的。说它32字节总觉得不妥。虽说照着本文做不会出现什么问题,因为留空格了。但万一我想节约一下空间呢。
照着这篇文章,顺利地把FileMon的MS Sans Serif字体给改掉了。原来的字太小。。
能力值:
( LV2,RANK:10 )
191 楼
好文章,支持!
能力值:
( LV2,RANK:10 )
192 楼
我这样的新手就是需要这样的科普教程。
能力值:
( LV4,RANK:50 )
193 楼
一点小细节:将myuninst1.exe保存文件为myuninst1.exe后,myuninst_lng.ini好像也要对应改为myuninst1_lng.ini,否则不能显示为文中所示的汉化界面。
回复了之后才知道前面已经有了类似帖子了,不好意思!不过,虽说犯了错误,但顶的是这样的一个好帖老大可不要太怨我哟。。
能力值:
( LV2,RANK:10 )
194 楼
花了一天多时间照抄了一回,有好多东东不明白~~~~~~~~
能力值:
( LV3,RANK:20 )
195 楼
支持。高手风范。
能力值:
( LV2,RANK:10 )
196 楼
Sehr Gut
能力值:
( LV2,RANK:10 )
197 楼
CCDebuger出品,必是精品。
CCDebuger,我的偶像啊
能力值:
( LV2,RANK:10 )
198 楼
来学习学习啊
能力值:
( LV2,RANK:10 )
199 楼
支持~~~学习学习~~~
能力值:
( LV2,RANK:10 )
200 楼
有点难度~~~看不懂………………