|
提取新东方背单词II的词库(3) lea eax,[esp+1Ch] //写入地址 push eax push esi call dword ptr [__imp__WriteFile@20 (405008h)] //004e32b8 push esi call dword ptr [__imp__FlushFileBuffers@4 (405004h)] //004e32bc push esi call dword ptr [__imp__CloseHandle@4 (405000h)] //004e32ac add esp,0A8 (以上代码略有修改)这段代码最开始sub esp,0A8h ,用0A8h的空间来保存 OFSTRUCT ofs; char name[8]; 之类的变量,最后add esp,0A8还原 显然,为了避免麻烦,还要在前面 push esi push edx push ecx push eax 在后面 pop eax pop ecx pop edx pop esi 然后就是找个地方把我们的代码放起来了~,翻啊翻,翻到最后4e20e9的地方,找了一大片空地,好了,就是这儿了 在Recite.406e3b地方,把原来的mov ecx,dword ptr [esp + 450]改为 jmp 4e20e9 nop nop 两个nop是为了填空 然后在4e20e9的地方写原来的那个mov,接着写自己的代码,就是上面的汇编代码 其中的函数调用OpenFile,SetFilePointer等要替换成相应的地址 如何找到地址?无非就是在'函数'->import出来了地方double click几下,然后copy一下了咯 比如 SetFilePointer就是 call [004e32c0] 而且其中FileWrite的buf地址要改一下, lea eax, dword ptr [esp+0000010C] 最后要jmp回原地,继续执行 好了搞定了,每次在书籍管理中切换词库之前,先del c:\c,然后建一个空的文件名叫c,切换完后c就被写完了,除了所有的正常内容外,后面会多一点内容,删掉就可以了(因为我们每次都是写的400,没有检查返回) c就是相应的词库,然后可以干吗呢?好像新东方背单词II词库也不比网上流传的词库好多少......
|