吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5120|回复: 83
收起左侧

[分享] 《吾爱破解培训第三课:改头换面之修改版权和资源》全流程

  [复制链接]
mozhongzhou 发表于 2024-9-8 19:30
本帖最后由 mozhongzhou 于 2024-9-10 14:29 编辑

前言

目的

记录踩坑经验,帮助他人避免同样问题。

提示

使用浏览器左侧目录快速导航。

注意

如有错误,请指正。

免责声明

本文档中的信息仅供参考,作者仅免费分享技术,不对因使用本文档中的信息而导致的任何损失或损害承担责任。读者在使用本文档中的信息时,应自行判断其适用性,并承担相应的风险。本文档中的内容可能会随时更改,恕不另行通知。

环境:

虚拟机Windows 10 企业版 LTSC

img

可能用到的软件:

工欲善其事必先利其器

软件名称 类别 作用
VMware 虚拟化软件 创建和管理虚拟机,运行多个操作系统实例
Detect It Easy(DIE) 文件分析工具 识别可执行文件的编译器、打包器和加壳工具
Exeinfo PE 文件分析工具 分析可执行文件的编译器、打包器和加壳工具
PEiD (Portable Executable Identifier) 文件分析工具 检测可执行文件的编译器、打包器和加壳工具
x32/64dbg (Debugger) 调试工具 调试 32 位和 64 位可执行文件
aslr_disabler 安全工具 禁用地址空间布局随机化(ASLR),便于调试和逆向工程
Restorator 资源编辑器 编辑 Windows 可执行文件(EXE、DLL 等)中的资源,如图标、字符串、对话框等
C32Asm 汇编工具 用于编写和调试汇编代码,支持 32 位和 64 位架构
Injector 注入工具 将动态链接库(DLL)注入到目标进程中,常用于调试和逆向工程
StudyPE PE 文件分析工具 分析和编辑 PE 文件结构,查看文件头、节表、导入表等信息
Stud_PE PE 文件分析和编辑工具 分析和修改 PE 文件。

可能用到的链接

爱盘下载: http://down.52pojie.cn/吾爱破解视频教程/吾爱破解论坛官方入门教学培训第一期/

百度网盘下载: 链接: https://pan.baidu.com/s/1z9WQeYgUGxcurVD2lKfNeg=e2su ;提取码: e2su

零基础新手破解学习导航帖

吾爱破解论坛官方入门教学培训第三课:改头换面之修改版权和资源 讲师:Kido哔哩哔哩bilibili

1、使用资源编辑器工具Restorator修改软件

以Scylla为例,其开源协议为GNU 3.0 http://www.gnu.org/licenses/gpl-3.0.html

1.1、编辑模式初来乍到

用Restorator打开Scylla_x86.exe -> 菜单 ->104 -> 点上面从右往左第6个 ab图标(F6)编辑模式

(注:在“资源查看器”里面改完代码,ctrl+s保存后按F5可以预览修改的结果)

img

1.2、修改界面小试牛刀

1.2.1、修改菜单

1.2.1.1、修改顶部菜单栏

将资源查看器中的104 MENU部分代码更改为这样

 104 MENU
 {
 POPUP "文件"
 {
 MENUITEM "转储(&D)", -25507
 MENUITEM "转储内存", -25460
 MENUITEM "转储节", -25459
 MENUITEM "PE 重建(&R)", -25506
 MENUITEM SEPARATOR
 MENUITEM "修复转储(&F)", -25505
 MENUITEM SEPARATOR
 MENUITEM "退出", -25535
 }
 POPUP "导入"
 {
 MENUITEM "显示无效项", -25490
 MENUITEM "显示可疑项", -25487
 MENUITEM SEPARATOR
 MENUITEM "使所选项无效", -25488
 MENUITEM SEPARATOR
 MENUITEM "剪切所选项", -25495
 MENUITEM "清除导入", -25486
 MENUITEM SEPARATOR
 MENUITEM "保存树(&S)", -25485
 MENUITEM "加载树(&L)", -25484
 }
 POPUP "跟踪"
 {
 MENUITEM "自动跟踪(&T)", -25483
 }
 POPUP "杂项"
 {
 MENUITEM "DLL 注入", -25533
 MENUITEM "反汇编器", -25455
 MENUITEM SEPARATOR
 MENUITEM "选项", -25481
 }
 POPUP "帮助"
 {
 MENUITEM "捐赠", -25452
 MENUITEM "关于", -25534
 }
 }

