Quantcast
Channel: 看雪安全论坛
Viewing all 9556 articles
Browse latest View live

【求助】11为何重载dll后内存不为read?


请问安卓和C++服务端数据结构通讯如何解决?

$
0
0
客户端是安卓,服务端是C++,服务端代码固定,通过数据结构跟客户端通讯,现在写安卓端,安卓如何处理C++发来是数据结构格式的包呢?我看了下,说是可以定义只包含数据的类,或者使用安卓的数据结构库什么的,或者使用SO文件,请问还有什么其他方法,或者三种方法里,那种更好?

调试逆向 【求助】一段利用LDR遍历进程加载模块代码的疑问

$
0
0
void EnumModule()
{
DWORD *PEB = NULL,
*Ldr = NULL,
*Flink = NULL,
*p = NULL,
*BaseAddress = NULL,
*FullDllName = NULL;

// 定位PEB
__asm
{
// fs位置保存着teb
// fs:[0x30]位置保存着peb
mov eax,fs:[0x30]
mov PEB,eax
}

// 得到LDR
Ldr = *( ( DWORD ** )( ( unsigned char * )PEB + 0x0c ) );

// 第二条链表
Flink = *( ( DWORD ** )( ( unsigned char * )Ldr + 0x14 ) );
p = Flink;

p = *( ( DWORD ** )p );

while ( Flink != p )
{
BaseAddress = *( ( DWORD ** )( ( unsigned char * )p + 0x10 ) );
FullDllName = *( ( DWORD ** )( ( unsigned char * )p + 0x20 ) );

if ( BaseAddress == 0 )
{
break;
}

printf("ImageBase = %08x \r\n ModuleFullName = %S \r\n",
BaseAddress, (unsigned char *)FullDllName);

p = *( ( DWORD ** )p );
}
}
///////////
这段代码能实现通过teb---peb---ldr来遍历进程加载模块的功能。但小弟水平太差,有点看不懂。这段代码它是如何运转的呢?尤其是 p = *( ( DWORD ** )p ); 这是进行了一个什么操作?而且在while循环中,也没有我认为的指向下一个链表的操作,是怎么执行循环的呢(我设断点调试了,实际是p = *( ( DWORD ** )p );会改变p的值)?

【求助】各位在发求助帖后,是不是经常盯着提醒看?

【求助】ring3下可以修改的,而且ring0可以通过PsGetCurrentProcess进而获取修改的东西有哪些?

$
0
0
如题????
貌似eprocess不能ring3下访问的是么?

【原创】仍个上半年写的某游戏XXX玩意

$
0
0
亲~搞的是倭寇,自己拿去玩吧。:p:

亲~密码论坛短信,我会给你发。

这个游戏有比较恶心的校验,尝试HDHOOK...

上传的附件
文件类型: rar GAME_MM.rar (13.3 KB)

【原创】扔个台服某游戏的登陆协议

$
0
0
亲~拿去做脱机吧,组包很简单,交互KEY而已,协议已经完全还原出来了。:p:

地图自己去分析,亲~台服有恶心的SXX保护,注意哦~~:cool:

上传的附件
文件类型: rar XXXLogin.rar (1.7 KB)

【原创】利用OD逻辑进行反调试

$
0
0
这几天忽然发现在部分进程的GetMessageA下硬件断点,然后删除断点后再执行,进程抛出STATUS_SINGLE_STEP错误.然后仔细研究下发现这涉及一个OD逻辑问题,可以做为攻击点.

首先是代码
代码:

VOID WINAPI CheckThread(LPVOID lp)
{
    while (TRUE){
                Sleep(3000);
                DWORD dwPorcet;
                VirtualProtect((PVOID)0x401000, 5, PAGE_EXECUTE_READWRITE, &dwPorcet);
                DWORD dwAdder = *(DWORD*)0x401000;  //保护地址
                PostMessageA(NULL,NULL,NULL,NULL);    //保护函数过程
        }
}

for (int i = 0; i < 15;i++)
{
        Sleep(10);
        ::CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)CheckThread, this, NULL, NULL);
}

代码很简单,线程数量其实也不需要那么多,但是主要的功能就是保护PostMessageA函数执行过程跟0x401000地址不被调试器下执行或者读写硬件断点!
如果存在硬断,那么硬断触发后,删除断点,继续运行.进程将出现TATUS_SINGLE_STEP错误然后崩溃退出.


附件 92682

当初发现这个问题的时候为了弄清这一切,从异常分发内核调试分发整个过程都调试了个遍,最后发现其实是因为调试器OD自己存在逻辑错误导致的!一路可谓兜兜转转.

大致原因是OD在删除硬件断点的时候并没检测是否设置成功.导致OD已经确定删除断点,断点位置OD已经不再处理,但是线程的调试寄存器依然有效,结果存在无人管理的调试寄存器,最后触发STATUS_SINGLE_STEP异常时OD不进行处理而把异常抛给系统,系统又抛给程序,程序拒绝处理,最后导致进程崩溃!

OD删除调试寄存器伪代码如下
代码:

signed int __cdecl Deletehardwarebreakpoint(signed int a1)
{
 
  CONTEXT Context; // [sp+1Ch] [bp-2CCh]@14
  do{
          SuspendThread(*v5);
          v4 = dword_ADFC80;
          ++v1;
            v5 += 403;
      } while ( v1 < dword_ADFC80 );

      do
      {
        Context.ContextFlags = 0x10010u;
        if ( GetThreadContext(*v6, &Context) )
        {
          Context.Dr0 = dword_AE7240[0];
          Context.Dr2 = dword_AE7278;
          Context.Dr1 = dword_AE725C;
          Context.Dr3 = dword_AE7294;
          ..................
          while ( v9 < 32 );
          Context.Dr7 = v7;
          SetThreadContext(*v19, &Context);//简单的设置,并没检查是否设置成功
        }
      }
      do{
          ResumeThread(*v17);
          ++v16;
          v17 += 403;
        } while ( v16 < dword_ADFC80 );
    return 0;
}

