OD怎么汇编掉别人的DLL

OD怎么汇编掉别人的DLL,第1张

所有指令序列查找范围是当前CPU窗口所在的内存段。

Ctrl+G,然后输入401000,回车,然后你再找

你先得跳到你要找的代码所在的内存段,EXE是从401000开始的,如果是DLL的话,得按Alt+E,查看模块的基址,然后跳到基址之后再查找

插入一行代码很简单,先JMP跳转到一个空白的地方,然后写代码,再跳转回来即可。 不过要注意JMP跳转指令占用的代码也要填写上
删除代码,直接将那条指令全部用90H来填充,它是NOP指令,占一个字节,全部填写90H就可以了

dll 一般用 VC,Delphi C# 等开发工具编写

至于要求就是 dll 是给自已或别人调用的

如果你要考虑广泛的兼容 比如 你用VC 写的,可以给 VC,Delphi,PB,VB,C# 等语言调用

你的 dll 输出函数传参方式就得按固定方式,一般采用Win32API 类似的 cdel 传参方式

dll 有时不仅仅是一些函数库,有些 dll 是一个COM或DCOM组件,支持 regsvr32 xxxdll 来注册,这就要求 dll 中对应的 注册与反注册函数,也就是遵循某个框架。

还有 dll 不一定就是放些函数执行代码,dll中也可以放数据,如或资源(还是或文字)什么的。

参考一些支持多国语言的程序,换一个dll 就显示的不同国家文字,就是通过不同的资源 dll 来实现的。

最后,dll 不一定是 dll 这个怎么说呢,就是你的程序中用到的 一些数据文件或配置文件或记录文件你也可以命名为 xxxdll 这样多数据情况普通用户就不会乱改你的配置/记录文件了。因为相对于 ini 文件 dll 一般用户不是“随意”能用记事本打开来改的。当然不建议这么做。

使用C#生成dll文件并调用

一、创建dll文件:

例如生成一个md5编码判断状态的文件,即,输入一个字符串(stringA)和一个32位md5编码(stringB),判断此字符串A对应的32位md5编码是否与B相等,如果相等返回true,否则返回false。

打开VS2005,“文件”--》“新建”--“项目”,选择“Windows控件库”,命名后点击“确定”,在“cs”中输入以下代码:

usingSystem;

usingSystemCollectionsGeneric;

usingSystem;

usingSystemDrawing;

usingSystemData;

usingSystemWindowsForms;

usingSystemText;

usingSystemSecurity;

namespacemd5

{

publicpartialclassProgram:UserControl

{

#regionMD532位加密:GetMd5Str32

///

///32位MD5加密

///

///待加密字串

///加密后的字串

publicstaticstringGetMd5Str32(stringstrSource)

{

byte[]bytes=EncodingASCIIGetBytes(strSource);

byte[]hashValue=((SystemSecurity)SystemSecurity("MD5"))ComputeHash(bytes);

sb=new();

for(inti=0;i

{

sbAppend(hashValue[i]ToString("x2"));

}

returnsbToString()ToUpper();

}

#endregion

#region核对md5编码是否一致:()

///

///核对md5编码是否一致

///

///

///如果一致返回true,否则返回false

///

publicstaticbool(stringstr1,stringstr2)

{

stringmd5String=str1;//需要验证的字符串

stringmd5DbString=str2;//需要核对的32位md5编码

intresult=stringCompare(md5ProgramGetMd5Str32(str1),md5DbString,true);

if(result==0)

{

returntrue;

}

else

{

returnfalse;

}

}

#endregion

}

}

修改“Designercs”中的命名空间为“md5”,方法为“Program”,即可生成dll文件。

在inDebug文件假下,可以找到相应的dll文件。

二、部署dll流程:

首先把dll文件放到应用程序inDebug下;

然后在解决方案中添加引用:右键鼠标-->添加引用-->浏览-->选择dll放置路径后点击“确定”。

注意:要在应用文件头处使用usingmd5;命令。

测试应用程序代码,如下:Form1cs

usingSystem;

usingSystemCollectionsGeneric;

usingSystem;

usingSystemData;

usingSystemDrawing;

usingSystemText;

usingSystemWindowsForms;

usingmd5;

namespace

{

publicpartialclassForm1:Form

{

publicForm1()

{

InitializeComponent();

}

privatevoidbutton1_Click(objectsender,EventArgse)

{

stringstr1=textBox1TextToString();

stringmd5String=textBox2TextToString();

textBox3Text=md5ProgramGetMd5Str32(str1);

textBox4Text=md5ProgramCheckMd5String(str1,md5String)ToString();

}

privatevoidbutton2_Click(objectsender,EventArgse)

{

thisClose();

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13392762.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-27
下一篇 2023-07-27

发表评论

登录后才能评论

评论列表(0条)

保存