先把东西帖上来吧
这里有个山寨"编译器",一开始是照着编译原理书和随书源码模仿着写的,写着写着发现按照它那么专业的方法写下去不知道要写到何年马月,然后尽量能山寨就山寨了,还有编译原理书有的地方理解的也不好有的东西也模仿不好,总之就是山寨不是我所愿意的,只是不山寨我完成不了.
看了开头的人都应该了解,我不是计算机从业人员,写代码从来不讲究什么规范,烂是必然的.
这东西怎么用呢?
它不能生成exe文件,但是它能生成机器码,生成机器码的同时它会把机器码复制到进程中的某一块地方.比如写了这么几行代码:
int iTest;
void OnMessage()
{
iTest=18;
}
生成的机器码的汇编形式应该是这样:
push ebp
mov ebp,esp
push esi
push edi
mov [00x40xxxx],0x12
pop edi
pop esi
mov esp.ebp
pop ebp
retn 0
这些函数的地址都是保存起来的,可以随时查找并调用.目标进程中的资源也是可以被"编译器"利用的,比如MessageBox函数,你可以把它注册为编译器的工具函数,注册之后就可以调用了.如果已经把wsprintf函数注册成工具函数的话:
int iTest;
void OnMessage()
{
iTest=18;
char szTest[24];
wsprintf(szTest,"%d",iTest);
MessageBox(0,"",0,0);
}
然后就可以在进程中的任何地方查找OnMessage函数的地址,然后调用.这个到底有什么用呢?
1.软件的用户接口.
你写了一个抓网络封包的工具,数据包加密部分是不确定的,你可以在截获数据包的时候,看看用户有没有自己写解密函数,如果有,调用之后再显示解密结果.如果用户没写解密函数,那就显示未解密的数据.
2.注入到目标进程.
这个"编译器"是个dll形式的,把这个dll注入到目标进程,然后想办法做其他动作,做什么动作我不知道,不过应该有点作用的.
感觉类似这样的东西应该有点小用,可惜我写不好,如果有人有实力做个专业点的话不妨做一个.
工程目录下有个Use文件夹,里面是使用方法代码.