X64位下测试有效果,其他系统请大家自行测试!

规避这个异常错误可以在设置里把忽略单步异常的勾子去掉,但这样又会导致超原始单步异常检测OD方法的生效!

这个逻辑错误貌似一直存在,可是好像一直无人注意,也从未有人考虑修复这个错误!

上传的图像
文件类型: jpg 未命名.jpg (52.9 KB)

【推荐】浪曦生产型ERP课程

$
0
0
http://i1.tietuku.com/8b526f8ed57060e7s.jpg

第一阶段:
MVC3+EF4深入使用与ERP常规功能阶段。技术内容:通过自定义支架模板快速生成源代码(3分钟一个简单的增删改查),唯一标示存储过程以及ef的调用方式,mvc3几乎全部应用,复杂参数接收(普通,类,异步),ERP常规模块:销售,采购,库存,人力资源,客户关系,产品信息,生产子系统中的派工,生产请求,工艺路线,初步BOM。
通过学习本阶段课程,可以几乎掌握MVC3与EF4.1在开发常规系统中所使用技术的方方面面,并且对ERP系统有了一定程度的了解,第一阶段涉及30多张表,有一定的业务复杂程度,学习完成后,对于一定规模的软件开发将具备非常好的心理优势与实战经验。
第二阶段:
ERP核心业务阶段。ERP的生产系统中的核心MRP运算,MPS,CRP,完善的树形BOM, SCM重新排列部分模块,财务系统中的固定资产管理,费用管理,工资系统管理。
期间详细讲解了如何通过存储过程等相关技术实现MRP以及其他运算(CRP本系统讲解粗能力运算),另外,针对相对复杂的MRP运算,课程提供详细,形象,生动的MRP计算原理之后再进行编码讲解。
通过学习本阶段课程,将大大提高针对目前人才缺口不断扩大的ERP的核心业务能力,原来看不懂的纯ERP理论方面的书籍,发现通过手动开发ERP核心业务模块后能够理解并看懂了。
(本阶段业务难度复杂,但课程总量不会超过第一阶段)
第三阶段:
OA与工作流开发阶段。本阶段提供基于VML+JS的在线工作流设计器,通过自定义表单绑定自定义工作流以及相应的OA常用功能。本阶段将带领着大家从无到有的完成一个复杂的OA与工作流子系统。
通过学习本阶段课程,提高了自定义工作流的开发能力,由于自定义工作流并不局限在OA中,所以本次开发的源码亦可以应用于未来的系统中,或者根据技术需要根据目前学习到得思想进行代码重构。
第四阶段:
移动客户端开发阶段。本阶段提供Jquery Moblie和Wp7开发ERP某子系统的全程视频,其中包含免费的Jquery Mobile以及Wp7的从零开始的基础视频。
通过学习本阶段课程,不但提高了针对WP7纯移动端的开发,亦提高了针对服务端基于Adobe强力支持的Html5技术的Jquery Mobile的服务端自适应手机界面的开发能力。


课程总目录:
1 vs2010及MVC3,EF4.1的安装与入门实例
2 vs2010及MVC3,EF4.1的安装与入门实例二
3 通过支架模板自动生成详解
4 完成通过支架模板自动生成及分页初步
5 实现基于MVC3与EF4.1的分页与分页查询
6 MVC3下拉菜单与级联查询
7 批量删除与树形数据字典的实现
8 批量删除与树形数据字典的实现二
9 批量删除与树形数据字典的实现三
10 批量删除与树形数据字典的实现四
11 人力资源子系统的实现
12 人力资源子系统的实现二
13 人力资源子系统的实现三
14 人力资源子系统的实现四
15 生成不同子系统唯一编码的存储过程
16 客户关系子系统
17 客户关系子系统二
18 产品子系统
19 产品子系统二
20 销售订单子系统
21 销售订单子系统二
22 销售订单子系统三
23 销售订单子系统四
24 销售订单子系统五
25 销售管理子系统
26 采购管理子系统
27 库存管理子系统
28 库存管理子系统二
29 库存管理子系统三
30 库存管理子系统四
31 财务管理子系统
32 财务管理子系统二
33 生产管理子系统
34 生产管理子系统二【第一阶段结束】
35 BOM(物料清单)的实现
36 BOM(物料清单)的实现二
37 BOM(物料清单)的实现三
38 MPS (主生产计划)的实现
39 MPS (主生产计划)的实现二
40 MPS (主生产计划)的实现三
41 MRP运算理论与实例
42 MRP运算基本算法实现
43 MRP运算基本算法实现二
44 在ERP系统中实现MRP运算
45 在ERP系统中实现MRP运算二
46 在ERP系统中实现CRP运算
47 在ERP系统中实现CRP运算二
48 在ERP系统中实现CRP运算三
49 固定资产管理模块的实现
50 固定资产管理模块的实现二
51 固定资产管理模块的实现三
52 员工工资管理
53 员工工资管理二
54 员工工资管理三
55 员工工资管理四
56 员工工资管理五
57 细粒度权限管理模块的实现
58 细粒度权限管理模块的实现二
59 细粒度权限管理模块的实现三(二阶段结束)
60 Internet邮件客户端的实现
61 Internet邮件客户端的实现二
62 Internet邮件客户端的实现三
63 Internet邮件客户端的实现四
64 Internet邮件客户端的实现五
65 Internet邮件客户端的实现六
66 内部邮件模块的实现
67 内部邮件模块的实现二
68 表单管理-表单智能设计器的实现
69 表单管理-表单智能设计器的实现二
70 表单管理-表单智能设计器的实现三
71 表单管理-表单智能设计器的实现四
72 表单管理-表单智能设计器的实现五
73 表单管理-表单智能设计器的实现六
74 自定义工作流初步
75 兼容多浏览器的自定义工作流程图
76 兼容多浏览器的自定义工作流程图二
77 兼容多浏览器的自定义工作流程图三
78 兼容多浏览器的自定义工作流程图四
79 兼容多浏览器的自定义工作流程图五
80 兼容多浏览器的自定义工作流程图六
81 工作流客户端操作功能实现初步
82 工作流客户端操作功能实现初步二
83 工作流客户端操作功能实现初步三
84 工作流客户端操作功能实现初步四
85 工作流客户端操作功能实现初步五
86 兼容多浏览器的表单数据存储
87 支持会签的工作流客户端功能实现
88 支持会签的工作流客户端功能实现二
89 支持会签的工作流客户端功能实现三
90 支持会签的工作流客户端功能实现四
91 支持会签的工作流客户端功能实现五
92 支持会签的工作流客户端功能实现六
93 自定义条件决定工作流走向功能实现
94 自定义条件决定工作流走向功能实现二
95 日程管理模块的实现(第三阶段结束)
96 WCF入门
97 通过实例理解WCF中的核心概念
98 通过WCF实现CS客户端上传功能
99 通过WCF实现CS客户端上传功能二
100 WCF的消息交换模式
101 WCF与MSMQ
102 WCF分布式事务处理
103 WCF分布式事务处理二
104 WCF安全
105 WCF安全二
106 WCF安全三
107 WCF异常
108 WCF与AJAX
109 WCF路由服务
110 WCF 服务发现


