首页
社区
课程
招聘
JCreator3.5.0.013快速脱壳法
发表于: 2005-9-7 21:14 11876

JCreator3.5.0.013快速脱壳法

2005-9-7 21:14
11876

【破解作者】 ftts[BCG]
【作者邮箱】 ftts1@163.com
【作者主页】 http://ftts.wy8.net/
【使用工具】 ollydbg1.10, lordpe,ImportREC1.65,peid 0.93
【破解平台】 Windows 2003
【软件名称】 JCreator3.5.0.013
【下载地址】 http://www.jcreator.com/
【软件简介】 Java 编程工具
【软件大小】 3.709M
【加壳方式】 Armadillo 3.78
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】

用peid 分析可知这个软件是 Armadillo 3.78加的壳
程序是单进程的,用了antidump
我们用ollydbg 载入JCreator.exe 在下面停下
设置忽略所有异常。
008E5000 JCreator.<ModuleEntryP>  60                 pushad
008E5001                          E8 00000000        call JCreator.008E5006
008E5006                          5D                 pop ebp
008E5007                          50                 push eax
在命令栏输入
he GetModuleHandleA回车
he VirtualAlloc 回车

按F9  再按 alt+f9 经过多次址到,找到下面的特征码。
01364E69                          8B0D AC0D3901      mov ecx,dword ptr ds:[1390DAC]
01364E6F                          89040E             mov dword ptr ds:[esi+ecx],eax
01364E72                          A1 AC0D3901        mov eax,dword ptr ds:[1390DAC]
01364E77                          391C06             cmp dword ptr ds:[esi+eax],ebx
01364E7A                          75 16              jnz short 01364E92
01364E7C                          8D85 B4FEFFFF      lea eax,dword ptr ss:[ebp-14C]
01364E82                          50                 push eax
01364E83                          FF15 B4323801      call dword ptr ds:[13832B4]        ; kernel32.LoadLibraryA
01364E89                          8B0D AC0D3901      mov ecx,dword ptr ds:[1390DAC]
01364E8F                          89040E             mov dword ptr ds:[esi+ecx],eax
01364E92                          A1 AC0D3901        mov eax,dword ptr ds:[1390DAC]
01364E97                          391C06             cmp dword ptr ds:[esi+eax],ebx
01364E9A                          0F84 2F010000      je 01364FCF----------->je 改为jmp
01364EA0                          33C9               xor ecx,ecx
01364EA2                          8B07               mov eax,dword ptr ds:[edi]
01364EA4                          3918               cmp dword ptr ds:[eax],ebx
01364EA6                          74 06              je short 01364EAE

去掉 硬件断点1 按F9  再按 alt+f9 一直到 找到这下面的特征码.

013780C2                          FFB5 64D7FFFF      push dword ptr ss:[ebp-289C]
013780C8                          FF35 F06C3901      push dword ptr ds:[1396CF0]
013780CE                          FF15 88313801      call dword ptr ds:[1383188]        ; kernel32.VirtualAlloc
013780D4                          8985 6CD7FFFF      mov dword ptr ss:[ebp-2894],eax
013780DA                          83BD 6CD7FFFF 00   cmp dword ptr ss:[ebp-2894],0
013780E1                          74 64              je short 01378147
013780E3                          6A 40              push 40
013780E5                          68 00100000        push 1000
013780EA                          FFB5 64D7FFFF      push dword ptr ss:[ebp-289C]
013780F0                          FF35 F06C3901      push dword ptr ds:[1396CF0]
013780F6                          FF15 88313801      call dword ptr ds:[1383188]        ; kernel32.VirtualAlloc
013780FC                          8985 6CD7FFFF      mov dword ptr ss:[ebp-2894],eax
01378102                          83BD 6CD7FFFF 00   cmp dword ptr ss:[ebp-2894],0
01378109                          74 3C              je short 01378147
0137810B                          8B85 6CD7FFFF      mov eax,dword ptr ss:[ebp-2894]