img

更改完成后按F8提交更改,然后F5刷新预览

img

发现菜单栏已经发生变化

img

img

退出预览,按F12另存为

img

img

直接覆盖即可,因为会自动创建一个备份

img

打开"Scylla_x86.exe",发现修改成功

注:之前代码里

 MENUITEM "转储(&D)", -25507
 MENUITEM "PE 重建(&R)", -25506
 MENUITEM "修复转储(&F)", -25505

像这种带有英文括号里&加一个字符的"(&+字符) ",意思是快捷键,比如在下图所示情况,点击 文件,这时按 R 可以快速使用PE重建功能,但要注意的是这种快捷键与ctrl+字符的快捷键不同

img

又例,选择一个活动的进程之后,点 文件 -> 按D ->跳出转储界面

img

img

1.2.1.2、修改右键导入表项界面

菜单 105界面

 105 MENU
 {
 POPUP ""
 {
 MENUITEM "使无效", -25461
 MENUITEM "反汇编", -25524
 MENUITEM SEPARATOR
 MENUITEM "剪切 thunk", -25526
 MENUITEM "删除树节点", -25525
 MENUITEM SEPARATOR
 MENUITEM "展开所有节点", -25528
 MENUITEM "折叠所有节点", -25527
 }
 }

img

F8提交修改,F5预览

img

1.2.1.3、修改反汇编器界面

img

 107 MENU
 {
 POPUP ""
 {
 MENUITEM "跟随", -25456
 MENUITEM "在此反汇编", -25453
 MENUITEM SEPARATOR
 MENUITEM "复制地址", -25516
 MENUITEM "复制大小", -25512
 MENUITEM "复制操作码", -25511
 MENUITEM "复制指令", -25510
 }
 }

img

1.2.1.4、修改日志

110 MENU { POPUP "" { MENUITEM "保存", -25482 MENUITEM "清除", -25503 } }

img

1.2.2、修改对话框

1.2.2.1、修改主对话框界面

先按ctrl+F6切换到RC显示模式,这个怎么改就因人而异了,发挥创造力!!!

 101 DIALOGEX 0, 0, 600, 335, 0
 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUPWINDOW | WS_CAPTION
 MENU 104
 CAPTION "Scylla edited by Mozhongzhou"
 FONT 8, "MS Shell Dlg", 400, FALSE
 {
 GROUPBOX "附加到活动进程", 1040, 7, 7, 586, 34, BS_CENTER, WS_EX_TRANSPARENT
 COMBOBOX 1001, 13, 19, 526, 90, CBS_DROPDOWNLIST | WS_VSCROLL
 PUSHBUTTON "选择DLL", 1002, 550, 18, 38, 15
 GROUPBOX "导入表", 1041, 7, 44, 340, 140, BS_CENTER, WS_EX_TRANSPARENT
 CONTROL "", 1023, "SysTreeView32", WS_BORDER | WS_HSCROLL | WS_TABSTOP | 0x00000227, 9, 52, 326, 100
 PUSHBUTTON "显示无效项", 1009, 14, 155, 58, 14
 PUSHBUTTON "显示可疑项", 1010, 141, 155, 58, 14
 PUSHBUTTON "清除", 1011, 268, 155, 58, 14
 GROUPBOX "日志", 1044, 7, 190, 340, 135, BS_CENTER, WS_EX_TRANSPARENT
 LISTBOX 1024, 14, 205, 326, 110, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
 GROUPBOX "IAT 信息", 1042, 353, 44, 240, 140, BS_CENTER, WS_EX_TRANSPARENT
 LTEXT "OEP", 1046, 362, 63, 19, 12, SS_CENTERIMAGE
 EDITTEXT 1004, 388, 62, 85, 12, ES_AUTOHSCROLL
 LTEXT "VA", 1047, 362, 80, 13, 12, SS_CENTERIMAGE
 EDITTEXT 1005, 388, 80, 85, 12, ES_AUTOHSCROLL
 LTEXT "大小", 1048, 361, 97, 15, 12, SS_CENTERIMAGE
 EDITTEXT 1006, 388, 98, 85, 12, ES_AUTOHSCROLL
 PUSHBUTTON "IAT 自动搜索", 1007, 482, 61, 80, 16
 PUSHBUTTON "获取导入表", 1008, 482, 81, 80, 16
 GROUPBOX "转储", 1051, 353, 190, 240, 69, BS_CENTER, WS_EX_TRANSPARENT
 PUSHBUTTON "转储", 1013, 363, 205, 59, 15
 PUSHBUTTON "修复转储", 1019, 426, 205, 80, 15
 PUSHBUTTON "PE 重建", 1015, 509, 205, 59, 15
 GROUPBOX "操作", 1050, 353, 265, 240, 62, BS_CENTER, WS_EX_TRANSPARENT
 PUSHBUTTON "自动跟踪", 1012, 363, 280, 57, 14
 }

