帮忙解释下这个代码,最好懂VB的

极语言中文编程 2012-08-30 10:50:16
void LLLL()
{
DWORD l;
//AllocConsole();
BYTE *p = (BYTE*)GetProcAddress(GetModuleHandle("yb_mem.dll"), "DiffieEncrypt");
VirtualProtect((void *)p, 0x200, PAGE_EXECUTE_READWRITE, &l);

*p = 0xe9;
*(DWORD *)(p + 1) = ((DWORD)dididi) - (DWORD)p - 5;


}
从这里看,是取得模块的函数基址是吧,然后再相应地方写入0xe9;这样的数值,因为我对C++完全不懂,看不出来P既然是获得的地址,怎么又能*p = 0xe9;按我理解这是个4字节的数字。
执行这里更看懂了。dididi全代码里还有一个,就是
int __stdcall dididi(void *src, int size, void *tgt, int size1)
{
memcpy(tgt, src, size);
return size;
}
但是执行这里没有传入参数。而且全部代码也找不到跟这些传入参数有关的。
大致意思应该是取得模块的函数基址,更新地址权限,然后在什么地方写入什么内容。
最重要的是告诉我在什么地方写了什么。另外VB怎么取函数基址,我取得的跟模块的基址完全一样。
(没分了我先問,回复我会加分的)
...全文
103 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
VC可以直接给指针赋值,也就是说直接让这个内存位置的内容改变?VB好像不可以啊。
缘中人 2012-08-30
  • 打赏
  • 举报
回复
*p = 0xe9;
p是指针,给他赋值是可以的。这个是给第一个字节赋值
p[0];
ccrun.com 2012-08-30
  • 打赏
  • 举报
回复
僵哥真牛,赞一个。
僵哥 2012-08-30
  • 打赏
  • 举报
回复
五六年没有碰VB了,忘得差不多了。楼主可以把代码贴到VB区。从上面的代码看,改写成VB是不存在问题的。
1. l和p定义为long类型
2. 如果没有加载这个DLL,需要通过LoadLibrary加载
3. GetProcAddress这个不用多解释直接按这个写就OK,甚至这一行代码几乎可以直接拷贝(语法修正即可)
4. p是一个BYTE类型的指针,可以通过CopyMemory写入一个字节(Byte)到p指针指向的内存当中去
5. 先通过AddressOf取得函数dididi的首地址,其他该计算的计算,然后再计算出p+l的值,交给CopyMemory