去掉硬件断点2 按F8一直到 013780FC
再按alt+M
在程序本身找一个放远程跳转的地方.adata 8e5000 再修改eax=8e5000

再按alt+M 在程序.text设置内存访问断点,再按F9就会到程序入口了5159DF

再用lordPe dump 出JCreator.exe  在ollydgb命令栏里面输入d 400000

00400030      00 00 00 00 00 00 00 00 00 00 00 00 B7 A8 53 00--->将这里面的 B7 A8 53 00
改为原来的 18 01 00 00 (这里可用用十六进制工具查看)

再打开 ImportREC.exe 选择 JCreator.exe 再oep 里面输入001159DF
点Iat autoSearch 再点 Get Imports ,Show Invalid 再cut 不可用的rva
最后就是Fix Dump了,Dump 完之后 还要将Dump 这后的程序oep改为1159df
这样脱壳出来的程序就可以正常运行了

给程序减肥: Lordpe可以减掉区块 Shared,.text1,data1,再Rebuild Pe
程序由9.6M 变为9.0M .adata区块本是可以剪掉的(剪掉之后原程序将小2M),
但去掉之后程序有些地方会显示乱码。

--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (23)
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
我先来坐个沙发
2005-9-7 23:01
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
请教楼主两个不明白的地方
1、再按alt+M
在程序本身找一个放远程跳转的地方.adata 8e5000 再修改eax=8e5000

这是怎么来的?

2、在ollydgb命令栏里面输入d 400000

00400030      00 00 00 00 00 00 00 00 00 00 00 00 B7 A8 53 00--->将这里面的 B7 A8 53 00
改为原来的 18 01 00 00 (这里可用用十六进制工具查看)

这样做的目的?

谢谢楼主的解答先
2005-9-7 23:36
0
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
4
支持的说!
2005-9-8 09:38
0
雪    币: 136
活跃值: (105)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
5
不错的说 顶你!!!!
2005-9-8 18:55
0
雪    币: 108
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
00400030      00 00 00 00 00 00 00 00 00 00 00 00 B7 A8 53 00--->将这里面的 B7 A8 53 00
改为原来的 18 01 00 00 (这里可用用十六进制工具查看)

================

这里应该和OEP有关系
2005-9-8 20:39
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
7
e_lfanew
PE Header起始偏移地址
2005-9-8 20:53
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 chinadev 发布
请教楼主两个不明白的地方
1、再按alt+M
在程序本身找一个放远程跳转的地方.adata 8e5000 再修改eax=8e5000

这是怎么来的?
........


“在程序本身找一个放远程跳转的地方.adata 8e5000 再修改eax=8e5000”

这个是怎样改来的啊?不太明白?可以看程序本身adata,但怎样改8e5000和这数值怎样来的?
2005-9-9 22:02
0
雪    币: 333
活跃值: (369)
能力值: ( LV12,RANK:490 )
在线值:
发帖
回帖
粉丝
9
最初由 yuhong 发布


“在程序本身找一个放远程跳转的地方.adata 8e5000 再修改eax=8e5000”

这个是怎样改来的啊?不太明白?可以看程序本身adata,但怎样改8e5000和这数值怎样来的?


8e5000是.adata 在内存中的起始地址
2005-9-9 22:37
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
最初由 FlyToTheSpace 发布


8e5000是.adata 在内存中的起始地址

谢谢!
2005-9-10 14:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
为什么我忽略所有异常,并且下了2个硬件断点。
F9以后仍然还提示碰到异常需要按shift+F7/F8/F9通过。
没法按 Alt+F9

谢谢指教。。
2005-9-13 11:21
0
雪    币: 333
活跃值: (369)
能力值: ( LV12,RANK:490 )
在线值:
发帖
回帖
粉丝
12
最初由 scme 发布
为什么我忽略所有异常,并且下了2个硬件断点。
F9以后仍然还提示碰到异常需要按shift+F7/F8/F9通过。
没法按 Alt+F9