http://pan.baidu.com/s/1pJI5Wcb

【求助】大侠帮忙看看这个怎样编写内存注册机 此贴封贴,已经解决,谢谢!

$
0
0
用keymaker编写内存注册机不能显示正确的注册码,求大侠帮助?






004D5B7C /. 55 push ebp
004D5B7D |. 8BEC mov ebp, esp
004D5B7F |. B9 08000000 mov ecx, 8
004D5B84 |> 6A 00 /push 0
004D5B86 |. 6A 00 |push 0
004D5B88 |. 49 |dec ecx
004D5B89 |.^ 75 F9 \jnz short 004D5B84
004D5B8B |. 51 push ecx
004D5B8C |. 53 push ebx
004D5B8D |. 56 push esi
004D5B8E |. 57 push edi
004D5B8F |. 8945 FC mov dword ptr [ebp-4], eax
004D5B92 |. 33C0 xor eax, eax
004D5B94 |. 55 push ebp
004D5B95 |. 68 545E4D00 push 004D5E54
004D5B9A |. 64:FF30 push dword ptr fs:[eax]
004D5B9D |. 64:8920 mov dword ptr fs:[eax], esp
004D5BA0 |. 8D55 F4 lea edx, dword ptr [ebp-C]
004D5BA3 |. 8B45 FC mov eax, dword ptr [ebp-4]
004D5BA6 |. 8B80 20030000 mov eax, dword ptr [eax+320]
004D5BAC |. E8 FF97FEFF call 004BF3B0
004D5BB1 |. 8B45 F4 mov eax, dword ptr [ebp-C] ; 假注册马
004D5BB4 |. 8D55 F8 lea edx, dword ptr [ebp-8]
004D5BB7 |. E8 0C35F3FF call 004090C8
004D5BBC |. 8B45 F8 mov eax, dword ptr [ebp-8] ; 假注册马
004D5BBF |. 50 push eax
004D5BC0 |. 8D55 E4 lea edx, dword ptr [ebp-1C]
004D5BC3 |. 8B45 FC mov eax, dword ptr [ebp-4] ; 假注册马
004D5BC6 |. 8B80 18030000 mov eax, dword ptr [eax+318]
004D5BCC |. E8 DF97FEFF call 004BF3B0
004D5BD1 |. 8B45 E4 mov eax, dword ptr [ebp-1C] ; 单位名
004D5BD4 |. 8D55 E8 lea edx, dword ptr [ebp-18]
004D5BD7 |. E8 EC34F3FF call 004090C8
004D5BDC |. FF75 E8 push dword ptr [ebp-18] ; 单位名
004D5BDF |. 8D55 E0 lea edx, dword ptr [ebp-20]
004D5BE2 |. 8B45 FC mov eax, dword ptr [ebp-4]
004D5BE5 |. 8B80 1C030000 mov eax, dword ptr [eax+31C]
004D5BEB |. E8 C097FEFF call 004BF3B0
004D5BF0 |. FF75 E0 push dword ptr [ebp-20] ; 机器马
004D5BF3 |. 68 6C5E4D00 push 004D5E6C ; -
004D5BF8 |. 8D55 D8 lea edx, dword ptr [ebp-28]
004D5BFB |. 8B45 FC mov eax, dword ptr [ebp-4]
004D5BFE |. 8B80 24030000 mov eax, dword ptr [eax+324]
004D5C04 |. E8 A797FEFF call 004BF3B0
004D5C09 |. 8B45 D8 mov eax, dword ptr [ebp-28] ; 连接数
004D5C0C |. 8D55 DC lea edx, dword ptr [ebp-24]
004D5C0F |. E8 B434F3FF call 004090C8
004D5C14 |. FF75 DC push dword ptr [ebp-24] ; 连接数
004D5C17 |. 8B45 FC mov eax, dword ptr [ebp-4]
004D5C1A |. 8B80 28030000 mov eax, dword ptr [eax+328]
004D5C20 |. 8B10 mov edx, dword ptr [eax]
004D5C22 |. FF92 78010000 call dword ptr [edx+178]
004D5C28 |. 83C4 F8 add esp, -8 ; /
004D5C2B |. DD1C24 fstp qword ptr [esp] ; |Arg1 (8 字节)
004D5C2E |. 9B wait ; |
004D5C2F |. 8D55 D4 lea edx, dword ptr [ebp-2C] ; |
004D5C32 |. B8 785E4D00 mov eax, 004D5E78 ; |yyyy-MM-dd
004D5C37 |. E8 7466F3FF call 0040C2B0 ; \Se.0040C2B0
004D5C3C |. FF75 D4 push dword ptr [ebp-2C] ; 到期日期
004D5C3F |. 8D45 EC lea eax, dword ptr [ebp-14]
004D5C42 |. BA 05000000 mov edx, 5
004D5C47 |. E8 A4EFF2FF call 00404BF0
004D5C4C |. 8B45 EC mov eax, dword ptr [ebp-14] ; 一串字符串包含单位名\机器马\到期日期
004D5C4F |. 8D55 F0 lea edx, dword ptr [ebp-10]
004D5C52 |. E8 5D14FEFF call 004B70B4
004D5C57 |. 8B55 F0 mov edx, dword ptr [ebp-10] ; 真注册马出现位置
004D5C5A |. 58 pop eax ; 00c434a0
004D5C5B |. E8 1CF0F2FF call 00404C7C
004D5C60 |. 74 25 je short 004D5C87 ; 未挑砖
004D5C62 |. BA 30000000 mov edx, 30
004D5C67 |. B8 8C5E4D00 mov eax, 004D5E8C ; 请输入正确的注册码。
004D5C6C |. E8 270BFEFF call 004B6798
004D5C71 |. 8B45 FC mov eax, dword ptr [ebp-4]
004D5C74 |. 8B80 20030000 mov eax, dword ptr [eax+320]
004D5C7A |. 8B10 mov edx, dword ptr [eax]
004D5C7C |. FF92 C4000000 call dword ptr [edx+C4]
004D5C82 |. E9 5B010000 jmp 004D5DE2
004D5C87 |> 55 push ebp
004D5C88 |. E8 F3FAFFFF call 004D5780
004D5C8D |. 59 pop ecx
004D5C8E |. 8D45 D0 lea eax, dword ptr [ebp-30]




