2011ǯ08��09��

root ������ü�����б����� Android ���ץ�����ˡ

¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÅÐÏ¿

Android ü���� root ������桼���������Ƥ��ޤ���
�����γ�ȯ�Ը������ʰʳ��Ǥ� root ���¤�������뤿��θ����μ��ʤ��󶡤���Ƥ��ʤ��Τǡ�������ˡ��ʬ��õ������ˤ���ï�������󤷤�����ȥ졼������ˤ��褹�٤Ƥϼ�����Ǥ�Ǥ���櫓�Ǥ����������� root ���¤�ɬ�פȤ��륢�ץ�ϥޡ����åȤˤ⤢�줳��в�äƤ��ꡢ�Ĥޤ�Ϥ��η�˴ؤ�����������������Υȥ졼�ɥ��դ���­�Ǥ��ʤ����������������������Ȥ������ȤǤ��礦��

���ξ������Τ⤤��������̣�֤����ΤǤ������Ȥ����ǡ����Ρ�root ���¤����Ѥ��륢�ץ�פȤ�����ΤϤɤ���äƽ񤱤Ф����ΤǤ��礦��Google �����γ�ȯ�Ը��������ϸ����˵ڤФ�������¾�Υ꥽�����ˤ⺣�ΤȤ����ۤȤ�ɤ�������˴ؤ������ϸ�������ޤ��󡣤����Ǻ���ϡ��ºݤ˼긵�Υ��ץ�� root ���¤Ǥμ¹Ԥ��б��������ߤ��̤������������Υ��ϥ���Ҳ𤷤����Ȼפ��ޤ���


�ɤ�������Τ���Ф�������

�ޤ�����root ���¤����Ѥ��륢�ץ�פ��ɤΤ褦�ʷ��Τ�ΤǤ��뤫�����餫�ˤ���ɬ�פ�����ޤ��͡� �����Ǥ�����Ȥʤ�դ��Ĥ�������ǧ���ʤ��餽����������Ƥߤޤ���

�� ���� 1. Android ���ץ�� uid �ˤĤ���

���� Android ���ץ�� uid �ϡ������ü���إ��󥹥ȡ��뤷�������ǥ����ƥ�ˤ�꼫ưŪ�˳�����Ƥ��ޤ������� uid ��ü���ˤ����ƥ��ץꤴ�Ȥ˸�ͭ�Ǥ��ʢ��ˡ����Τ褦�ʤ����ߤǤ��뤿�� Android �Ǥϥ����ƥब������Ƥ� uid �ʳ��ǥ��ץ��¹Ԥ��뤳�ȤϤǤ�����root �����ߤ�ü���Ǥ��äƤ⥤�󥹥ȡ��뤺�ߤΥ��ץꥱ����������Τ� root ���¤Ǽ¹Ԥ��뤳�ȤϤǤ��ޤ���

�ʢ����㳰�Ȥ��ƥ��ץ곫ȯ���� AndroidManifest.xml �Ǥ� sharedUserId ����ˤ��տ�Ū��ʣ���μ���ץ�� uid ��ͭ���뤳�Ȥ��Ǥ��ޤ�

�� ���� 2. "su" ���ޥ�ɤ� "Superuser" ���ץ�ˤĤ���

��Superuser�� �Ϥ��ζڤǤμ¼�ɸ��Ȥ�������ͭ̾�ʥ��ץꥱ�������ʤΤǤ�¿����������¸�ΤǤ��礦�� ü���� root ���� Andorid �� Linux �Ķ��� owner=root �����֤��� "su" ���ޥ�ɤ� setuid �ӥåȤ�Ω�Ƥ뤳�ȤǼ¸����ޤ����� �����Ǥ� ChainsDD (Adam Shanks) ��ˤ�� su ���ޥ�ɤΥХ��ʥ��Ʊ����Ʊ��γ�ȯ���� Android ���ץ�Ǥ��� Superuser �ȥڥ���Ƴ�����뤳�Ȥ�����Ū�Ǥ��������ȹ礻�ˤ�ꡢ�桼���ϥ��ץꤴ�Ȥ� root ������Ϳ�β��ݤ�����Ū�����ꤹ�뤳�Ȥ���ǽ�Ȥʤ�ޤ���

