能力值:
( LV2,RANK:10 )
|
-
-
2 楼
看不太明白...
比如:
81h,35h,5Ch,00h,3Ah,00h, 8Dh,F3h,D8h,17h, ;xor dword ptr [003A007B],17D8F38D
81h,35h,5Ch,00h,3Ah,00h, 8Dh,F3h,D8h,17h, 对应的汇编指令应该是 xor dword ptr [003A005C],17D8F38D 才对,不知道你的003A007B是从哪里来的...可能是我out了
你的错误大概是由Virtualalloc函数引起的吧?你的dwSize参数最好按页的整数倍来申请,防止发生意料;另外,对于 往往第一次会正确显示出程序界面 这种情况大概是你用Virtualalloc申请的内存空间(地址003A005C)被改写 或者 被free掉了吧?
上面只是我随意猜测的,具体情况不知道...实在太深奥了!看不懂...
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
回2楼,是我搞错了,我只拿一个IAT来举例,改的有点多,改错了个地方。
这个不复杂,IAT加密相当简单,会手动脱壳的都能看懂。。。。。
另,我本来也怀疑Virtualalloc函数有问题,但是我第三种IAT加密方法不会出错,Virtualalloc函数申请内存空间 在这两条路径前面就调用了。问题核心其实在于:
1、第三种方法为什么不出错,第一种方法为什么大多数错但又必定有正确的几率。第三种比第一种少了把 程序所申请内存地址 的值压入堆栈的操作。
2、“如果我把17D8F38D改为00000000。这样的话异或等同与无操作。在003A007B处就存放系统API的真实地址7C812FAD。这种情况是不会出错的。”的本质就是程序申请的内存空间本身如果有数据被修改,很可能出错;而其他程序没这样的问题。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
3、我还有一种IAT简单加密方案,该软件也会出错,但是出错几率为40%左右,而且往往第一次会正确显示出程序界面,如果有人有兴趣我也可以贴出来。
但是我第三种IAT加密方法不会出错
到底第三种方案会不会出错?
我平常主要工作是编程,没怎么玩过破解,所以脱壳这方面还不是很熟悉...
不过,我很有兴趣,楼主还是把第三种方案的代码贴出来吧
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
等下我贴第二种,就是我弄的比较复杂了,一时不好说清楚,郁闷。先请教下如何引用回复里某一句话,半天没弄出来。汗
说明下:我的第一种加密方法正确率10%,第二种是40%-50%,第三种是100%。我贴的是第一种和第三种。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
把你要引用的话放在 (QUOTE) 与 (/QUOTE) 之间 注:小括号换成中括号
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
【QUOTE】你的错误大概是由Virtualalloc函数引起的吧?你的dwSize参数最好按页的整数倍来申请,防止发生意料;【/QUOTE)】
按照你的办法,我发现正确率提高到15%-20%,出界面同时出错误警告的的情况也提高到15%-20%。真的有效果,我多次统计过。但是这个貌似不是主要原因。
这个还是没引用到啊
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
你那是全角的中括号,,,换成英文半角的
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
中文半角【】中文全角【】
英文半角[] 英文全角[]
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
,防止发生意料;【/QUOTE)】
QUOTE后面多了个 )
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
把dwSize改成 10000h 试试?10000h正好是64KB
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
IAT加密简单方法二(更正):
Data_2_for_IAT DB 53h, ;push ebx
0E8h,00h,00h,00h,00h, ;call $+4h
5Bh, ;pop ebx
83h,0EBh,06h, ;sub ebx,6h
31h,5Bh,10h ;xor dword ptr[ebx+10h],ebx
DB 0ebh,001h,0e8h, ;***花指令
84h,ADh,15h,81h,7Fh, ;(mov eax,7C812FAD) 前4个字节经XOR加密后形成的乱码
31h,5Bh,10h ;xor dword ptr[ebx+10h],ebx
DB 5Bh, ;pop ebx
0FFh,0E0h, ;jmp eax
0E8h ;***花指令
假设Data_2_for_IAT在内存地址为003A005C
其中xor dword ptr[ebx+10h],ebx
mov eax,7CBB2FF1h
xor dword ptr[ebx+10h],ebx
jmp eax
就是有用的代码,ebp寄存器只是用来存放本重指向代码内存首地址003A005C 。还原用(84h,ADh,15h,81h) XOR (5Ch,00h,3Ah,00h)加上后面的字节7Fh,形成指令mov eax,7C812FAD,赋值給eax,然后重新加密成乱码,然后跳转到eax继续执行.
方法二与方法一的主要区别在于它虽然修改所申请内存空间的代码,但是它并不读取数据(就是没有mov eax,dword ptr[xxxxxxxx]这样的代码)。另外它其实修改了eax的值,关于修改eax值导致的一系列问题,我们暂时不关心,这个程序修改eax值是不会出错的。
PS:追风貌似很少查看别人再次编辑的内容,而我很喜欢重新编辑。。。悲剧,请看7楼。试过,有作用。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
把Virtualalloc函数的dwSize由17500h取整为20000h后。显示界面和显示错误警告同时出现的情况多了起来,出现了一次应该是错误报告的情况,如图:
|
能力值:
( LV9,RANK:180 )
|
-
-
14 楼
[QUOTE=怀特迈恩;720719]xor dword ptr[ebx+10h],ebx[/QUOTE]
改成 +11h 试试
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
晕,楼上... 我慢了一步
上图对应你的代码应该是:
003A005C 53 push ebx
003A005D E8 00000000 call 003A0062
003A0062 5B pop ebx
003A0063 83EB 06 sub ebx, 6 ;此时ebx应该为003A005C
003A0066 315B 10 xor dword ptr [ebx+10], ebx ;ebx+10为003A006C
003A0069 EB ;花指令
003A006A 01 ;花指令
003A006B E8 ;花指令
003A006C B8 F12FBB7C mov eax, 7CBB2FF1
003A0071 315B 10 xor dword ptr [ebx+10], ebx
;此处应该为[COLOR="Red"]xor dword ptr [ebx+11], ebx [/COLOR][ebx+10]取dword 为[COLOR="red"]B8 F1 2F BB[/COLOR]了
003A0074 5B pop ebx
003A0075 FFE0 jmp eax
也不知道是否这个原因...
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
哦,14楼果然发现我说错了。这个代码写的比较早了,我刚又看了下处理代码。
我是用ebx与dword ptr[ebx+10h]异或的。而dword ptr[ebx+10h]是0B8h,F1h,2Fh,0BBh,加上后面一个字节7Ch形成一条汇编指令。 mov eax,7CBB2FF1h 是5字节的指令,前4个字节被XOR加密了,我们还原出来指令,还原结果就是mov eax,7C812FADh. 有点乱,马上第二种方法的说明,抱歉,需要重起下机器,等下再贴。
简单说下,这里没有错的。如果需要,我可以给出加壳软件的源代码。以《加密与解密第三版》第16章的那个代码为蓝本,增加IAT加密功能。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
不是这个原因...只能是VirtualAlloc了...
写入内存后,用VirtualProtect修改其属性为只读试试?
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
写入内存后,用VirtualProtect修改其属性为只读试试?
这样肯定不行,因为我申请的内存空间里面有数据有代码还要修改自身(或读取自身),所以属性必须设置为可读可写可执行,就是READWRITE.
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
搞不懂了...
|
能力值:
( LV9,RANK:180 )
|
-
-
20 楼
我认为放出 已被加壳&会出错 的exe
帮助较大
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
我在弄代码,马上放出壳源代码,加壳前的EXE文件。由于《解密与解密第三版》第16章的加壳源码有1个错误1个BUG,我已经把IAT加密代码添加完成,正在确认哪里出现问题,稍等。
|
能力值:
( LV9,RANK:180 )
|
-
-
22 楼
源代码应该没人会去看
加壳前'后(Error) 的东西好玩一点
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
就一点点代码;源代码比较简单,跟OD里的汇编代码高度相似,因为主要就是写汇编代码。
我主要是怕我想当然了,写的代码跟我想的不一样。。。。。 改好了,见一楼。
|
能力值:
( LV9,RANK:180 )
|
-
-
24 楼
Path名称 及 Filename 皆全英文试试
(你之前的图显示你东西放在 日文路径 名下的CrackTest\)
cpuBBz_152.2000(加壳后).exe 我这里跑得好好的
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
看看跟大哥的kx还差多少
|
|
|