壳的编写(2)-- 编写壳(Stub)部分(1)

本文档介绍了如何编写DLL壳的Stub部分,包括添加编译选项以合并节区,进一步配置项目使得Stub.dll作为资源内嵌,定义结构保存数据,并详细阐述了如何去除DLL的引导代码,以确保程序的可控性和健壮性。
摘要由CSDN通过智能技术生成

1、添加编译选项

         在Stub项目中的Stub.cpp中,添加一下代码,控制此项目在编译时的连接选项。让我们生成的dll程序.text、.data与rdata区段合并。

#pragma comment(linker, "/merge:.data=.text")        // 将.data合并到.text
#pragma comment(linker, "/merge:.rdata=.text")       // 将.rdata合并到.text
#pragma comment(linker, "/section:.text,RWE")        // 将.text段的属性设置为可读、可写、可执行
重新编译项目,用LoadPe打开Stub.dll,区段表信息如下:

2、进一步配置项目

         起始通过之前的配置我们就已经配置好项目了,为了让我们的项目配置更好些,想让最终生成的文件只有MFC工程生成的PackBase.exe和加壳工程生成的Pack_Dll.dll两个文件,而Stub工程生成的Stub.dll以资源的形式存在Pack_Dll项目中。

         为此,我们首先将Stub工程编译一下,

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Mockito 和 JUnit 来配置 stub。Mockito 可以帮助你创建 mock 对象,而 JUnit 可以帮助你编写单元测试。 以下是一个示例: 假设你有一个 UserService 接口和一个 UserServiceImpl 类,你想测试 UserServiceImpl 类的一个方法,该方法依赖于 UserDAO 接口。 首先,你需要创建 UserDAO 接口的 mock 对象。在 JUnit 测试类的 setUp() 方法中,你可以创建 mock 对象并将其注入到 UserServiceImpl 类中。 ```java public class UserServiceImplTest { private UserServiceImpl userServiceImpl; private UserDAO userDAO; @Before public void setUp() { userDAO = Mockito.mock(UserDAO.class); userServiceImpl = new UserServiceImpl(userDAO); } @Test public void testGetUser() { // 创建一个 user 对象 User user = new User("test", "test123"); // 当调用 userDAO 的 getUser() 方法时,返回上面创建的 user 对象 Mockito.when(userDAO.getUser("test")).thenReturn(user); // 调用 userServiceImpl 的 getUser() 方法 User result = userServiceImpl.getUser("test"); // 验证结果是否正确 Assert.assertEquals(user, result); } } ``` 在这个示例中,我们使用 Mockito 创建了一个 UserDAO 接口的 mock 对象,并将其注入到 UserServiceImpl 类中。然后,我们使用 Mockito 的 when() 方法来指定当调用 userDAO 的 getUser() 方法时应该返回什么值。最后,我们调用 userServiceImpl 的 getUser() 方法并验证结果是否正确。 这样,你就可以使用 stub 来测试你的应用程序了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值