004D5C57 |. 8B55 F0 mov edx, dword ptr [ebp-10] ; 真注册马出现位置

堆栈 [0012F964]=00A490F8 (00A490F8), ASCII "Z5XUZMEZ1WOXZDX0118"
eax=0012F958 ;出现的真注册码



http://oi60.tinypic.com/nb6ds3.jpg


急!!!!!

编写内存注册机,求大侠帮助?

$
0
0
用keymaker编写内存注册机不能显示正确的注册码,求大侠帮助?






004D5B7C /. 55 push ebp
004D5B7D |. 8BEC mov ebp, esp
004D5B7F |. B9 08000000 mov ecx, 8
004D5B84 |> 6A 00 /push 0
004D5B86 |. 6A 00 |push 0
004D5B88 |. 49 |dec ecx
004D5B89 |.^ 75 F9 \jnz short 004D5B84
004D5B8B |. 51 push ecx
004D5B8C |. 53 push ebx
004D5B8D |. 56 push esi
004D5B8E |. 57 push edi
004D5B8F |. 8945 FC mov dword ptr [ebp-4], eax
004D5B92 |. 33C0 xor eax, eax
004D5B94 |. 55 push ebp
004D5B95 |. 68 545E4D00 push 004D5E54
004D5B9A |. 64:FF30 push dword ptr fs:[eax]
004D5B9D |. 64:8920 mov dword ptr fs:[eax], esp
004D5BA0 |. 8D55 F4 lea edx, dword ptr [ebp-C]
004D5BA3 |. 8B45 FC mov eax, dword ptr [ebp-4]
004D5BA6 |. 8B80 20030000 mov eax, dword ptr [eax+320]
004D5BAC |. E8 FF97FEFF call 004BF3B0
004D5BB1 |. 8B45 F4 mov eax, dword ptr [ebp-C] ; 假注册马
004D5BB4 |. 8D55 F8 lea edx, dword ptr [ebp-8]
004D5BB7 |. E8 0C35F3FF call 004090C8
004D5BBC |. 8B45 F8 mov eax, dword ptr [ebp-8] ; 假注册马
004D5BBF |. 50 push eax
004D5BC0 |. 8D55 E4 lea edx, dword ptr [ebp-1C]
004D5BC3 |. 8B45 FC mov eax, dword ptr [ebp-4] ; 假注册马
004D5BC6 |. 8B80 18030000 mov eax, dword ptr [eax+318]
004D5BCC |. E8 DF97FEFF call 004BF3B0
004D5BD1 |. 8B45 E4 mov eax, dword ptr [ebp-1C] ; 单位名
004D5BD4 |. 8D55 E8 lea edx, dword ptr [ebp-18]
004D5BD7 |. E8 EC34F3FF call 004090C8
004D5BDC |. FF75 E8 push dword ptr [ebp-18] ; 单位名
004D5BDF |. 8D55 E0 lea edx, dword ptr [ebp-20]
004D5BE2 |. 8B45 FC mov eax, dword ptr [ebp-4]
004D5BE5 |. 8B80 1C030000 mov eax, dword ptr [eax+31C]
004D5BEB |. E8 C097FEFF call 004BF3B0
004D5BF0 |. FF75 E0 push dword ptr [ebp-20] ; 机器马
004D5BF3 |. 68 6C5E4D00 push 004D5E6C ; -
004D5BF8 |. 8D55 D8 lea edx, dword ptr [ebp-28]
004D5BFB |. 8B45 FC mov eax, dword ptr [ebp-4]
004D5BFE |. 8B80 24030000 mov eax, dword ptr [eax+324]
004D5C04 |. E8 A797FEFF call 004BF3B0
004D5C09 |. 8B45 D8 mov eax, dword ptr [ebp-28] ; 连接数
004D5C0C |. 8D55 DC lea edx, dword ptr [ebp-24]
004D5C0F |. E8 B434F3FF call 004090C8
004D5C14 |. FF75 DC push dword ptr [ebp-24] ; 连接数
004D5C17 |. 8B45 FC mov eax, dword ptr [ebp-4]
004D5C1A |. 8B80 28030000 mov eax, dword ptr [eax+328]
004D5C20 |. 8B10 mov edx, dword ptr [eax]
004D5C22 |. FF92 78010000 call dword ptr [edx+178]
004D5C28 |. 83C4 F8 add esp, -8 ; /
004D5C2B |. DD1C24 fstp qword ptr [esp] ; |Arg1 (8 字节)
004D5C2E |. 9B wait ; |
004D5C2F |. 8D55 D4 lea edx, dword ptr [ebp-2C] ; |
004D5C32 |. B8 785E4D00 mov eax, 004D5E78 ; |yyyy-MM-dd
004D5C37 |. E8 7466F3FF call 0040C2B0 ; \Se.0040C2B0
004D5C3C |. FF75 D4 push dword ptr [ebp-2C] ; 到期日期
004D5C3F |. 8D45 EC lea eax, dword ptr [ebp-14]
004D5C42 |. BA 05000000 mov edx, 5
004D5C47 |. E8 A4EFF2FF call 00404BF0
004D5C4C |. 8B45 EC mov eax, dword ptr [ebp-14] ; 一串字符串包含单位名\机器马\到期日期
004D5C4F |. 8D55 F0 lea edx, dword ptr [ebp-10]
004D5C52 |. E8 5D14FEFF call 004B70B4
004D5C57 |. 8B55 F0 mov edx, dword ptr [ebp-10] ; 真注册马出现位置
004D5C5A |. 58 pop eax ; 00c434a0
004D5C5B |. E8 1CF0F2FF call 00404C7C
004D5C60 |. 74 25 je short 004D5C87 ; 未挑砖
004D5C62 |. BA 30000000 mov edx, 30
004D5C67 |. B8 8C5E4D00 mov eax, 004D5E8C ; 请输入正确的注册码。
004D5C6C |. E8 270BFEFF call 004B6798
004D5C71 |. 8B45 FC mov eax, dword ptr [ebp-4]
004D5C74 |. 8B80 20030000 mov eax, dword ptr [eax+320]
004D5C7A |. 8B10 mov edx, dword ptr [eax]
004D5C7C |. FF92 C4000000 call dword ptr [edx+C4]
004D5C82 |. E9 5B010000 jmp 004D5DE2
004D5C87 |> 55 push ebp
004D5C88 |. E8 F3FAFFFF call 004D5780
004D5C8D |. 59 pop ecx
004D5C8E |. 8D45 D0 lea eax, dword ptr [ebp-30]