img

1.2.2.2、修改对话框102

img

1.2.2.3、修改对话框106

img

1.2.2.5、修改对话框108

这个改名字是没用的,后面还得细改

把关于和鸣谢改了就好

img

1.2.2.6、修改对话框109

img

1.2.2.7、修改对话框110

汉化后 filter->过滤器 字有点遮盖,需要调整一下大小

img

1.2.2.8、修改对话框115

img

1.2.2.9、修改对话框116

img

1.2.2.10、修改对话框117

img

1.2.3、修改快捷键

这个根据个人喜好来吧,我个人觉得没啥好改的

img

1.2.4、修改图标

1.2.4.1、导出现有图标

这是为了安全,备份,例如这个主要图标

img

左上角 快捷键alt+R打开资源,然后按V导出

img

img

1.2.4.2、导入新图标

传一个.ico上去(.jpg是不行的)

将.ico拖入103即可

img

效果图

img

1.2.5、修改界面

这个部分不适合随意编辑,代码跟应用权限有关,如果修改错误会导致程序无法运行

img

2、利用x32dbg反汇编修改软件

挺有意思的,要有点耐心!

2.1、改程序名

2.1.1、小改

之前用Restorator修改了主页面左上角的程序名,发现并没有更改成功,这可能是因为后面软件又用其他文字覆盖了一次,所以我决定用x32dbg来改

x32dbg搜索字符串,找到第一行,这个就是没修改成功,被覆盖掉的软件名,双击过去

img

看到 push scylla_x.C732B4了吗,这是把软件名给push进去,右键在内存窗口中转到对象地址,注意是push的对象的地址(这个对象才是存名字的地方),不是那句push本身

img

然后看左下角,切换为Unicode显示,是不是找到了?

img

先简单测试,把版本号更新一下

img

2.1.2、大改

2.1.2.1、开辟区段

接下来我想要把程序名改为 "Scylla x86 v0.9.8 Edited by Mozhongzhou"发现留下的空间不够大。

准备开辟一个新区段用于存放程序名,等会修改push过去

虽然x32dbg可以用alloc分配内存,但感觉不如开辟新区段(用到软件StudyPE)

区段大小留大点没关系,后面可以用来做别的事情

img

2.1.2.2、禁用ASLR

把软件ASLR禁用一下,避免出现重定向的问题的可能性

2.1.2.3、创建新的软件名

右键->在内存窗口中转到

img

地址多框选点没关系,右键->二进制编辑->编辑

img

把UNICODE给改了,记住现在数据的位置,00484000

img

找到之前的软件名,alt+r查找引用,看看哪些地方push过这个软件名的,都改了

img

双击过去,空格,把他push的地址改为我们自己加的名字所在的地方

img

同理第二个也是这样

img

Ctrl+p导出,注意不应有重定向等错误提示,否则查一下是不是哪一步没做?

img

效果展示:左上角的软件名、帮助、关于里的软件名都已更改

img

2.2、改下捐赠信息?

不太道德,我就不改了

另外:一定要遵守法律法规,尊重知识产权保护!

img

3、加弹窗(进阶)

先看效果: 双击软件,先弹出52pojie,点击确认或关闭后再弹出软件

img

思路:先确认有没有弹窗API,有则调用,没则自加;再开辟区段存放弹窗信息、弹窗入口点以及返回跳转;最后将程序入口点改为弹窗入口点即可!

3.1、用Stud_PE查找弹窗API

3.1.1、在user32.dll中能够找到现成的API

这里用到Stud_PE,打开软件,函数->user32.dll->查找有没有MessageBoxA或者MessageBoxW

找到MessageBoxW,没找到MessageBoxA,这里记住MessageBoxW的rav2iat:0004D36C