谢谢指教。。


只要遇到异常
先按shift+F7/F8/F9通过呀!
就样就可以在GetModuleHandleA处这里断下了。
2005-9-13 19:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
你脱后就可以正常运行?为什么我脱掉后还是提示试用时间已过,需要输入注册码才可运行呢?本想继续爆破它,奈何本来就不懂java,只好作罢。只是心里总是不舒服。
2005-9-14 14:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
最初由 xizhu 发布
你脱后就可以正常运行?为什么我脱掉后还是提示试用时间已过,需要输入注册码才可运行呢?本想继续爆破它,奈何本来就不懂java,只好作罢。只是心里总是不舒服。


它本来就是C++写的,所以不懂java没关系。继续把,追出注册码来。

很可惜我怎么也没法按照楼主的方法脱壳。初学脱壳,只能慢慢研究了。

最后想问一下能不能给个比楼主更详细一点的操作步骤。我很喜欢这个软件,可惜买不起,网上的破解版本又很难用,总想追出注册码。
2005-9-14 16:28
0
雪    币: 333
活跃值: (369)
能力值: ( LV12,RANK:490 )
在线值:
发帖
回帖
粉丝
15
最初由 xizhu 发布
你脱后就可以正常运行?为什么我脱掉后还是提示试用时间已过,需要输入注册码才可运行呢?本想继续爆破它,奈何本来就不懂java,只好作罢。只是心里总是不舒服。

把这下面这的这个dll放在软件的安装目录下面,就不用注册了,也不会过期了
附件:armaccess.rar
2005-9-15 19:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
一样过期,不管用的。
2005-9-16 11:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
我参考了KuNgBiM的文章,采用BP GetModuleHandleA+5下断的方法很快就找到了
OEP 005159DF,
http://bbs.pediy.com/showthread.php?s=&threadid=16933
01364E69   8B0D AC0D3901    MOV ECX,DWORD PTR DS:[1390DAC]
01364E6F   89040E           MOV DWORD PTR DS:[ESI+ECX],EAX
01364E72   A1 AC0D3901      MOV EAX,DWORD PTR DS:[1390DAC]
01364E77   391C06           CMP DWORD PTR DS:[ESI+EAX],EBX
01364E7A   75 16            JNZ SHORT 01364E92
01364E7C   8D85 B4FEFFFF    LEA EAX,DWORD PTR SS:[EBP-14C]
01364E82   50               PUSH EAX
01364E83   FF15 B4323801    CALL DWORD PTR DS:[13832B4]              ; kernel32.LoadLibraryA
01364E89   8B0D AC0D3901    MOV ECX,DWORD PTR DS:[1390DAC]
01364E8F   89040E           MOV DWORD PTR DS:[ESI+ECX],EAX
01364E92   A1 AC0D3901      MOV EAX,DWORD PTR DS:[1390DAC]
01364E97   391C06           CMP DWORD PTR DS:[ESI+EAX],EBX
01364E9A   0F84 2F010000    JE 01364FCF    //此处我改成: JMP 01364FCF
01364EA0   33C9             XOR ECX,ECX
01364EA2   8B07             MOV EAX,DWORD PTR DS:[EDI]
01364EA4   3918             CMP DWORD PTR DS:[EAX],EBX
01364EA6   74 06            JE SHORT 01364EAE
01364EA8   41               INC ECX
01364EA9   83C0 0C          ADD EAX,0C
01364EAC  ^EB F6            JMP SHORT 01364EA4
01364EAE   8BD9             MOV EBX,ECX
取消GetModuleHandleA+5断点,设置“内存访问断点” F9到达程序入口点。