004D5C57 |. 8B55 F0 mov edx, dword ptr [ebp-10] ; 真注册马出现位置

堆栈 [0012F964]=00A490F8 (00A490F8), ASCII "Z5XUZMEZ1WOXZDX0118"
eax=0012F958 ;出现的真注册码



http://oi60.tinypic.com/nb6ds3.jpg


急!!!!!

拦截到软件狗的KEY1 KEY2

$
0
0
拦截到软件狗的KEY1 KEY2,请问大侠这2个key是作啥用? 是DES 的key?

我自己用des计算器,密钥按key1 key2,推出的数据咋和软件的数据不同? 有啥奥妙?

Dog Type: SafeNet SoftDog(软件狗 USB)
1Function: Get_Cert key1=26873FDC Key2=38D10398 Addr=0xF0 bindkey=[C4 7E B2 28 ] Result: 0
2Function: Get_SerialNo SerialNo=204112 Result: 0
3Function: Read_dog DogAddr=0x08 DogBytes=8 data=[ 33 32 46 34 39 38 34 35 ] Result: 0
4Function: Get_Cert key1=26873FDC Key2=38D10398 Addr=0xF0 bindkey=[C4 7E B2 28 ] Result: 0
5Function: Get_SerialNo SerialNo=204112 Result: 0
6Function: Read_dog DogAddr=0x08 DogBytes=8 data=[ 33 32 46 34 39 38 34 35 ] Result: 0
7Function: Get_Cert key1=26873FDC Key2=38D10398 Addr=0xF0 bindkey=[C4 7E B2 28 ] Result: 0
8Function: Get_SerialNo SerialNo=204112 Result: 0
9Function: Read_dog DogAddr=0x08 DogBytes=8 data=[ 33 32 46 34 39 38 34 35 ] Result: 0
10Function: Get_Cert key1=26873FDC Key2=38D10398 Addr=0xF0 bindkey=[C4 7E B2 28 ] Result: 0
11Function: Get_SerialNo SerialNo=204112 Result: 0
12Function: Read_dog DogAddr=0x08 DogBytes=8 data=[ 33 32 46 34 39 38 34 35 ] Result: 0