解释:RVA(Relative Virtual Address, 相对虚拟地址)是指相对于模块基地址的偏移量。

  1. 模块基地址

    • 模块基地址是指模块(如DLL或EXE文件)在内存中加载时的起始地址。
    • 每个模块在加载到内存时都会有一个基地址,这个地址是操作系统分配的。
  2. RVA(相对虚拟地址)

    • RVA 是相对于模块基地址的偏移量。
    • 例如,如果模块基地址是 0x10000000,而某个函数的 RVA 是 0x00002000,那么该函数的实际内存地址就是 0x10000000 + 0x00002000 = 0x10002000

img

3.1.2、假如没找到现成的API,也可以自己加

程序一样肯定是找得到的,但假如我们在user32.dll中既没找到MessageBoxA也没找到MessageBoxW,还有办法解决,自己搞一个API即可。

这里还是用到Stud_PE,右键 输入函数 框内->添加新的输入表

img

DLL选择->C盘,Windows,System32,user32.dll

img

选择函数->找到之前没找到的MessageBoxA(快速定位它的办法:随便点击一下函数,然后在键盘上按顺序敲这个API的字母,例如敲MESSAGE 它会自动搜索定位,这种方法同样适用于文件系统搜寻文件的情况)

img

加入到清单->加入 可以看到最下面有一个user32.dll,而里面只有MessageBoxA,同样记住它的rva2iat:00094123

img

3.2、开辟区段存放弹窗信息

3.2.1、开辟区段

参考2.1.2.1用Stud_PE或者StudyPE来开辟一个新区段

3.2.2、为MessageBoxW准备弹窗

x32dbg启动软件后从内存布局双击.52POJIE来到区段,上面为反汇编区域,下面为内存区域

img

img

先把“52pojie”弹窗标题存放好,UNICODE输入52pojie

img

再存放弹窗内容“吾爱破解”,unicode输入吾爱破解

img

左下角不显示中文?

img

这下看懂了

img

以上准备好了MessageBoxW的弹窗标题和内容

记住标题地址0x00484050 ;内容地址0x00484060

3.2.3、为MessageBoxA准备弹窗

弹窗标题,ASCII 52pojie

img

弹窗内容

img

3.3、区段存放弹窗入口点

MessageBoxA和MessageBoxW都需要四个参数

注:MessageBoxW和MessageBoxA的相同点和区别?

相同点:MessageBoxWMessageBoxA 的相同点包括:

  1. 功能相同:两者都用于显示一个包含消息和按钮的对话框。
  2. 参数相同:两者的参数类型和数量相同,只是字符类型不同。
  3. 返回值相同:两者都返回一个整数值,表示用户点击的按钮。
  4. 使用场景相同:两者都可以用于提示用户信息、显示错误消息或询问用户确认操作。

最主要的区别是:

  • MessageBoxW 使用 Unicode 字符集,可以更好地适配多语言环境,包括中文、日文、韩文等需要多字节表示的字符。
  • MessageBoxA 使用 ANSI 字符集,主要适用于单字节字符编码的语言,如英语和其他基于拉丁字母的语言。

因此,MessageBoxW 更适合处理需要支持多语言和国际化的应用程序,而 MessageBoxA 主要适用于只需要处理单字节字符集的应用程序。

img

3.3.1、准备MessageBoxW

堆栈是后进先出,大致要干这几件事

push 00

push title

push content

push 00

call MessageBoxW

jmp oep

右键00484090在反汇编中转到-(空格)汇编于00484090,依次几行输入

第一个00用于uType

img

这是标题所在位置

img

这是内容所在位置

img

这个00用于hWnd

img

记得之前查到的rva吗

MessageBoxA: 00094123

MessageBoxW:0004D36C

我们的程序基址00400000,基址+rva偏移得到位置

img

那么我们MessageBox:0044D36C

MessageBoxA:            00494123

很合理吧,MessageBoxW存放在rdata区段;MessageBoxA是我们自己加的,所以地址在newimp区段

call  [0x0044D36C] 间接调用MessageBoxW,

或者call MessageBoxW 也可以

img

最后弹窗完了跳回OEP

img

Ctrl+P备份一下,存到另外一个名字的备份去,否则等会测试完内存的修改就没了

测试 从第一个push的参数开始,右键->在此设置EIP

img

跑完call是不是就有弹窗了啊?

img

然后又回到OEP了,这就是我们希望的,弹窗结束就跳回OEP

img

3.3.2、准备MessageBoxA

再到下面空白的段找一块,来push MessageBoxA所需参数

img