root ���¤����Ѥ��륢�ץ��񤯤���ˤϡ����� ��su + Superuser�� ���ȹ礻���ɤΤ褦�˵�ǽ���Ƥ���Τ������Τ����ߤ��İ����Ƥ���ɬ�פ�����Ǥ��礦�����פ�ʲ��˼����ޤ���

su ¤È Superuser ¤Î½èÍý¤Îή¤ì

ChainsDD ��� su �ϡ������Υץ���������¹��׵�������ȡ����Υץ������� uid ��Ĵ�����׵ᤵ�줿���ޥ�ɥ饤��� uid �ξ�����Ȥ˽�ɤΥۥ磻�ȥꥹ�ȥǡ����١�����Ȳ񤹤롣��������쥳���ɤ�¸�ߤ���Ф��Υ쥳���ɤ� "allow", "deny" ��°���˱����ƸƤӸ�������׵����Ĥޤ��ϵ��ݤ��������쥳���ɤ��ʤ�����׵����켰�� action="com.noshufou.android.su.REQUEST" �Υ���ƥ�Ȥ��������ƥ����ƥ�إ֥����ɥ��㥹�Ȥ��롣
������Superuser �� Activity �Ȥ��Ƥμ����ʳ��˥֥����ɥ��㥹�ȥ쥷���ФȤ��Ƥμ����������Ƥ���嵭�֥����ɥ��㥹�Ȥ�ȯ�����˥����ƥ�ˤ�ꥭ�å�����롣�����ơ��������ץ�� su �¹Բ��ݤ� GUI �ǥ桼���˳�ǧ�����η�̤�ۥ磻�ȥꥹ�Ȥ���¸�ܥ桼���������ץ��������̿��� su ���ޥ��¦�������롢�Ȥ��������񤤤򤹤롣

�� �Ĥޤꡢ����������Τ���Ф褵�����Ǥ�

�ʾ������ˤ�ȤŤ���root ���¤����Ѥ��륢�ץ��ȯ������α�դ��٤�����󤲤Ƥߤޤ���

a) root ���¤Ǽ¹ԤǤ���Τϥ��ץ����ΤǤϤʤ���Android �� Linux �Ķ���� "su" ���ޥ�ɷ�ͳ����������ץ������Ǥ���

b) ���Τ��ᡢroot ���¤�ɬ�פʽ����ϥ��ץ����Τ˵��Ҥ���ΤǤϤʤ���Android �� Linux �Ķ��ˤ����Ƽ¹Բ�ǽ����Ω�����¹Է����˵��Ҥ���ɬ�פ�����

c) ���ץ����Τϡ�ɬ�פʾ��̤Ǿ嵭�μ¹Է����� "su" ���ޥ�ɷ�ͳ�Ǽ¹Ԥ��뤳�Ȥˤ�ä� root ���¤Ǥν����θ��̤�����

�嵭 a) �ϡ��������ץ꤬ root ���¤Ǥμ¹Ԥ˵����Τ� Linux �Υ����뤽�Τ�ΤǤ��ä��ꡢ���뤤��ɸ��Ū�ʥ��ޥ�ɤε�ǽ���ϰϤǼ��ޤ���ˤ� b) �ǿ��줿�̤μ¹Է�����ɬ�פʤ��Ȥ������Ȥ��̣���Ƥ��ޤ�������ˤ��ƤϤޤ�ŵ��Ū����ϥ����ߥʥ륨�ߥ�졼�����ץ�Ǥ��礦��

�嵭 b) �Ρּ¹Է����פϼ¹�ñ�̤Ȥ��Ƥϥ��ץ����Τ�����Ω����¸�ߤǤ����������ޤǤ�������Τ�ʸ̮�ΰ����Ǥ��뤿�ᥢ�ץ����Τ�ʪ��Ū�ˤ�ʬΥ������ɬ�פʾ��̤��ڤ�Ф��ƻ��ѤǤ���褦�˥꥽�������η��ǥ��ץ��������Ǥ������Ȥ������Ǥ��礦��

�嵭 c) �ϡ�uid !=root �οƥץ������ʥ��ץ����Ρˤ� uid = root �λҥץ�������su ��ͳ�Υץ������ˤν���Ŭ�ڤ˶�Ĵ������ɬ�פ����뤳�Ȥ��̣���ޤ���¿���ξ�硢��������ϡ��ҥץ����������㤤���¤�ư����οƥץ������Ǥ��륢�ץ�¦��ô�����Ȥˤʤ�Ǥ��礦��


�ɤΤ褦�˺��Ф�������

��ɸ�Ȥ���ץ������η�������Ǥۤ����餫�ˤʤ�ޤ������������̤�ͤ������Τ�ΤϤ�������ץ�ʤΤǤ��Ȥϥ��ץ���׷�˱����Ƥ����Ť���Ԥ��Ф褤�Ǥ��礦���ʲ���������Ԥ���ǻ��ͤˤʤꤽ���ʥݥ���Ȥ򤤤��Ĥ������Ƥ����ޤ���

�� su ���ޥ�ɤμ¹Ԥ˴ؤ��뤳��

���ץ��⤫�� su ���ޥ�ɤ�¹Ԥ���ˤ� java.lang.Runtime ���饹�� exec �᥽�å�����Ȥ��Ȥ褤�Ǥ��礦��

Process process = Runtime.getRuntime().exec(cmdstr);

su ���ޥ�ɤ�¹Ԥ���ݤˤϥѥ�᡼���λ�������դ�ɬ�פǤ���
-c ���ץ�����Ȥ��� "su -c <cmd> [args]" �����ΤǼ¹��оݤΥץ������Ȥ��ΰ�����ޤȤ�ƻ��ꤹ�뤳�Ȥ��Ǥ��ޤ��������η����׵��Ԥä���硢Superuser �� "<cmd> [args]" �ΰ켰���׵ᥳ�ޥ�ɾ���Ȥ��ƽ�ɤΥۥ磻�ȥꥹ�Ȥص�Ͽ���ޤ���

�Ĥޤꡢ<cmd> ���Ϥ� [args] �����Ƥ����Ѥξ�硢Superuser �Ϥ������ٿ������׵�Ȥ��ƥ桼���˼¹Բ��ݤγ�ǧ��Ԥ�������ˡ������׵����Ƥ򿷵��Υ쥳���ɤȤ��ƥۥ磻�ȥꥹ�Ȥ��ɲä���Ȥ������ȤǤ���

Superuser �����Ū�˻Ȥ�����ˤ�������������򤱤�٤��Ǥ������ޥ�ɥ饤��Ȥ��Ƥ� "su -c <cmd>" �ޤǤλ����α�ᡢ[args] �˳��������������ӥץ��������̿����Ǽ����Ϥ����Ȥ�˾�ޤ����Ǥ��礦�� �̤���ˡ�Ȥ��ơ����ץ����ʤ��� "su" ��¹Ԥ��� uid=root �Υ�����ץ�������ư�������� stdin ���ȥ꡼��˥��ץ꤫�����Υ��ޥ��ʸ�����񤭹���Ǽ¹Ԥ�����Ȥ���������⤢��ޤ�����Android �������ޥ륦�����ζ��Ҥ����礷�ĤĤ��븽���ˤ����Ƥϡ����줬û��Ū�ʤ�ΤǤ��ä��Ȥ��Ƥ⡢��� root ������ץ�������ư������ͤ� �����˺������륢�ץ���Ȥ߹���������򤱤�٤����⤷��ޤ���

�� ����Ω�����¹Է����פγ�ȯ�ˤĤ���

����˵��Ҥ��� su ���ޥ�ɷ�ͳ�Ǽ¹Ԥ��� ��Ω�����¹Է��� �� Android OS �� Linux �Ķ����Ŭ�ڤ�ư������ƤǤ���г�ȯ�������ϲ��Ǥ�褤�ΤǤ����������餯��äȤ��ڤdzμ¤ʤΤ� C ����ǽ����򵭽Ҥ� Android NDK ��Ȥäƥӥ�ɤ���Ȥ�����ˡ�Ǥ��礦�� NDK �ǥ�����ɥ���μ¹Է��������������ˡ�ˤĤ��Ƥϲ����ε����ʤɤ����ͤˤʤ�Ȼפ��ޤ���

DSAS��ȯ�Ԥ�������Android NDK �ǥͥ��ƥ��� CUI �ץ�������񤯡�

�� ����Ω�����¹Է����פΥ��ץ�ؤ������������ڤ�Ф���

NDK ���Ǻ�������������ɥ�����μ¹Է����� ���� �ΤȤ��ꥢ�ץ����Τ�������Ǥ�����ɬ�פʻ��˥��ץ�¦�����ڤ�Ф��ƻ��Ѥ���Ȥ������������褤�Ǥ��礦��

���ץ�ؤ������ߤϡ�Eclipse ����оݥ��ץ�Υץ��������ȥĥ꡼��� [res] - [raw] �ˡ������¹Է����ե������꥽�����ǡ����Ȥ��ƥ��ԡ����ڡ����Ȥ���Τ���ñ�Ǥ�������� apk �ե�����˼¹Է�������������ޤ���
apk ������ڤ�Ф��ˤϲ��������ɤ����Τ� android.content.Context �� getResources �᥽�åɤ�Ȥ��ޤ������Υ����ɤ�ޤॽ�����ե�����������ˤ���ޤ����ڤ�Ф����¹Է����ˤ�ɬ���¹Ե��Ĥ���Ϳ���ޤ���

OutputStream os = new FileOutputStream(strOutputFileName);
byte[] buf = new byte[1024];
InputStream is = mContext.getResources().openRawResource(nResourceId);
int len = 0;
while ((len = is.read(buf)) != -1) {
    os.write(buf, 0, len);
}
is.close();
os.close();

�ʤ�����raw�ץǡ����Ȥ��� apk ����������꥽�����ե�����Υǥե���Ȥν������ ��/data/data/[�ѥå�����̾]/files�� �Ȥ����ǥ��쥯�ȥ�Ǥ������Υǥ��쥯�ȥ�Υѥ��ϥ��ץ��⤫�鼡�Υ����ɤǼ������뤳�Ȥ��Ǥ��ޤ���
[context.]getFilesDir().getAbsolutePath() + File.separator
su ���ޥ�ɤؼ¹Է����Υե�ѥ����Ϥ��ݤʤɤˤ��Υ����ɤ�Ȥ����Ȥˤʤ�Ǥ��礦��

�� �ץ��������̿��ˤĤ���

su ���ޥ�ɷ�ͳ�ǤҤȤ��ӵ�ư�����ץ��������������ץ�λҥץ������ǤϤ����ΤοƤȤϰۤʤ궯��� root ���¤�ư��Ƥ��ޤ�������Ǥ����̤ʻ��𤬤ʤ��¤�ϥ桼�����󥿡��ե����������Ǥ�ޤᡢ�ץ���������ΤΥ���ȥ�����Ϥ����ޤǤ�ƥץ������Ǥ��륢�ץ�¦��ô�����Ȥˤʤ�Ǥ��礦��

���Ȥ��лҶ��Ǥ��� root �ץ�������Ǥ�������������ľ��Ū�ʤ�Τǡ����ٸƤӽФ����餽�ν�λ���ԤĤ����Ǥ褤�褦�����ƤǤ���Х��ץ�¦�ϻҥץ������β�ư������ƻ뤹������ǻ�­���Ǥ��礦�� ��������¿���ξ�祷�ʥꥪ�Ϥ�ä�ʣ���ǡ������餯����Ǥ⥢�ץ�ϻҥץ�������λ�����뤿��λؼ�������ɬ�פ�����Ǥ��礦����Ƭ�˽񤤤��긵�Υ��ץ�ξ��⤽���Ǥ�����

��äȤ��ڤʹ�ޤ���ˡ�ϻҥץ������ؤΥ����ʥ������Ǥ�������ǰ�ʤ����� root �Υץ��������� root �Υץ�������Ŭ�ڤ˥����ʥ�����뤳�ȤϤǤ��ޤ���͡�����ʤ餳���Ǥϥץ��������̿��˲���Ȥ��Τ��褤������Ʊν�ȤΤ��Ȥ�Ǥ�����Ȥʤꡢ���Υ������Ǥμ��Ѿ�����������ݤ����Ǥⰷ���פ������Ǥ� UNIX �ɥᥤ�󥽥��åȤ�Ȥ��Τ��������������Ȥ����ä�����夭�ޤ�����
���ץ꤫��ҥץ�����¦�˻ؼ������뤳�Ȥ���Ū�ʤΤǡ��ޤ��ҥץ�����¦�˥����е�ǽ�� C ����Ǽ����������˥��ץ�¦�˥��饤����ȵ�ǽ��������褦�Ȥ����Ȥ����� Java �Ǥ� UNIX �ɥᥤ�󥽥��åȤ����ݡ��Ȥ���Ƥ��ʤ����Ȥ��Τ�ޤ���������ϥץ�åȥե������¸���Ӥ�������߷פ˴�Ť���ΤǤ��礦�� ��������Android SDK ���ȼ���ĥ�� UNIX �ɥᥤ�󥽥��åȤ��б����Ƥ��ޤ����ճ��Ȥ��Υ���ץ륳���ɤ���������ʤ��Τǥ��饤����ȤΥ�������򼨤��ޤ������㳰����������Ƥ��ޤ���

import android.net.LocalSocket;
import android.net.LocalSocketAddress;
         ��
public int SendUnixDomainSocketMessage(String sockpath, String msg) {
  LocalSocket lsock = new LocalSocket();
  LocalSocketAddress endpoint =
    new LocalSocketAddress(sockpath,
        LocalSocketAddress.Namespace.FILESYSTEM);
  lsock.connect(endpoint);
  if (lsock != null && lsock.isConnected()) {
    OutputStream out = lsock.getOutputStream();
    byte [] bytemsg = msg.getBytes();
    out.write(bytemsg);
    out.flush();
    lsock.shutdownOutput();
    lsock.close();
  }
  return 0;
}

�� root �����ߴĶ���Ƚ��ˤĤ���

���Ȥ����줬 root ������ü���Ǥʤ���Хᥤ��ε�ǽ��̤����ʤ����ץ�Ǥ��ä��Ȥ��Ƥ⡢̵����ü���Ķ��Ǽ¹Ԥ����ݤ˰�̣�����Υ��顼��ȯ������Ȥ��ä����֤��򤱤�٤��Ǥ��礦�� �ޤ������ץ�ˤ�äƤ�ü���� root ������Ƥ��������ε�ǽ�����Ѳ�ǽ�Ȥ��������Ǥʤ���Ф��ε�ǽ��̵��������Ȥ��ä�������ɬ�פˤʤ���⤢��Ǥ��礦�� ���Τ���ˤϸ��ߤ�ü���Ķ��� root �����ߤǤ��뤫�����Ǥʤ�����Ƚ���Ԥ�ɬ�פ�����ޤ��͡�

�ºݤˤϤ���Ϥʤ��ʤ����ο�������Ǥ�������˽�ʬ�ǤϤʤ���Τΰ�����μ������Τ�����ˡ�Ȥ��ơ���Superuser �����󥹥ȡ��뤵��Ƥ��뤫�ݤ���Ĵ�٤�פȤ�����������󤲤��ޤ������ꤵ�줿�ѥå�����̾���餽�Υ��ץ꤬���󥹥ȡ��뤺�ߤ������Ǥʤ����򿿵��ͤ��֤���������򼨤��ޤ��� Superuser �Υѥå�����̾�Ǥ��� "com.noshufou.android.su" ���Ϥ��Х��󥹥ȡ����̵ͭ���狼�롢�Ȥ����櫓�Ǥ��͡�

import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
         ��
public boolean AppIsInstalled(String PackageName) {
  PackageManager pm = mContext.getPackageManager();
  try {
    ApplicationInfo ai = pm.getApplicationInfo(PackageName, 0);
  } catch (NameNotFoundException e) {
    return false;
  }
  return true;
}

(tanabe)
klab_gijutsu2 at 21:00��Comments(4)��TrackBack(0)��Android | win

�ȥ�å��Хå�URL

���ε����ؤΥ�����

1. Posted by dayflower   2011ǯ08��10�� 10:58
�Ǹ��root���ѴĶ���Ƚ��ˤĤ��ƤǤ���
�³��Τʤ�"su -v"�������¹Ԥ��ƳΤ����Ȥ��������⤽�����������Ȥ��Ƥ���ߤ����Ǥ���
�������ץ��������̿���Ȥ������ȥۥ磻�ȥꥹ�ȹ��ܤ��̤ˤʤäƤ��ޤ��ޤ��͡�

�������ܤλ��ȼԤ�ü���Ǥ�
"com.noshufou.android.su"���֥�å��ꥹ�Ȥ˺ܤäƤ���
�ѥå�����̾���Ѥ����н褷�Ƥ���桼���⤤�ޤ���
�־�˽�ʬ�ǤϤʤ���Τΰ�����μ������Τ���פȤ��񤭤ˤʤäƤ���Τ�
��¸�Τ���Ȥϻפ��ޤ�����
���Ǥˤ������������⤢��Ȥ������Ȥǡ�
2. Posted by tanabe   2011ǯ08��10�� 12:06
dayflower ���󡢥����Ȥ򤢤꤬�Ȥ��������ޤ���
����Ŧ���̤�ͥåȾ�ε����ˤ� "su -v" ��Ȥ���ˡ�⻶�������ΤǤ�����-v ��������¸�Ǥ��뤳�Ȥ����ˤʤäƤ��ޤ������������� ChainsDD �Ǥ� su �Ǥ� stdout �˥С������������Ϥ��륪�ץ����Ȥ��Ƽ�������Ƥ��ޤ������⤷ Superuser �Ȥ�̵�ط����̤μ����� su �����֤���Ƥ������Ϥɤ��Ǥ��礦�����ξ�硢���ޥ�ɼ¹Ԥ��Ԥ��뤳�ȼ��Τ˥ꥹ�����ʤ��Ȥϸ����ڤ�ʤ��ΤǤ���͡�
�ʤ����Ƽ������ҤȤĵ󤲤�ȡ�Android SDK �˴ޤޤ�� Android ���ߥ�졼���� Linux �Ķ��ˤϺǽ餫�� su ���ޥ�ɤ����֤���Ƥ��ޤ��������� su �� -v �Ĥ��Ǽ¹Ԥ���� -v ��̵�뤵�쥪�ץ����ʤ��� su ��Ʊ����ư�Ȥʤ�ޤ���

�����ǡ����ε����Ǥ� ChainsDD �� su + Superuser �����֤��줿 root �����ߴĶ���ҤȤޤ��������åȤȤ������ꤷ�Ƥ��ꡢSuperuser �ȶ�Ĵ���뤿��ΥΥ��ϥ��ˤ⿨��Ƥ��ޤ������Τ��ᡢ��˰����Ȥϸ¤�ʤ����ޥ�ɤλ����Ȥ�����ˡ�ǤϤʤ���Superuser �Υ��󥹥ȡ���̵ͭ��Ƚ���Ԥ���ˡ�˸��ڤ��Ƥ���櫓�Ǥ�������ϡ��������ijμ¤˲�褹�뤳�Ȥ��񤷤�����ΤҤȤĤ��Ȼפ��ޤ���
3. Posted by dayflower   2011ǯ08��10�� 13:11
�����Ȥ����ޤ���θ�������Ƥ��ä��ΤǤ��͡�
���餤�����ޤ�����

�ꥹ���Ѥ��뤫��������Ȥ뤫�ޤ��ˡְ������ijμ¤˲�褹�뤳�Ȥ��񤷤�������Ǥ��͡�
4. Posted by tanabe   2011ǯ08��10�� 13:21
���ä�����̤���Ȼפ��ޤ������긵���ɤ���ˡ�ʤ��۵����줿�ޤˤϤ��Ҥ����󲼤����������Ȥ򤢤꤬�Ȥ��������ޤ�����

���ε����˥����Ȥ���

̾��:
URL:
  ����òµ­²ï¿½: ɾ��: ��    ��
 
 
 
Blog�⸡��
�ǿ�����
Archives
���Υ֥����ˤĤ���
DSAS�Ȥϡ�KLab �����ۤ����Ѥ��Ƥ��륳��ƥ�ĥ����ӥ��Ѥ�Linux�١����Υ���ե�Ǥ�������5����Υǡ������󥿤ˤƹ��ۤ������Ѥ��Ƥ��ޤ������桹��DSAS����Ȥ��䤹�����������ˡ������Ƥ����ϤDZ��ѤǤ��뤳�Ȥ��ܻؤ��ơ��������ɤ˶Ф���Ǥ��ޤ���
���Υ֥����Ǥϡ������ DSAS �ǻȤäƤ��뵻�ѤξҲ�䡢�¸����Ƥߤ���̤���𡢥ȥ�֥�˴������ޤ줿���ηи��̤ʤɡ���������������������򿥤�ޤ��ƾҲ𤷤Ƥ��������Ȼפ��ޤ���
�ǿ�������
<%==comments[n].author%>
<% } %>