这份代码其实只是片段,如果单纯处理这个片段不会有任何用处。
郑州大学包装在线 网站源代码使用说明 ZZU PACKAGING 2000 Website 2002-10-30 系统说明: 这是我第一个 ASP.net 作品,写于上个学期四五月份(40天左 右,还要上课) 我是郑州大学包装工程系的学生,本系统本来是为我们专业同学 做的一个网上展示平台,包括了专业新闻,专业网上知识库,论坛, 留言簿,作品展示(由于专业是包装嘛),个人资料展示等等。当 然还有完整的后台管理模块。 当时写作时,几乎没有什么可以参考的源代码示例,只有微软提 供的那些示例还有 IBuySpyStore, IBuySpyPortal 的代码可以参考。 加上我的机器很破,运行 Visual Studio .net 很吃力,所以代码 几乎都是一行一行敲出来的(当然里面有部分是Ctrl-C,Ctrl-V的, Copy也是自己刚写出来的)程序几乎都是从零做起。虽然很多在现 在看来很幼稚,但毕竟是自己的东西,还是挺喜欢的。 因为院系内部的一些原因,这个网站无法放在互联网上以实现我 最初的设想。也正是因为如此,我希望将这个网站的全部源代码公 开,供所有 ASP.net 的爱好者参考,更希望对初学者有所帮助。 如果有什么疑问,可以来信咨询,我会尽力帮忙。 Email: percyboy@800e.net QQ: 7893338 版权说明: 你可以自由的复制,传播本源代码,但请保持代码的完整性,保持本 说明文件的完整性。未经许可,请不要私自用于商业用途。 请不要改动部分代码之后或者干脆不改动,就署上你的大名。 我不对由于本源代码发生一切后果负责。 如果你要在网站中收录本代码的副本下载,请以Email通知本人知道 安装环境要求: 1)操作系统:Windows 2000(SP2以上) + IIS 5.0 Windows XP + IIS 5.1 2)Internet Explorer 5.5 以上 3)Microsoft Data Access Component 2.6 以上 4)Microsoft .net framework 再分发包 或者 Microsoft .net framework SDK 或者安装过 Visual Studio .net 安装说明: 1)解压缩后,直接放到某个目录下,以下以 D:pack 为例说明。 2)打开 IIS 管理单元,新建虚拟目录,别名作 pack, 指向 D:pack,权限:读取,运行脚本就可以了就行了。    本虚拟目录要设置为 应用程序 级别的,方法是:    在IIS管理单元的pack虚拟目录右击,打开“属性”对话框,    在“虚拟目录”选项卡下方,“应用程序名”后面点“创建”按钮。 特殊目录: D:packpackaging_data D:packupload 需要可写入权限。 3)打开 D:packweb.config 文件进行如下设置: 在 appSettings 这一节中, 将所有物理地址改变为你的实际物理地址,即: D:pack D:packpackaging_datadb2.mdb D:packpackaging_datacounter.xml 在 system.web 节,authentication 子节, 为了避免重名,可以更改 cookie 名,具体位置在: 不会显示显示详细的出错跟踪信息。 其他的设置,你可以自行改动,如果你不,可以不管那些。 4)D:packin 文件夹中除了 packaging.dll 文件外的 那几个 vb 文件是组件的源代码,mk.dat 是编译用的批处理文件。 网站发布时,这些文件应该被删除。 5)如果你使用的是 NTFS 格式的磁盘,请注意进行权限设置: 以下给出最严格的权限设置: (当然你可以采用比这些更为宽松的权限设置) D:pack Administrators 允许:完全控制 aspnet_wp 允许:读取及运行,列出文件夹目录,读取 本目录不继承父目录可继承权限。 D:packpackaging_data Administrators 允许:完全控制 aspnet_wp 允许:读取及运行,列出文件夹目录,读取,写入 继承父目录权限 D:packupload Administrators 允许:完全控制 aspnet_wp 允许:读取及运行,列出文件夹目录,读取,写入 继承父目录权限 6)关于数据库防下载的问题,下面介绍两种方法: i)db2.mdb 中包含一个名为 nodown 的表,如果将 db2.mdb 改名为 db2.asp 就可以防止下载。当然因为是 ASP 版本的防下载,你的服务器必须解释ASP才行。 原理见: http://www.aspsky.net/article/index.asp?classid=2&Nclassid=5 ii)用得多的一种方法是将文件重命名为 db2.asax 这样也可以达到防止下载的目的,原理是: ASP.net 环境禁止访问 *.asax 文件。 上述两种方法,都要记着要把 web.config 中的相应地址改变。 好了,现在打开浏览器,输入: http://localhost/pack/ http://(你的机器名)/pack/ http://127.0.0.1/pack/ http://(你的真实IP)/pack/ 就应该可以看到这个站了! 如果还不能看到的话,你就要仔细检查一下 IIS 方面的相关设置, 比如 IP 限制,比如默认文档是否有 Default.aspx 还有,Microsoft Data Access Component 如果不是 2.6 以上版本的话, 将无法访问数据库。 还有一条,比较幼稚的问题,你装了 Microsoft .net 环境了没有? 使用说明: 1)目前有两个账户: 一个是系统管理员: 账户:percyboy 密码:percyboy 这个用户一定不要删除,否则很多管理功能无法进行,你看了源代码就知道了。 一个是普通学生身份(就是我自己了:)) 账户:破宝 密码:percyboy 我们专业内部的学生可以发表自己的作品,外部注册的用户没有此权限。 2)因为缩略图是使用当时生成的,所以时间长了, D:packupload mp 目录中就会有好多垃圾小图片,只怪当时的设计欠考虑,但也不想再改动了。 3)已知的一个bug,登陆之后,页面上方的“欢迎”内容没有变化,需要 刷新一下,或者打开另一个页面之后,才会出现用户的名字,还有“集体管理”的 链接。也不想改动了。 percyboy

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