005159DF   55               PUSH EBP    //入口点。
005159E0   8BEC             MOV EBP,ESP
005159E2   6A FF            PUSH -1
005159E4   68 C0B57D00      PUSH JCreator.007DB5C0
005159E9   68 24A85100      PUSH JCreator.0051A824
005159EE   64:A1 00000000   MOV EAX,DWORD PTR FS:[0]
005159F4   50               PUSH EAX
005159F5   64:8925 00000000 MOV DWORD PTR FS:[0],ESP
005159FC   83EC 58          SUB ESP,58
005159FF   53               PUSH EBX
00515A00   56               PUSH ESI
00515A01   57               PUSH EDI
00515A02   8965 E8          MOV DWORD PTR SS:[EBP-18],ESP
00515A05   FF15 30747B00    CALL DWORD PTR DS:[7B7430]               ; kernel32.GetVersion
00515A0B   33D2             XOR EDX,EDX
00515A0D   8AD4             MOV DL,AH
00515A0F   8915 BCDB8800    MOV DWORD PTR DS:[88DBBC],EDX
00515A15   8BC8             MOV ECX,EAX
00515A17   81E1 FF000000    AND ECX,0FF
00515A1D   890D B8DB8800    MOV DWORD PTR DS:[88DBB8],ECX
00515A23   C1E1 08          SHL ECX,8
00515A26   03CA             ADD ECX,EDX
00515A28   890D B4DB8800    MOV DWORD PTR DS:[88DBB4],ECX

到达入口点后,我进行如下操作:
1,用lordpe 选择jcreator.exe, 右键 dump full, 得到 9636K 大小的文件dump.exe,
2,用ImportREC时,点击IAT auto search后,自动得到:
RAV: 003B7000  Size: 00000AOC
并还提示如果不对请使用,RAV:003B7000 Size: 000B692D

默认使用size: 00000AOC, 输入oep 001159DF, get imported, show invaild, cut thunk, 最后fix dump, 可是得到的程序dump_.exe运行时 提示某个地址内存不能为读,要结束。

使用RAV:003B7000 Size: 000B692D时,点击 get imported 程序就没反应了。

还请帮忙诊断一下。

注: 我对你的这一步, 在ollydgb命令栏里面输入d 400000

00400030      00 00 00 00 00 00 00 00 00 00 00 00 B7 A8 53 00--->将这里面的 B7 A8 53 00
改为原来的 18 01 00 00 (这里可用用十六进制工具查看)
不理解,为什么要改这个,
我没有做这一步,是否因为这个原因才fixdump出来的程序不行。我后来尝试了修改得到的dump_.exe程序也不行。

另外,fixdump出来的程序EOP是对的,应该不用再改了吧。
2005-9-19 11:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
自己顶一下,各位大侠帮忙看一下。。谢谢先
2005-9-20 07:56
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
谢谢!!!
2005-9-20 10:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
请帮忙看一下,17楼的。  
还是搞不定。。
2005-9-21 20:55
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
不错的说,仔细看看~
2005-9-21 22:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
怎么就没有有用的回复。尽是灌水。打字不累呀。
2005-9-22 11:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
注: 我对你的这一步, 在ollydgb命令栏里面输入d 400000

00400030      00 00 00 00 00 00 00 00 00 00 00 00 B7 A8 53 00--->将这里面的 B7 A8 53 00
改为原来的 18 01 00 00 (这里可用用十六进制工具查看)

我是改了这个以后成功,要是不同的版本,地址要相应该的改。

另:那个ArmAccess.dll是对破解后的 文件有效。
2005-10-9 23:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
倒!为啥你们都脱壳就可以正常运行?为什么我脱掉后提示错误!
谁有脱壳后的那个主文件,给俺看看。
还有那个00400030      00 00 00 00 00 00 00 00 00 00 00 00 B7 A8 53 00--->将这里面的 B7 A8 53 00
改为原来的 18 01 00 00(这里可用用十六进制工具查看)
楼上说用不同的版本,地址要相应改,那请问如何知道啥版本改啥内容呢?
2006-1-6 21:43
0
游客
登录 | 注册 方可回帖
返回
//