key:

0815F148 98 03 D1 38 DC 3F 87 26

outbuffer:

0815ED60 07 16 D9 85 1B E4 0E 4D FB 3B 24 84 93 5F 53 DC
0815ED70 58 74 FA 50 6D EE F7 A5 02 75 DB 4B 6E 5A 1B 9C
0815ED80 48 C1 E1 FB C5 DA B1 22 F8 CA C9 24 4D 96 9A 05
0815ED90 10 1E 30 91 2F FD DF 2D ED 97 BB 19 CD DE 1E 1A
0815EDA0 D8 A6 61 C1 89 E1 66 FE 78 CF DD 18 1C 71 96 09
0815EDB0 C4 35 D4 65 59 9C 76 30 29 48 F7 71 1A 0C 3E 7B
0815EDC0 B3 27 75 E7 8C AC 9C 0D 02 FA E0 47 68 58 C9 80
0815EDD0 5D 31 8D 61 BF AD E5 A8 43 51 72 F6 4D 0C 67 26

des 解密前 前0x10位:

0815EA14 84 24 3B FB DC 53 5F 93 
0815EA24 85 D9 16 07 4D 0E E4 1B

des 解密后 前0x10位:

0815EA14 A0 3E 90 A0 7B 32 90 A0
0815EA24 2A EC 2A F9 A0 3E 61 CA

【求助】如何获取驱动加载基址和IAT?

$
0
0
如何获取驱动加载基址和IAT?说的是程序实现,用哪个函数?
还有就是如何枚举进程加载的驱动?及其所在的内存物理地址?

【原创】我又来拉, 大家来找Key吧.

$
0
0
KEY是 4个4字节大小的 十六进制数,比如:
1def4311 -- 12354673 -- 119dedac -- fe17654a

如果KEY正确, 将会在下面的Edit中打印:
Key正确:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
否则打印:
Key错误.

低强度虚拟机, 没有加花, 没有混淆, 中间代码为完整的机器码, 不加花.
没有动PE头, 确保无阻碍的分析, 因此虚拟机的导出函数你只需要直接在
LoadLibrary函数下断, 即可跳过入口的分析。

希望有前辈能还原出原始机器码并给于指导. 晚辈在此谢过.

能否在没找到KEY的生成方式前直接打印出正确的信息?
能否还原3条以上原始机器码?


伪装的伤痛.

上传的附件
文件类型: 7z test.7z (2.45 MB)

【求助】刚刚遇到一个前面是md5,后面跟着一串字符

$
0
0
+--------------------------------------------------------------------------------------------+
| password                                                                                                          |
+--------------------------------------------------------------------------------------------+
| f8d42bef4e46988cd7b0856c108722b5:Pr2w42cgArnOxjE2ec3Z4mxnSx1jDTqT       |
| a2dd3257ba28be83b05fef76c8547e44:Mf4DGEtx8Uz5QOqDIuvELnMZuzyjFmxT     |
| a9b76b154ce1961722f5da0dd2f14705:xpA9PzWvLYb328giDnwE43b5v71Fdhyh      |
| 17af15ca937b2fc213a2ad2749fda1fc:AkKLL9EN4l093s48YcHoA9AggYykrvpJ           |
+--------------------------------------------------------------------------------------------+



