首页
社区
课程
招聘
谁能解释一下什么是Windows API的硬编码么?
发表于: 2014-8-18 08:32 4347

谁能解释一下什么是Windows API的硬编码么?

2014-8-18 08:32
4347
谁能解释一下什么是Windows API的硬编码么?  我刚开始学习逆向,第一次听说“硬编码”这个词,还望各位多多指教。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 3330
活跃值: (1662)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
2
就是换个台机子,就不再能用的“编码”
2014-8-18 08:48
0
雪    币: 185
活跃值: (411)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
写死的代码
2014-8-18 09:03
0
雪    币: 8952
活跃值: (2889)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
4
硬编码就是什么都在你的程序代码里面写死了,你想稍微修改一下效果,都得修改你的代码。

做的比较灵活的就是,你想稍微修改得到一点其他的效果,不用修改你的代码,使用比较常用的配置文件来实现!
2014-8-18 09:10
0
雪    币: 8599
活跃值: (5065)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
举个简单的例子:
在某种特定条件下(软硬环境)
EBX=0X00400000
JMP EBX
就是要跳转到0X00400000处,我们代码里可以写成JMP 0X00400000(这就是硬编码)
但环境发生改变EBX里的值可能会变化,那么 JMP 0X00400000就会出错。
2014-8-18 09:49
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
新人来学习的,我的理解是不能修改的代码。
2014-8-18 10:35
0
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
硬编码就是直接使用API函数的内存地址进行调用。。。
例如一般的调用过程应该是:
hDLL = LoadLibaray("USER32.DLL");
pfnAddr = GetProcAddress(hDLL, "MessageBoxA");
pfnAddr(NULL, "动态调用MsgBox函数", "测试", MB_OK);

但是有时候使用LoadLibaray和GetProcAddress的时候会被杀毒软件的主动防御监控到,那么咋办呢?
我就在我的电脑上执行上面的那三行代码,然后发现pfnAddr的值0x12345678。
我记住0x12345678这个值,然后以后我的程序都改成:
pfnAddr = 0x12345678;
pfnAddr(NULL, "动态调用MsgBox函数", "测试", MB_OK);

在后面这个方法里,对于函数地址的调用就叫做硬编码。
但是这个编码只在相同的系统上有用。
例如我实在XP SP2上得到的0x12345678,那么我的程序就只在XP SP2上有效。
如果换成SP3,或者换成win2000,win7,就不好用了。
2014-8-18 11:04
0
雪    币: 5
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习了!
2014-8-18 11:52
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
开始不懂  现在看了评论就懂了   哈哈
2014-8-18 12:17
0
游客
登录 | 注册 方可回帖
返回
//