标题和内容,注意一定要push用ASCII写的那个,如果你push UNICODE编码的那个一定会乱码

img

同样的 call MessageBoxA 或者call [0x00494123]

最后jmp回到oep即可

3.4、更改程序入口点

以MessageBoxW为例

从第一个push00开始00484090

用Stud_PE打开程序->Rva<=>Raw -> 虚拟地址,输入MessageBoxW从push00开始的地址->得到相对虚拟地址84090->将入口点(虚拟地址)改为00084090->转存到文件(注意要关闭任何打开该应用的程序)

img

img

img

测试成功

img

img

第三课全流程结束

写在最后

感谢所有无私奉献的坛友

  • 感谢所有在论坛中无私奉献的朋友们,你们的贡献使得知识得以传播和共享。

本文只是对吾爱破解教程的流程记录

  • 本文仅是对吾爱破解教程的流程记录,算是一个比较老的教程了,希望对大家有所帮助。

所有虚拟机、测试工具、测试软件均可在52pojie官网论坛和"可能用到的链接"中下载!

免费评分

参与人数 36威望 +1 吾爱币 +51 热心值 +33 收起 理由
GKTurtle + 1 + 1 谢谢@Thanks!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
在下鹤一 + 1 谢谢@Thanks!
allspark + 1 + 1 用心讨论,共获提升!
lnastacies + 1 + 1 鼓励转贴优秀软件安全工具和文档!
xiaohui13 + 1 + 1 我很赞同!
jaffa + 1 谢谢@Thanks!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
saintppp + 1 热心回复!
gouzi123 + 1 + 1 谢谢@Thanks!
VTKme + 1 + 1 我很赞同!
wanbuding + 1 + 1 鼓励转贴优秀软件安全工具和文档!
melooon + 1 + 1 我很赞同!
gqdsc + 1 + 1 这么优秀的教程,感谢
lingyun011 + 1 + 1 谢谢@Thanks!
love008 + 1 + 1 支持做成系列,成为论坛最新加精教程!
Issacclark1 + 1 谢谢@Thanks!
Wormhole + 1 谢谢@Thanks!
杨辣子 + 1 + 1 谢谢@Thanks!
daoye9988 + 1 + 1 谢谢@Thanks!
qingyun12345 + 1 谢谢@Thanks!
lbh3925695 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
bailemenmlbj + 1 + 1 谢谢@Thanks!
kindiaing + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wb0226 + 1 + 1 我很赞同!
CYF369 + 1 + 1 谢谢@Thanks!
wangdanq + 1 + 1 谢谢@Thanks!
mynirvana + 1 + 1 谢谢@Thanks!
nojon + 1 + 1 谢谢@Thanks!
vmoranv + 1 热心回复!
WXJYXLWMH + 1 + 1 谢谢@Thanks!
LuckyClover + 1 + 1 谢谢@Thanks!
ailmail + 1 谢谢@Thanks!
tflyr + 2 + 1 热心回复!
helian147 + 1 + 1 热心回复!
52hao123 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| mozhongzhou 发表于 2024-9-9 16:46
百度网盘如果显示提取码错误,请检查是不是自动跳转的链接与实际链接不同?
yucevip 发表于 2024-9-8 20:36
解锁了我尘封已久的记忆,还记得那是2017年的哪个夏天 我满怀着期待走向了逆向大门的第一课
luliucheng 发表于 2024-9-15 20:13
其实“修改界面”中“界面”的英文是“Manifest”,这里机翻翻错了,正确译法是“清单”。
dbhm71 发表于 2024-9-8 19:44
受教了,感谢分享
违规昵称36 发表于 2024-9-8 19:44
看着好难啊,学不会
 楼主| mozhongzhou 发表于 2024-9-8 19:50
违规昵称36 发表于 2024-9-8 19:44
看着好难啊,学不会

可以先去看看官方教学视频,或者我前段时间写的前两课噢
tflyr 发表于 2024-9-8 19:55
希望楼主持续把这个系列更完
justwz 发表于 2024-9-8 20:24
跟着大佬学逆向
 楼主| mozhongzhou 发表于 2024-9-8 20:29
justwz 发表于 2024-9-8 20:24
跟着大佬学逆向

好巧哦!我的注册时间刚好是你注册时间的2年前
ailmail 发表于 2024-9-8 20:45
好教程,收藏!
LuckyClover 发表于 2024-9-8 20:48
感谢分享好东西
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-21 19:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表