求大牛解答:(:

【求助】读写64位应用程序内存的问题

$
0
0
小弟最近在做一个项目,要读取一个64位程序的内存数据,发现起始地址是140000000,使用ReadProcessMemory读取一直返回0,求大神支招,百度谷歌搜不到有帮助的帖子,还望大神指点一二啊~跪谢了!

【原创】无源码加解密实现 && NDK Native Hook

$
0
0
帖子名字取得有点搓,请各位见谅。
---------------------------------------
上回小弟小小研究了一番有源码so简单加解密方式。像各种加固软件一样,是拿不到别人的源码的。经过小弟一番折腾,实现了简单粗暴的无源码加解密方法。在此过程中,某晚YY到native method,有了一种简单的native method hook思路。看到论坛没有类似帖子,故来一帖,也作为学习笔记。限于小弟水平,肯定会有不少疏漏和错误之处,还请各位大牛指正,感激不尽!
---------------------------------------
一、  概述
在上个帖子 http://bbs.pediy.com/showthread.php?t=191649 中介绍了so加解密实现的基本思路和有源码自加解密实现。仅仅实现有源码的方式,肯定不是我们想要的。下面介绍一种无源码的加解密实现和简单的Native method hook思路。

二、  无源码加解密实现
在上个简单粗暴的so加解密帖子中,介绍了基于section和特定目标函数(或数据区)加解密实现思路。加密步骤中,我们并不需要被加密so文件的源码,而需要源码原因是:解密的时机放在了so文件被linker加载执行.init_array中的代码过程中,实现so加载时的自解密。把解密代码插到.init_array中,自然需要源码。其实,只要在函数被执行前进行解密,都是可以的。由于所有被加载的so处于同一进程中,故可以将解密函数放在另一个so执行,即实现无源码解密。

将解密函数放在另一个so中,只需保证解密函数在被加密函数执行前执行即可。和其他so一样,解密so的加载也放在类的初始化static{}中。我们可以在解密so加载过程中执行解密函数,就能保证被加密函数执行前解密。执行时机可以选在linker执行.init_array时,也可以选在OnLoad函数中。当然,解密so一定要放在被解密so后加载。否则,搜索进程空间找不到被解密的so。

加密方法可以随意选择上个帖子中的一种,解密只需将原来的解密函数单独放在一个so文件即可。相信读者已经明白,这里就不啰嗦,见附件源码shelldemo。

三、  Native method Hook 简单实现
1.  解包添加hook.so实现
很容易知道,native 方法并不像so中的其他函数被直接被调用。而是通过注册并被间接调用的。在so加载和卸载过程中,Onload 和 Unload函数会被调用,类似于驱动的加载和卸载。Onload函数主要功能是调用RegisterMethod注册native函数;而Unload则相反。那么如果增加一个so文件,在Onload中调用UnregisterMethod函数,将当前绑定的函数注销,再调用RegisterMethod注册我们自己的函数,即实现简单的hook功能。相信读者已经懂得如何做,这里就不给出源码了。

这里存在着一个问题,UnregisterMethod会将clazz所有的函数都注销掉(Un-register all native methods associated with the class)。当一个类存在多个native函数时,这种方法显然是不可取的。我们不可能实现原so中的所有函数,且也达不到hook的某一或某些函数的目的。
我们知道,同一个native方法是可以被多次注册的。既然可以被多次注册,那么struct Method insns 字段绑定的是最后一次注册的函数。Hook的思路很简单了:调用RegisterMethod,替换原来的某一或某些native方法。相信读者已经懂得如何做,这里就不给出源码了。

2.  进程注入实现
既然可以hook native方法,绕过一些简单注册什么的,还是可以的,读者可以自行试试。但美中不足的是,现很多apk作了自校验,直接添加hook.so到原包中,添加smali 加载代码实现hook肯定不现实。在不动原包的情况下,我们只能通过进程注入来实现了。

网上有很多大大的注入源码,这里假设读者已经有源码并能正常注入进程(我这里使用古河大大的注入代码)。为了便于读者理解,我这里构建一个简单的apk。
附件 92020

Button调用native foo()函数,获取字符串并在TextView中显示。在demo.so中,foo函数为:static jstring foo(JNIEnv* env){
    return env -> NewStringUTF("Wait for hook!");
};

我们的目标是将foo函数hook,返回字符串:”Hooked! Oh yeah!”。可能读者已经想到,在hook_entry中调用findclass,然后直接注册函数即可。当我写好代码测试时,发现如下错误:
附件 92021

NoClassDefFoundError,初看以为类名写错了,复制demo.c的代码过来测试,还是同样的错误。仔细看还有[generic],翻看源码和各种谷歌,发现此错误其实可能不是类名没找到,而类加载器不对。可能读者会问,第一种实现并未出现异常。的确,那是因为so是通过loadLibrary加载的,而这里是通过注入实现的。loadLibrary 会自动找到合适的类加载器,而这里使用默认的类加载器bootclassloader加载,出现未找到的异常(不太了解jni机制的读者,可以参看老罗关于jni加载机制的帖子)。具体异常原因就是:调用findclass由于类加载器不对,出现异常并且未作异常处理而抛出的。

知道这个原因,具体实现就简单了,就在是findclass失败后,添加调用自己实现的findclass即可。主要代码:
extern "C" void HookNativeMethod(char *para){
  JNIEnv *env = NULL;
  jclass clazz = NULL;
  env = android::AndroidRuntime::getJNIEnv();
  if(env == NULL){
    __android_log_print(ANDROID_LOG_INFO, "INJECTED", "Get JNIEnv failed\n");
    goto _error;
  }
  clazz = android::AndroidRuntime::findClass(env, JNIREG_CLASS);
  if(clazz == NULL){
    __android_log_print(ANDROID_LOG_INFO, "INJECTED", "Find Class failed by BootClassLoader\n");
    if(env->ExceptionOccurred()){
          env->ExceptionDescribe();
          env->ExceptionClear();
    }
    clazz = myFindClass(env, JNIREG_CLASS);
    if(clazz == NULL)
    {
      __android_log_print(ANDROID_LOG_INFO, "INJECTED", "Find Class failed\n");
      goto _error;
    }
  }
  if (env->RegisterNatives(clazz, gMethods, sizeof(gMethods) / sizeof(gMethods[0])) < 0) {
    __android_log_print(ANDROID_LOG_INFO, "INJECTED", "Register Hook Method failed\n");
    goto _error;
  }
  return;
_error:
  __android_log_print(ANDROID_LOG_INFO, "INJECTED", "Hook Native Method failed\n");
}
具体实现见源码,这里就不贴了。
注入后的效果如下:
附件 92022

四、参考文献
http://blog.csdn.net/luoshengyang/article/details/8923483
后面发现,其实在这篇帖子中:
http://bbs.pediy.com/showthread.php?t=186054&highlight=%E6%B3%A8%E5%85%A5
也有findclass的实现
安卓源码: dalvik\vm\jni.c native.cpp jniinternal.h androidRuntime.cpp androidRuntime.h

附件:
附件 92023
附件 92024
附件 92025

上传的图像
文件类型: png p1.png (6.4 KB)
文件类型: jpg error1.jpg (13.9 KB)
文件类型: png p2.png (7.0 KB)
上传的附件
文件类型: zip Shelldemo.zip (2.55 MB)
文件类型: zip NativeMethodHook.zip (1.12 MB)
文件类型: pdf ndk hook.pdf (182.5 KB)

【【招聘】华为招聘安全工程师

$
0
0
热爱技术,并愿意在技术方向长期发展。如果您有一些安全方面的技能就更好。
岗位需求:
安全解决方案设计(架构师、系统工程师)、高级软件工程师。
在此很诚挚地邀请您参加我们的现场(深圳)面试,如有兴趣欢迎与我联系,或者您有其它同事或者朋友想来华为,也可向我推荐,谢谢。
其他条件:
1、工作经验:本科以上工作满5年(分配职位指标要求,请不要问为什么)
2、学位、学历、英语四级/六级证书齐全(英语四级证书有的话更好,没有的话不做强制要求)

【招聘】 北京中睿天下信息技术有限公司

$
0
0
替朋友发个招聘贴
如果觉得这个公司很陌生,那相信大家应该知道XCON,安全焦点吧
可以理解为这个公司跟XCON是一家的:D:,只是公司是新注册了一个


美工/UI设计师
岗位职责:
1.具备优秀的网站整体策划、设计能力,有丰富的网页设计及平面设计经验;
2.精通photoshop、ai、coreldraw、flash、dreamweaver 等软件;
3.负责网站UI设计,实时把握ui设计的流行趋势,提出崭新的创意策略;
4.充分理解产品设计需求,负责公司平台网站、手机软件产品的界面策划、操作流程和交互设计;
5.负责公司产品的视觉设计和制作,包括网站产品界面、客户端软件界面、图表设计、logo设计,注重细节的处理;
岗位要求:
1、有计算机安全企业,互联网企业工作经验
2、具有优秀的审美能力,独特的创意,有较强的平面设计和网页设计创意能力
3、富于团队合作精神,具有良好的协调,沟通能力

-----------------------------------------------------------------------

Linux c/c++ 开发工程师

岗位职责:
1、负责公司核心的产品的研发;
2、分布式系统的开发、升级、性能优化工作;
3、根据需求文档,编写项目概要设计、详细设计以及其他项目相关的设计文档;
4、独立完成所分模块的设计、开发、和测试工作;
5、参与新技术的调研;
技能要求:
1、2年及以上C/C++语言软件开发经验(Linux平台);
2、对开源软件有浓厚兴趣;
3、熟悉TCP/IP相关网络协议编程;
4、对Linux(如文件系统、处理器、内存管理)有深刻理解;
5、有安全网关、防火墙、路由器等网络产品开发经验者优先;
6、有责任感,良好的团队合作精神;
------------------------------------------------------------------------

C/C++ windows 软件工程师

岗位职责:
1、负责公司核心的产品的研发;
2、根据需求文档,编写项目概要设计、详细设计以及其他项目相关的设计文档;
3、独立完成所分模块的设计、开发、和测试工作;
4、参与新技术的调研;

技能要求
1 计算机或相关专业大专及以上学历
2 熟悉c/c++程序开发,熟悉Windows运行机制,两年以上开发经验
3 掌握windows平台下进程、线程、内存管理、消息机制等技术
4 熟悉面向对象思想,具备需求分析和系统设计能力、以及较强的逻辑分析和独立解决问题能力
5 熟悉汇编语言,熟练使用IDA,OD,WinDbg者优先
6 做事主动积极,有团队意识
-------------------------------------------------------------------------

windows 驱动工程师

岗位职责:
1、负责公司核心的产品的研发;
2、沙盒系统的开发、性能优化工作;
3、根据需求文档,编写项目概要设计、详细设计以及其他项目相关的设计文档;
4、独立完成所分模块的设计、开发、和测试工作;
5、参与新技术的调研;

技能要求:
1 计算机或相关专业大专及以上学历
2 研究过各种底层技术,如anti-rootkit、核心api的hook等
3 做过深层次的磁盘过滤驱动或文件系统过滤驱动开发或网络过滤驱动开发;
4 熟练使用各种调试工具和调试技术及手段,Debugger、Windbg、IDA、SoftICE,远程调试等
5 有较好的逆向功底;
6 有过杀毒软件开发或沙盒开发经验优先

----------------------------------------------------------------------------

安卓开发工程师

岗位职责:
1.负责产品模块设计、编码和维护;
2.根据需求文档,编写项目概要设计、详细设计以及其他项目相关的设计文档;
3.依据产品需求进行系统框架和核心模块的详细设计及编码;

岗位要求:
1、熟练掌握Android SDK相关技术,包括Native;
2、具有Android手机平台软件设计能力。
3、熟悉Android FrameWork
4、有Android平台逆向能力优先
5. 做事主动积极,有团队意识

----------------------------------------------------------------------------

岗位职责:
1.负责产品模块设计、编码和维护;
2.根据需求文档,编写项目概要设计、详细设计以及其他项目相关的设计文档;
3.依据产品需求进行系统框架和核心模块的详细设计及编码;
技能要求:
1、具有二年以上java软件实际开发工作经验;
2、熟悉swt,jpf等java客户端框架;
3、熟悉osgi和eclipse equinox框架;
4、熟悉C/C++语言优先;
5、有计算机安全相关经验优先;
6、熟悉网络安全、系统安全、应用安全优先;
7、有高并发应用开发和性能调优经验者优先;

【招聘】广州艾柯斯高薪招聘Andriod和IOS技术大牛

$
0
0
:cool:换换圈是广州艾柯斯网络科技有限公司旗下自主开发的一款免费的基于在校园物物交换和技能交换的过程中形成圈子的移动应用软件(APP)。
该软件基于校园实体店——艾晨斯咖啡作为线下据点,通过发行“艾特币”(虚拟货币)作为中间等价物,使得不能直接兑换物品的双方能够通过艾特币进行交换,支付艾特币的一方获得物品,而获得艾特币的一方除了可以用艾特币换购艾晨斯咖啡的产品,更能在后期开发的商城超市换购新商品或者在入驻的培训机构中得到更多的服务。让你的闲置物品焕发第二次价值,为你创造更多财富。
同理技能交换也是如此,换换圈促使拥有不同技能的用户互相学习,获得更多的技能,还能扩展用户的社交圈,让你在交换技能的过程中收获技能,收获感情!
Viewing all 9556 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>